1 package de.lathanda.eos.geo.gui;
3 import de.lathanda.eos.base.MutableColor;
4 import de.lathanda.eos.base.Picture2D;
5 import de.lathanda.eos.base.math.Point;
6 import de.lathanda.eos.base.util.GuiToolkit;
7 import de.lathanda.eos.geo.Window;
8 import de.lathanda.eos.geo.gui.event.CursorListener;
9 import de.lathanda.eos.geo.gui.event.FigureListener;
11 import java.awt.Dimension;
12 import java.awt.Graphics;
13 import java.awt.Graphics2D;
14 import java.awt.event.ComponentEvent;
15 import java.awt.event.ComponentListener;
16 import java.awt.event.MouseEvent;
17 import java.awt.event.MouseListener;
18 import java.awt.event.MouseMotionListener;
19 import java.awt.geom.AffineTransform;
20 import java.util.LinkedList;
21 import javax.swing.JPanel;
30 private static final long serialVersionUID = -5101516605708249038L;
33 private final Window window;
35 private int prefHeight;
36 private int prefWidth;
45 addMouseMotionListener(vml);
46 addMouseListener(vml);
52 super.paintComponent(g);
53 AffineTransform af = ((Graphics2D)g).getTransform();
57 ((Graphics2D)g).setTransform(af);
65 private void drawSetting() {
71 return new Dimension(prefWidth, prefHeight);
75 if (scale < 10000000) {
83 if (scale > 0.00000001) {
102 cursorMulticaster.add(cl);
105 cursorMulticaster.remove(cl);
121 void setHeightMM(
double height) {
125 void setWidthMM(
double width) {
128 double getHeightMM() {
132 double getWidthMM() {
135 void setGridWidth(
double gridwidth) {
140 double getGridWidth() {
144 void setGridVisible(
boolean b) {
148 boolean getGridVisible() {
164 if ((e.getModifiersEx() & MouseEvent.BUTTON3_DOWN_MASK) != 0) {
165 moveView(x - e.getX(), y - e.getY());
173 cursorMulticaster.fireCursorMoved(
183 if ((e.getModifiersEx() & MouseEvent.BUTTON3_DOWN_MASK) != 0) {
187 if ((e.getModifiersEx() & MouseEvent.BUTTON1_DOWN_MASK) != 0) {
188 cursorMulticaster.fireCursorDown(gmm.
pointFromPixel(e.getX(), e.getY()));
194 if (e.getButton() == MouseEvent.BUTTON1) {
195 cursorMulticaster.fireCursorUp(gmm.
pointFromPixel(e.getX(), e.getY()));
206 private final LinkedList<CursorListener> cursorListener;
208 cursorListener =
new LinkedList<>();
211 cursorListener.add(cl);
214 cursorListener.remove(cl);
216 void fireCursorMoved(
Point p) {
217 cursorListener.forEach((cl) -> {
221 void fireCursorDown(Point p) {
222 cursorListener.forEach((cl) -> {
226 void fireCursorUp(Point p) {
227 cursorListener.forEach((cl) -> {
236 gmm.
setSize(getWidth(), getHeight());
237 prefHeight = getWidth();
238 prefWidth = getHeight();
double pixel2mm(int pixel)
void setGridColor(MutableColor color)
void setGridWidth(double gridwidth)
final void setSize(int width, int height)
void setGridVisible(boolean b)
Point pointFromPixel(int x, int y)
void setScale(double scale)
MutableColor getGridColor()
void drawCoordinateSystem()
void setGraphics(Graphics2D g)
void drag(int dx, int dy)
void setCenter(double x, double y)
void addFigureListener(FigureListener gol)
void componentHidden(ComponentEvent e)
void componentMoved(ComponentEvent e)
void componentShown(ComponentEvent e)
void componentResized(ComponentEvent e)
void mouseEntered(MouseEvent e)
void mouseMoved(MouseEvent e)
void mouseReleased(MouseEvent e)
void mouseExited(MouseEvent e)
void mouseDragged(MouseEvent e)
void mouseClicked(MouseEvent e)
void mousePressed(MouseEvent e)
void removeCursorListener(CursorListener cl)
void paintComponent(Graphics g)
Dimension getPreferredSize()
double pixel2mm(int pixel)
void addCursorListener(CursorListener cl)
void setZoom(double zoom)
void moveView(int dx, int dy)
void setCenter(double x, double y)
void cursorMoved(Point p)