View Javadoc

1   /* OpenLogViewer
2    *
3    * Copyright 2011
4    *
5    * This file is part of the OpenLogViewer project.
6    *
7    * OpenLogViewer software is free software: you can redistribute it and/or modify
8    * it under the terms of the GNU General Public License as published by
9    * the Free Software Foundation, either version 3 of the License, or
10   * (at your option) any later version.
11   *
12   * OpenLogViewer software is distributed in the hope that it will be useful,
13   * but WITHOUT ANY WARRANTY; without even the implied warranty of
14   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15   * GNU General Public License for more details.
16   *
17   * You should have received a copy of the GNU General Public License
18   * along with any OpenLogViewer software.  If not, see http://www.gnu.org/licenses/
19   *
20   * I ask that if you make any changes to this file you fork the code on github.com!
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.ImageIcon;
32  import javax.swing.JButton;
33  import javax.swing.JPanel;
34  
35  public class PlayBarPanel extends JPanel {
36  	private static final long serialVersionUID = 1L;
37  
38  	private static final int PLAY_BAR_PREFERRED_WIDTH = 888;
39  	private static final int PLAY_BAR_PREFERRED_HEIGHT = 40;
40  
41  	private JButton zoomInButton;
42  	private JButton zoomResetButton;
43  	private JButton zoomOutButton;
44  	private JButton playButton;
45  	private JButton slowDownButton;
46  	private JButton stopButton;
47  	private JButton ejectButton;
48  	private JButton fastForwardButton;
49  	private JButton pauseButton;
50  
51  	/**
52  	 * Default JPanel constructor initializing the playbar buttons
53  	 */
54  	public PlayBarPanel() {
55  		super();
56  		zoomInButton = new JButton();
57  		zoomResetButton = new JButton();
58  		zoomOutButton = new JButton();
59  		slowDownButton = new JButton();
60  		playButton = new JButton();
61  		pauseButton = new JButton();
62  		stopButton = new JButton();
63  		fastForwardButton = new JButton();
64  		ejectButton = new JButton();
65  		initComponents();
66  	}
67  
68  	/**
69  	 * Method to control and setup the components of the playbar
70  	 */
71  	private void initComponents() {
72  		this.setName("this");
73  		this.setPreferredSize(new Dimension(PLAY_BAR_PREFERRED_WIDTH, PLAY_BAR_PREFERRED_HEIGHT));
74  		this.setLayout(new FlowLayout(FlowLayout.RIGHT, 0, 0));
75  
76  		zoomInButton.setIcon(new ImageIcon(getClass().getResource("Playbar_+.png"))); // NOI18N
77  		zoomInButton.setAlignmentY(0.0F);
78  		zoomInButton.setBorder(null);
79  		zoomInButton.setBorderPainted(false);
80  		zoomInButton.setContentAreaFilled(false);
81  		zoomInButton.setName("zoomInButton");
82  		zoomInButton.setRequestFocusEnabled(false);
83  
84  		zoomInButton.addMouseListener(new MouseAdapter() {
85  			@Override
86  			public void mouseReleased(final MouseEvent e) {
87  				zoomInButtonMouseReleased(e);
88  			}
89  		});
90  		this.add(zoomInButton);
91  
92  		zoomResetButton.setIcon(new ImageIcon(getClass().getResource("Playbar_o.png")));
93  		zoomResetButton.setAlignmentY(0.0F);
94  		zoomResetButton.setBorder(null);
95  		zoomResetButton.setBorderPainted(false);
96  		zoomResetButton.setContentAreaFilled(false);
97  		zoomResetButton.setName("zoomResetButton");
98  		zoomResetButton.setRequestFocusEnabled(false);
99  		zoomResetButton.addMouseListener(new MouseAdapter() {
100 			@Override
101 			public void mouseReleased(final MouseEvent e) {
102 				zoomResetButtonMouseReleased(e);
103 			}
104 		});
105 		this.add(zoomResetButton);
106 
107 		zoomOutButton.setIcon(new ImageIcon(getClass().getResource("Playbar_-.png"))); // NOI18N
108 		zoomOutButton.setAlignmentY(0.0F);
109 		zoomOutButton.setBorder(null);
110 		zoomOutButton.setBorderPainted(false);
111 		zoomOutButton.setContentAreaFilled(false);
112 		zoomOutButton.setName("zoomOutButton");
113 		zoomOutButton.setRequestFocusEnabled(false);
114 		zoomOutButton.addMouseListener(new MouseAdapter() {
115 			@Override
116 			public void mouseReleased(final MouseEvent e) {
117 				zoomOutButtonMouseReleased(e);
118 			}
119 		});
120 		this.add(zoomOutButton);
121 
122 		slowDownButton.setIcon(new ImageIcon(getClass().getResource("Playbar_01.png"))); // NOI18N
123 		slowDownButton.setAlignmentY(0.0F);
124 		slowDownButton.setBorder(null);
125 		slowDownButton.setBorderPainted(false);
126 		slowDownButton.setContentAreaFilled(false);
127 		slowDownButton.setName("slowDownButton");
128 		slowDownButton.setRequestFocusEnabled(false);
129 		slowDownButton.addMouseListener(new MouseAdapter() {
130 			@Override
131 			public void mouseReleased(final MouseEvent e) {
132 				reverseButtonMouseReleased(e);
133 			}
134 		});
135 		this.add(slowDownButton);
136 
137 		playButton.setIcon(new ImageIcon(getClass().getResource("Playbar_02.png"))); // NOI18N
138 		playButton.setAlignmentY(0.0F);
139 		playButton.setBorder(null);
140 		playButton.setBorderPainted(false);
141 		playButton.setContentAreaFilled(false);
142 		playButton.setName("playButton");
143 		playButton.setRequestFocusEnabled(false);
144 		playButton.addMouseListener(new MouseAdapter() {
145 			@Override
146 			public void mouseReleased(final MouseEvent e) {
147 				playButtonMouseReleased(e);
148 			}
149 		});
150 		this.add(playButton);
151 
152 		pauseButton.setIcon(new ImageIcon(getClass().getResource("Playbar_03.png"))); // NOI18N
153 		pauseButton.setAlignmentY(0.0F);
154 		pauseButton.setBorder(null);
155 		pauseButton.setBorderPainted(false);
156 		pauseButton.setContentAreaFilled(false);
157 		pauseButton.setName("pauseButton");
158 		pauseButton.setRequestFocusEnabled(false);
159 		pauseButton.addMouseListener(new MouseAdapter() {
160 			@Override
161 			public void mouseReleased(final MouseEvent e) {
162 				pauseButtonMouseReleased(e);
163 			}
164 		});
165 		this.add(pauseButton);
166 
167 		stopButton.setIcon(new ImageIcon(getClass().getResource("Playbar_04.png"))); // NOI18N
168 		stopButton.setAlignmentY(0.0F);
169 		stopButton.setBorder(null);
170 		stopButton.setBorderPainted(false);
171 		stopButton.setContentAreaFilled(false);
172 		stopButton.setName("stopButton"); // NOI18N
173 		stopButton.setRequestFocusEnabled(false);
174 		stopButton.addMouseListener(new MouseAdapter() {
175 			@Override
176 			public void mouseReleased(final MouseEvent e) {
177 				stopButtonMouseReleased(e);
178 			}
179 		});
180 		this.add(stopButton);
181 
182 		fastForwardButton.setIcon(new ImageIcon(getClass().getResource("Playbar_05.png"))); // NOI18N
183 		fastForwardButton.setAlignmentY(0.0F);
184 		fastForwardButton.setBorder(null);
185 		fastForwardButton.setBorderPainted(false);
186 		fastForwardButton.setContentAreaFilled(false);
187 		fastForwardButton.setName("fastForwardButton"); // NOI18N
188 		fastForwardButton.setRequestFocusEnabled(false);
189 		fastForwardButton.addMouseListener(new MouseAdapter() {
190 			@Override
191 			public void mouseReleased(final MouseEvent e) {
192 				fastForwardButtonMouseReleased(e);
193 			}
194 		});
195 		this.add(fastForwardButton);
196 
197 		ejectButton.setIcon(new ImageIcon(getClass().getResource("Playbar_06.png"))); // NOI18N
198 		ejectButton.setAlignmentY(0.0F);
199 		ejectButton.setBorder(null);
200 		ejectButton.setBorderPainted(false);
201 		ejectButton.setContentAreaFilled(false);
202 		ejectButton.setName("ejectButton"); // NOI18N
203 		ejectButton.setRequestFocusEnabled(false);
204 		ejectButton.addMouseListener(new MouseAdapter() {
205 			@Override
206 			public void mouseReleased(final MouseEvent e) {
207 				ejectButtonMouseReleased(e);
208 			}
209 		});
210 		this.add(ejectButton);
211 	}
212 
213 	/**
214 	 * Modify the state of the PlayableLog zoom in 1 pixel up to 512 pixels
215 	 * @param evt
216 	 */
217 	private void zoomInButtonMouseReleased(final MouseEvent e) {
218 		OpenLogViewer.getInstance().getEntireGraphingPanel().zoomInCoarse();
219 	}
220 
221 	/**
222 	 * Modify the state of the PlayableLog zoom in 1 pixel down to -1024 pixels
223 	 * @param evt
224 	 */
225 	private void zoomOutButtonMouseReleased(final MouseEvent e) {
226 		OpenLogViewer.getInstance().getEntireGraphingPanel().zoomOutCoarse();
227 	}
228 
229 	/**
230 	 * Modify the state of the PlayableLog zoom to exactly 1
231 	 * @param evt
232 	 */
233 	private void zoomResetButtonMouseReleased(final MouseEvent e) {
234 		final int zoom = OpenLogViewer.getInstance().getEntireGraphingPanel().getZoom();
235 		final boolean zoomedOut = OpenLogViewer.getInstance().getEntireGraphingPanel().isZoomedOutBeyondOneToOne();
236 		if (zoomedOut) {
237 			for (int i = zoom; i > 1; i--) {
238 				OpenLogViewer.getInstance().getEntireGraphingPanel().zoomIn();
239 			}
240 		} else {
241 			for (int i = zoom; i > 1; i--) {
242 				OpenLogViewer.getInstance().getEntireGraphingPanel().zoomOut();
243 			}
244 		}
245 	}
246 
247 	/**
248 	 * modifys the state of the PlayableLog to begin playing
249 	 * @param evt
250 	 */
251 	private void playButtonMouseReleased(final MouseEvent e) {
252 		OpenLogViewer.getInstance().getEntireGraphingPanel().play();
253 		OpenLogViewer.getInstance().getEntireGraphingPanel();
254 	}
255 
256 	/**
257 	 * Modifys the state of the PlayableLog to pause
258 	 * @param evt
259 	 */
260 	private void pauseButtonMouseReleased(final MouseEvent e) {
261 		OpenLogViewer.getInstance().getEntireGraphingPanel().pause();
262 	}
263 
264 	/**
265 	 * Modifys the state of the PlayableLog to stop and reset to the beginning
266 	 * @param evt
267 	 */
268 	private void stopButtonMouseReleased(final MouseEvent e) {
269 		OpenLogViewer.getInstance().getEntireGraphingPanel().stop();
270 	}
271 
272 	/**
273 	 * Speeds up the play back speed of the PlayableLog
274 	 * @param evt
275 	 */
276 	private void fastForwardButtonMouseReleased(final MouseEvent e) {
277 		OpenLogViewer.getInstance().getEntireGraphingPanel().fastForward();
278 	}
279 
280 	/**
281 	 * Slows down the play back speed of the Playable Log
282 	 * @param evt
283 	 */
284 	private void reverseButtonMouseReleased(final MouseEvent e) {
285 		OpenLogViewer.getInstance().getEntireGraphingPanel().slowDown();
286 	}
287 
288 	/**
289 	 * Un-Implimented currently, future plans are to have this as an alternate to open a new log
290 	 * @param evt
291 	 */
292 	private void ejectButtonMouseReleased(final MouseEvent e) {
293 		OpenLogViewer.getInstance().getEntireGraphingPanel().eject();
294 	}
295 }