/* * 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 path, Graphics2D g2){ from = path.getFirst(); to = null; path.forEach(point-> { to = point; line.setLine(from,to); g2.draw(line); from = to; }); } }