EOS 2  1.1.0
Einfache Objektbasierte Sprache
ViewFrame.java
gehe zur Dokumentation dieser Datei
1 package de.lathanda.eos.geo.gui;
2 
3 import de.lathanda.eos.base.MutableColor;
4 import de.lathanda.eos.base.math.Point;
5 import de.lathanda.eos.base.util.GuiToolkit;
6 import de.lathanda.eos.geo.Window;
7 import de.lathanda.eos.geo.gui.event.CursorListener;
8 
9 import java.awt.BorderLayout;
10 import java.awt.Rectangle;
11 import java.awt.Toolkit;
12 import java.awt.event.KeyEvent;
13 import java.awt.event.KeyListener;
14 import java.awt.event.WindowEvent;
15 import java.awt.event.WindowListener;
16 import java.text.MessageFormat;
17 import javax.swing.JButton;
18 import javax.swing.JFrame;
19 import javax.swing.JLabel;
20 import javax.swing.JToolBar;
21 import static de.lathanda.eos.geo.icons.Icons.*;
22 import static de.lathanda.eos.base.icons.Icons.*;
23 import static de.lathanda.eos.geo.text.Text.VIEW;
32 public class ViewFrame extends JFrame implements WindowListener {
33  private static final long serialVersionUID = 8808554555627848478L;
34  private ViewPanel view;
35  private final JToolBar toolbar;
36  private final JButton zoomIn;
37  private final JButton zoomOut;
38  private final JButton zoom100;
39  private final JLabel status;
40 
41  public ViewFrame(Window window) {
42  super(VIEW.getString("View.Title"));
43  this.setIconImage(LOGO);
44  view = new ViewPanel(window);
45  toolbar = new JToolBar();
46  zoomIn = GuiToolkit.createButton(DOCUMENT_ZOOM_IN, null, ae -> view.zoomIn());
47  zoomOut = GuiToolkit.createButton(DOCUMENT_VIEW, null, ae -> view.zoom100());
48  zoom100 = GuiToolkit.createButton(DOCUMENT_ZOOM_OUT, null, ae -> view.zoomOut());
49  status = GuiToolkit.createLabel(" ");
50 
51  setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
52  addWindowListener(this);
53  setLayout(new BorderLayout());
54 
55  view.setFocusable(false);
56 
57  toolbar.setFloatable(false);
58  toolbar.add(zoomIn);
59  toolbar.add(zoom100);
60  toolbar.add(zoomOut);
61 
62  getContentPane().add(view, BorderLayout.CENTER);
63  getContentPane().add(toolbar, BorderLayout.NORTH);
64  getContentPane().add(status, BorderLayout.SOUTH);
65 
66  addKeyListener(this.new ViewKeyListener());
67  view.addCursorListener(this. new ViewListener());
68 
69  pack();
70  this.setLocation(
71  Toolkit.getDefaultToolkit().getScreenSize().width - this.getWidth(),
72  0
73  );
74  }
75 
76  public void setGridColor(MutableColor color) {
77  view.setGridColor(color);
78  }
79 
81  return view.getGridColor();
82  }
83 
84  public void setBackgroundColor(MutableColor color) {
85  view.setBackground(color.getColor());
86  }
87 
89  return new MutableColor(view.getBackground());
90  }
91 
92  public void setHeightMM(double height) {
93  view.setHeightMM(height);
94  pack();
95  }
96 
97  public void setWidthMM(double width) {
98  view.setWidthMM(width);
99  pack();
100  }
101  public double getHeightMM() {
102  return view.getHeightMM();
103  }
104 
105  public double getWidthMM() {
106  return view.getWidthMM();
107  }
108  public void setTop(double top) {
109  Rectangle r = getBounds();
110  r.y = view.mm2pixel(top);
111  this.setBounds(r);
112  }
113 
114  public double getTop() {
115  Rectangle r = getBounds();
116  return view.pixel2mm(r.y);
117  }
118 
119  public void setLeft(double left) {
120  Rectangle r = getBounds();
121  r.x = view.mm2pixel(left);
122  this.setBounds(r);
123  }
124 
125  public double getLeft() {
126  Rectangle r = getBounds();
127  return view.pixel2mm(r.x); }
128 
129  public void setGridWidth(double gridwidth) {
130  view.setGridWidth(gridwidth);
131  }
132 
133  public double getGridWidth() {
134  return view.getGridWidth();
135  }
136 
137  public void move(double dx, double dy) {
138  Rectangle r = getBounds();
139  r.x += view.mm2pixel(dx);
140  r.y += view.mm2pixel(dy);
141  this.setBounds(r);
142  }
143  public void setCenter(double x, double y) {
144  view.setCenter(x, y);
145  }
146  public void setZoom(double zoom) {
147  view.setZoom(zoom);
148  }
149  public void setGridVisible(boolean b) {
150  view.setGridVisible(b);
151  }
152  public boolean getGridVisible() {
153  return view.getGridVisible();
154  }
156  view.addCursorListener(cl);
157  }
158 
159  private class ViewKeyListener implements KeyListener {
160 
161  @Override
162  public void keyTyped(KeyEvent e) {
163  }
164 
165  @Override
166  public void keyPressed(KeyEvent e) {
167  switch (e.getKeyChar()) {
168  case '+':
169  view.zoomIn();
170  break;
171  case '-':
172  view.zoomOut();
173  break;
174  case '=':
175  view.zoom100();
176  break;
177  default:
178  break;
179  }
180  }
181 
182  @Override
183  public void keyReleased(KeyEvent e) {
184  }
185  }
186  private class ViewListener implements CursorListener {
187  Point p;
188  @Override
189  public void cursorMoved(Point p) {
190  this.p = p;
191  update();
192  }
193 
194  private void update() {
195  MessageFormat msg;
196  if (p != null) {
197  msg = new MessageFormat(VIEW.getString("View.Status.Cursor1"));
198  } else {
199  msg = new MessageFormat(VIEW.getString("View.Status.Cursor2"));
200  }
201  status.setText(msg.format(new Object[]{p.getX(), p.getY()}));
202  }
203 
204  @Override
205  public void cursorUp(Point p) {
206  this.p = p;
207  update();
208  }
209 
210  @Override
211  public void cursorDown(Point p) {
212  this.p = p;
213  update();
214  }
215  }
216  @Override
217  public void windowActivated(WindowEvent e) {}
218 
219  @Override
220  public void windowClosed(WindowEvent e) {}
221 
222  @Override
223  public void windowClosing(WindowEvent e) {
224  setState(ICONIFIED);
225  }
226 
227  @Override
228  public void windowDeactivated(WindowEvent e) {}
229 
230  @Override
231  public void windowDeiconified(WindowEvent e) {}
232 
233  @Override
234  public void windowIconified(WindowEvent e) {}
235 
236  @Override
237  public void windowOpened(WindowEvent e) {}
238 
239 }
240 
static JLabel createLabel(String text)
static JButton createButton(Image image, String tooltip, ActionListener action)
void setGridColor(MutableColor color)
Definition: ViewFrame.java:76
void addCursorListener(CursorListener cl)
Definition: ViewFrame.java:155
void windowDeactivated(WindowEvent e)
Definition: ViewFrame.java:228
void windowClosing(WindowEvent e)
Definition: ViewFrame.java:223
void windowClosed(WindowEvent e)
Definition: ViewFrame.java:220
void setGridWidth(double gridwidth)
Definition: ViewFrame.java:129
void setWidthMM(double width)
Definition: ViewFrame.java:97
void setCenter(double x, double y)
Definition: ViewFrame.java:143
void windowIconified(WindowEvent e)
Definition: ViewFrame.java:234
void windowDeiconified(WindowEvent e)
Definition: ViewFrame.java:231
void move(double dx, double dy)
Definition: ViewFrame.java:137
void setHeightMM(double height)
Definition: ViewFrame.java:92
void setBackgroundColor(MutableColor color)
Definition: ViewFrame.java:84
void windowOpened(WindowEvent e)
Definition: ViewFrame.java:237
void windowActivated(WindowEvent e)
Definition: ViewFrame.java:217
void addCursorListener(CursorListener cl)
Definition: ViewPanel.java:101
void setCenter(double x, double y)
Definition: ViewPanel.java:97
Impressum