123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- /*
- * To change this license header, choose License Headers in Project Properties.
- * To change this template file, choose Tools | Templates
- * and open the template in the editor.
- */
- package mvcgrafik.view;
-
- import java.awt.Color;
- import java.awt.Dimension;
- import java.awt.Graphics;
- import java.awt.Graphics2D;
- import java.awt.Point;
- import java.awt.geom.Line2D;
- import java.awt.geom.Rectangle2D;
- import java.awt.print.PageFormat;
- import java.awt.print.Printable;
- import java.awt.print.PrinterException;
- import java.awt.print.PrinterJob;
- 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 mvcgrafik.model.GrafikModel;
- import mvcgrafik.logger.OhmLogger;
-
- /**
- *
- * @author hd, chris
- */
- public class GrafikView extends JComponent implements Printable
- {
- private final static Dimension EINS = new Dimension(1, 1);
- private final static Logger lg = Logger.getLogger("mvcGrafik");
- private Rectangle2D.Float pixel;
- private GrafikModel model;
- private Point old_punkt = null;
-
- public GrafikView()
- {
- pixel = new Rectangle2D.Float();
- this.setBackground(Color.WHITE);
- }
-
- public void setModel(GrafikModel model)
- {
- this.model = model;
- }
-
- public void drawLine(Point p, Point p_old)
- {
- Graphics2D g2 = (Graphics2D) this.getGraphics();
- Line2D.Double line = new Line2D.Double(p.getX(),p.getY(),p_old.getX(),p_old.getY());
- // pixel.setFrame(p, EINS);
- g2.draw(line);
- g2.dispose(); // VERY, VERY WICHTIG
- }
-
- @Override
- public void paintComponent(Graphics g)
- {
- lg.info("repaint");
- if (model == null)
- {
- lg.severe("keine Referenz auf Model vorhanden");
- return;
- }
- super.paintComponent(g);
- Graphics2D g2 = (Graphics2D) g;
-
- model.getFigures().forEach(figure -> {
- old_punkt = null;
- figure.getPunkte().forEach(punkt -> {
- // pixel.setFrame(punkt, EINS);
- // g2.draw(pixel);
- if(old_punkt != null)
- {
- drawLine(punkt, old_punkt);
- }
- old_punkt = punkt;
- });
- });
- }
-
- public void doPrint()
- {
- HashPrintRequestAttributeSet printSet =
- new HashPrintRequestAttributeSet();
- printSet.add(DialogTypeSelection.NATIVE);
- PrinterJob pj = PrinterJob.getPrinterJob();
- pj.setPrintable(this);
- // Druckdialog
- if (pj.printDialog(printSet))
- {
- try
- {
- pj.print(printSet);
- }
- catch (Exception ex)
- {
- JOptionPane.showMessageDialog(this, ex.toString());
- }
- }
- }
-
- @Override
- public int print(Graphics gp, PageFormat pf, int pageIndex) throws PrinterException
- {
- Graphics2D g2p = (Graphics2D) gp;
- if (pageIndex == 1)
- {
- g2p.translate(pf.getImageableX(), pf.getImageableY());
- g2p.scale(pf.getImageableWidth()/pf.getWidth(),
- pf.getImageableHeight() / pf.getHeight());
- super.print(g2p);
- return Printable.PAGE_EXISTS;
- }
- else
- {
- return Printable.NO_SUCH_PAGE;
- }
- }
-
- }
|