113 lines
2.6 KiB
Java
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.GrafikModel;
|
|
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 GrafikModel model;
|
|
|
|
private Point from = null;
|
|
private Point to = null;
|
|
|
|
public GrafikView()
|
|
{
|
|
pixel = new Rectangle2D.Float();
|
|
line = new Line2D.Float();
|
|
}
|
|
|
|
public void setModel(GrafikModel 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;
|
|
|
|
});
|
|
}
|
|
}
|