Files
Aufgabe11_GrafChat/src/ChatProgramm/view/GrafikView.java
T
ahren e8f0fd53d6 angepasst an Lehners UML,
Transmitterinterface raus, nur noch ein Controller und ein Chatmodel
mit GrafikDaten anstatt GrafikModel
das einzige was noch nicht so ist wie in seinem UML ist, dass das 
Chatmodel kein Subscriber ist sondern immernoch der Transmitter
2023-12-20 16:00:43 +01:00

113 lines
2.6 KiB
Java

/*
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
*/
package ChatProgramm.view;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.geom.Rectangle2D;
import java.awt.geom.Line2D;
import java.awt.print.PageFormat;
import java.awt.print.Printable;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Logger;
import javax.print.attribute.HashPrintRequestAttributeSet;
import javax.print.attribute.standard.DialogTypeSelection;
import javax.swing.JComponent;
import javax.swing.JOptionPane;
import ChatProgramm.model.GrafikDaten;
import ChatProgramm.util.OhmLogger;
/**
*
* @author le
*/
public class GrafikView extends JComponent
{
private static Logger lg = OhmLogger.getLogger();
private static Dimension EINS = new Dimension(1, 1); // Dimension ist eine Klasse die width udn height hält
private Rectangle2D.Float pixel;
private Line2D.Float line;
private GrafikDaten model;
private Point from = null;
private Point to = null;
public GrafikView()
{
pixel = new Rectangle2D.Float();
line = new Line2D.Float();
}
public void setModel(GrafikDaten model)
{
this.model = model;
}
/**
* Zeichnet den aktuellen Pfad (solange die maus gedrückt gehalten wird)
* @param p -> Der aktuelle punkt als x-y-Koordinate
*/
public void drawFigur()
{
Graphics2D g2 = (Graphics2D)this.getGraphics(); // gefährlich!
drawPath(model.getFiguren().getLast().getPunkte(),g2);
g2.dispose(); //SEEEEHHHHRRRR WICHTIG!!!!!!!
}
public void drawPoint()
{
Graphics2D g2 = (Graphics2D)this.getGraphics(); // gefährlich!
drawPath(model.getPunkte(),g2);
g2.dispose(); //SEEEEHHHHRRRR WICHTIG!!!!!!!
}
/**
* Hier werden alle Pfade aus dem model neu gezeichnet
* Jedes mal wenn die Maus los gelassen wird, wird dder aktuelle Pfad gespeichert
* @param g
*/
@Override
public void paintComponent(Graphics g)
{
if (model == null) return;
super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;
model.getFiguren().forEach(figuren->
{
drawPath(figuren.getPunkte(),g2);
});
}
public void drawPath(List<Point> path, Graphics2D g2){
from = path.getFirst();
to = null;
path.forEach(point->
{
to = point;
line.setLine(from,to);
g2.draw(line);
from = to;
});
}
}