1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 package org.diyefi.openlogviewer;
25
26 import java.awt.Dimension;
27 import java.awt.FlowLayout;
28 import java.awt.event.MouseAdapter;
29 import java.awt.event.MouseEvent;
30
31 import javax.swing.Box;
32 import javax.swing.Icon;
33 import javax.swing.ImageIcon;
34 import javax.swing.JButton;
35 import javax.swing.JPanel;
36
37 public class NavBarPanel extends JPanel {
38 private static final long serialVersionUID = 1L;
39
40 private static final int PREFERRED_WIDTH = 800;
41 private static final int PREFERRED_HEIGHT = 18;
42 private static final int SPACER_WIDTH = 16;
43
44 private static final String BUTTON_DIR = "buttons/";
45
46 private static final Icon PLAY_ICON = new ImageIcon(NavBarPanel.class.getResource(BUTTON_DIR + Images.PLAY));
47 private static final Icon PAUSE_ICON = new ImageIcon(NavBarPanel.class.getResource(BUTTON_DIR + Images.PAUSE));
48
49 private final JButton playAndPause = new JButton();
50
51 public NavBarPanel() {
52 setName(NavBarPanel.class.getSimpleName());
53 setPreferredSize(new Dimension(PREFERRED_WIDTH, PREFERRED_HEIGHT));
54 setLayout(new FlowLayout(FlowLayout.RIGHT, 0, 0));
55
56 setupZoomButtons();
57 add(Box.createHorizontalStrut(SPACER_WIDTH));
58 setupPlayButtons();
59 add(Box.createHorizontalStrut(SPACER_WIDTH));
60 setupNavigationButtons();
61 add(Box.createHorizontalStrut(SPACER_WIDTH));
62 setupFileButtons();
63 }
64
65 private void setupZoomButtons() {
66 final JButton zoomIn = new JButton();
67 zoomIn.addMouseListener(new MouseAdapter() {
68 @Override
69 public void mouseReleased(final MouseEvent e) {
70 if (zoomIn.contains(e.getPoint())) {
71 zoomInButtonMouseReleased();
72 }
73 }
74 });
75 setupAndAddButton(zoomIn, Images.ZOOM_IN);
76
77 final JButton zoomResetRatio = new JButton();
78 zoomResetRatio.addMouseListener(new MouseAdapter() {
79 @Override
80 public void mouseReleased(final MouseEvent e) {
81 if (zoomResetRatio.contains(e.getPoint())) {
82 zoomResetRatioButtonMouseReleased();
83 }
84 }
85 });
86 setupAndAddButton(zoomResetRatio, Images.ZOOM_RESET_RATIO);
87
88 final JButton zoomResetFit = new JButton();
89 zoomResetFit.addMouseListener(new MouseAdapter() {
90 @Override
91 public void mouseReleased(final MouseEvent e) {
92 if (zoomResetFit.contains(e.getPoint())) {
93 zoomResetFitButtonMouseReleased();
94 }
95 }
96 });
97 setupAndAddButton(zoomResetFit, Images.ZOOM_RESET_FIT);
98
99 final JButton zoomOut = new JButton();
100 zoomOut.addMouseListener(new MouseAdapter() {
101 @Override
102 public void mouseReleased(final MouseEvent e) {
103 if (zoomOut.contains(e.getPoint())) {
104 zoomOutButtonMouseReleased();
105 }
106 }
107 });
108 setupAndAddButton(zoomOut, Images.ZOOM_OUT);
109 }
110
111 private void setupPlayButtons() {
112 final JButton slowDown = new JButton();
113 slowDown.addMouseListener(new MouseAdapter() {
114 @Override
115 public void mouseReleased(final MouseEvent e) {
116 if (slowDown.contains(e.getPoint())) {
117 slowDownButtonMouseReleased();
118 }
119 }
120 });
121 setupAndAddButton(slowDown, Images.SLOW_DOWN);
122
123 final JButton resetPlaySpeed = new JButton();
124 resetPlaySpeed.addMouseListener(new MouseAdapter() {
125 @Override
126 public void mouseReleased(final MouseEvent e) {
127 if (resetPlaySpeed.contains(e.getPoint())) {
128 resetPlaySpeedButtonMouseReleased();
129 }
130 }
131 });
132 setupAndAddButton(resetPlaySpeed, Images.RESET_SPEED);
133
134 playAndPause.addMouseListener(new MouseAdapter() {
135 @Override
136 public void mouseReleased(final MouseEvent e) {
137 if (playAndPause.contains(e.getPoint())) {
138 pausePlayButtonMouseReleased();
139 }
140 }
141 });
142 setupAndAddButton(playAndPause, Images.PLAY);
143
144 final JButton speedUp = new JButton();
145 speedUp.addMouseListener(new MouseAdapter() {
146 @Override
147 public void mouseReleased(final MouseEvent e) {
148 if (speedUp.contains(e.getPoint())) {
149 speedUpButtonMouseReleased();
150 }
151 }
152 });
153 setupAndAddButton(speedUp, Images.SPEED_UP);
154 }
155
156 private void setupNavigationButtons() {
157 final JButton moveToBeginning = new JButton();
158 moveToBeginning.addMouseListener(new MouseAdapter() {
159 @Override
160 public void mouseReleased(final MouseEvent e) {
161 if (moveToBeginning.contains(e.getPoint())) {
162 moveToBeginningButtonMouseReleased();
163 }
164 }
165 });
166 setupAndAddButton(moveToBeginning, Images.MOVE_TO_BEGINNING);
167
168 final JButton moveBackwardCoarse = new JButton();
169 moveBackwardCoarse.addMouseListener(new MouseAdapter() {
170 @Override
171 public void mouseReleased(final MouseEvent e) {
172 if (moveBackwardCoarse.contains(e.getPoint())) {
173 moveBackwardCoarseButtonMouseReleased();
174 }
175 }
176 });
177 setupAndAddButton(moveBackwardCoarse, Images.MOVE_BACKWARD_COARSE);
178
179 final JButton moveBackward = new JButton();
180 moveBackward.addMouseListener(new MouseAdapter() {
181 @Override
182 public void mouseReleased(final MouseEvent e) {
183 if (moveBackward.contains(e.getPoint())) {
184 moveBackwardButtonMouseReleased();
185 }
186 }
187 });
188 setupAndAddButton(moveBackward, Images.MOVE_BACKWARD);
189
190 final JButton moveToCenter = new JButton();
191 moveToCenter.addMouseListener(new MouseAdapter() {
192 @Override
193 public void mouseReleased(final MouseEvent e) {
194 if (moveToCenter.contains(e.getPoint())) {
195 moveToCenterButtonMouseReleased();
196 }
197 }
198 });
199 setupAndAddButton(moveToCenter, Images.MOVE_TO_CENTER);
200
201 final JButton moveForward = new JButton();
202 moveForward.addMouseListener(new MouseAdapter() {
203 @Override
204 public void mouseReleased(final MouseEvent e) {
205 if (moveForward.contains(e.getPoint())) {
206 moveForwardButtonMouseReleased();
207 }
208 }
209 });
210 setupAndAddButton(moveForward, Images.MOVE_FORWARD);
211
212 final JButton moveForwardCoarse = new JButton();
213 moveForwardCoarse.addMouseListener(new MouseAdapter() {
214 @Override
215 public void mouseReleased(final MouseEvent e) {
216 if (moveForwardCoarse.contains(e.getPoint())) {
217 moveForwardCoarseButtonMouseReleased();
218 }
219 }
220 });
221 setupAndAddButton(moveForwardCoarse, Images.MOVE_FORWARD_COARSE);
222
223 final JButton moveToEnd = new JButton();
224 moveToEnd.addMouseListener(new MouseAdapter() {
225 @Override
226 public void mouseReleased(final MouseEvent e) {
227 if (moveToEnd.contains(e.getPoint())) {
228 moveToEndButtonMouseReleased();
229 }
230 }
231 });
232 setupAndAddButton(moveToEnd, Images.MOVE_TO_END);
233 }
234
235 private void setupFileButtons() {
236 final JButton openFile = new JButton();
237 openFile.addMouseListener(new MouseAdapter() {
238 @Override
239 public void mouseReleased(final MouseEvent e) {
240 if (openFile.contains(e.getPoint())) {
241 openButtonMouseReleased();
242 }
243 }
244 });
245 setupAndAddButton(openFile, Images.OPEN_FILE);
246
247 final JButton openLast = new JButton();
248 openLast.addMouseListener(new MouseAdapter() {
249 @Override
250 public void mouseReleased(final MouseEvent e) {
251 if (openLast.contains(e.getPoint())) {
252 openLastButtonMouseReleased();
253 }
254 }
255 });
256 setupAndAddButton(openLast, Images.OPEN_LAST);
257 }
258
259 private void setupAndAddButton(final JButton button, final String iconFileName) {
260 button.setIcon(new ImageIcon(getClass().getResource(BUTTON_DIR + iconFileName)));
261 button.setBorder(null);
262 button.setRequestFocusEnabled(false);
263 add(button);
264 }
265
266 public final void updatePausePlayButton() {
267 final boolean playing = OpenLogViewer.getInstance().getEntireGraphingPanel().isPlaying();
268 if (playing) {
269 playAndPause.setIcon(PAUSE_ICON);
270 } else {
271 playAndPause.setIcon(PLAY_ICON);
272 }
273 playAndPause.setBorder(null);
274 }
275
276
277
278
279
280 private void zoomInButtonMouseReleased() {
281 OpenLogViewer.getInstance().getEntireGraphingPanel().zoomInCoarse();
282 }
283
284
285
286
287
288 private void zoomOutButtonMouseReleased() {
289 OpenLogViewer.getInstance().getEntireGraphingPanel().zoomOutCoarse();
290 }
291
292
293
294
295
296 private void zoomResetRatioButtonMouseReleased() {
297 OpenLogViewer.getInstance().getEntireGraphingPanel().zoomResetRatio();
298 }
299
300
301
302
303
304 private void zoomResetFitButtonMouseReleased() {
305 OpenLogViewer.getInstance().getEntireGraphingPanel().zoomGraphToFit();
306 }
307
308
309
310
311
312 private void slowDownButtonMouseReleased() {
313 OpenLogViewer.getInstance().getEntireGraphingPanel().slowDown();
314 }
315
316
317
318
319
320 private void resetPlaySpeedButtonMouseReleased() {
321 OpenLogViewer.getInstance().getEntireGraphingPanel().resetPlaySpeed();
322 }
323
324
325
326
327
328 private void pausePlayButtonMouseReleased() {
329 final boolean playing = OpenLogViewer.getInstance().getEntireGraphingPanel().isPlaying();
330 if (playing) {
331 OpenLogViewer.getInstance().getEntireGraphingPanel().pause();
332 } else {
333 OpenLogViewer.getInstance().getEntireGraphingPanel().play();
334 }
335 }
336
337
338
339
340
341 private void speedUpButtonMouseReleased() {
342 OpenLogViewer.getInstance().getEntireGraphingPanel().speedUp();
343 }
344
345
346
347
348
349 private void moveToBeginningButtonMouseReleased() {
350 OpenLogViewer.getInstance().getEntireGraphingPanel().moveToBeginning();
351 }
352
353
354
355
356
357 private void moveBackwardCoarseButtonMouseReleased() {
358 OpenLogViewer.getInstance().getEntireGraphingPanel().moveBackwardCoarse();
359 }
360
361
362
363
364
365 private void moveBackwardButtonMouseReleased() {
366 OpenLogViewer.getInstance().getEntireGraphingPanel().moveBackward();
367 }
368
369
370
371
372
373 private void moveToCenterButtonMouseReleased() {
374 OpenLogViewer.getInstance().getEntireGraphingPanel().centerGraphPosition();
375 }
376
377
378
379
380
381 private void moveForwardButtonMouseReleased() {
382 OpenLogViewer.getInstance().getEntireGraphingPanel().moveForward();
383 }
384
385
386
387
388
389 private void moveForwardCoarseButtonMouseReleased() {
390 OpenLogViewer.getInstance().getEntireGraphingPanel().moveForwardCoarse();
391 }
392
393
394
395
396
397 private void moveToEndButtonMouseReleased() {
398 OpenLogViewer.getInstance().getEntireGraphingPanel().moveToEnd();
399 }
400
401
402
403
404
405 private void openButtonMouseReleased() {
406 OpenLogViewer.getInstance().exitFullScreen();
407 OpenLogViewer.getInstance().openChosenFile();
408 }
409
410
411
412
413
414 private void openLastButtonMouseReleased() {
415 OpenLogViewer.getInstance().exitFullScreen();
416 OpenLogViewer.getInstance().openLastFile();
417 }
418 }