Class |
Line # |
Actions |
|||
---|---|---|---|---|---|
GDesktop | 48 | 130 | 61 |
1 | /* | |
2 | * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$) | |
3 | * Copyright (C) $$Year-Rel$$ The Jalview Authors | |
4 | * | |
5 | * This file is part of Jalview. | |
6 | * | |
7 | * Jalview is free software: you can redistribute it and/or | |
8 | * modify it under the terms of the GNU General Public License | |
9 | * as published by the Free Software Foundation, either version 3 | |
10 | * of the License, or (at your option) any later version. | |
11 | * | |
12 | * Jalview is distributed in the hope that it will be useful, but | |
13 | * WITHOUT ANY WARRANTY; without even the implied warranty | |
14 | * of MERCHANTABILITY or FITNESS FOR A PARTICULAR | |
15 | * PURPOSE. See the GNU General Public License for more details. | |
16 | * | |
17 | * You should have received a copy of the GNU General Public License | |
18 | * along with Jalview. If not, see <http://www.gnu.org/licenses/>. | |
19 | * The Jalview Authors are detailed in the 'AUTHORS' file. | |
20 | */ | |
21 | package jalview.jbgui; | |
22 | ||
23 | import java.awt.FlowLayout; | |
24 | import java.awt.event.ActionEvent; | |
25 | import java.awt.event.ActionListener; | |
26 | ||
27 | import javax.swing.JCheckBoxMenuItem; | |
28 | import javax.swing.JFrame; | |
29 | import javax.swing.JMenu; | |
30 | import javax.swing.JMenuBar; | |
31 | import javax.swing.JMenuItem; | |
32 | ||
33 | import jalview.api.AlignmentViewPanel; | |
34 | import jalview.bin.Cache; | |
35 | import jalview.gui.APQHandlers; | |
36 | import jalview.gui.Desktop; | |
37 | import jalview.io.FileFormatException; | |
38 | import jalview.util.MessageManager; | |
39 | import jalview.util.Platform; | |
40 | ||
41 | /** | |
42 | * DOCUMENT ME! | |
43 | * | |
44 | * @author $author$ | |
45 | * @version $Revision$ | |
46 | */ | |
47 | @SuppressWarnings("serial") | |
48 | public class GDesktop extends JFrame | |
49 | { | |
50 | ||
51 | protected static JMenu windowMenu = null; | |
52 | ||
53 | JMenuBar desktopMenubar = new JMenuBar(); | |
54 | ||
55 | JMenu FileMenu = new JMenu(); | |
56 | ||
57 | JMenu HelpMenu = new JMenu(); | |
58 | ||
59 | JMenuItem inputLocalFileMenuItem = new JMenuItem(); | |
60 | ||
61 | JMenuItem inputURLMenuItem = new JMenuItem(); | |
62 | ||
63 | JMenuItem inputTextboxMenuItem = new JMenuItem(); | |
64 | ||
65 | JMenuItem quit = new JMenuItem(); | |
66 | ||
67 | JMenuItem aboutMenuItem = new JMenuItem(); | |
68 | ||
69 | JMenuItem documentationMenuItem = new JMenuItem(); | |
70 | ||
71 | FlowLayout flowLayout1 = new FlowLayout(); | |
72 | ||
73 | protected JMenu toolsMenu = new JMenu(); | |
74 | ||
75 | JMenuItem preferences = new JMenuItem(); | |
76 | ||
77 | JMenuItem saveState = new JMenuItem(); | |
78 | ||
79 | JMenuItem saveAsState = new JMenuItem(); | |
80 | ||
81 | JMenuItem loadState = new JMenuItem(); | |
82 | ||
83 | JMenu inputMenu = new JMenu(); | |
84 | ||
85 | JMenuItem inputSequence = new JMenuItem(); | |
86 | ||
87 | JMenuItem closeAll = new JMenuItem(); | |
88 | ||
89 | JMenuItem raiseRelated = new JMenuItem(); | |
90 | ||
91 | JMenuItem minimizeAssociated = new JMenuItem(); | |
92 | ||
93 | protected JCheckBoxMenuItem showMemusage = new JCheckBoxMenuItem(); | |
94 | ||
95 | JMenuItem garbageCollect = new JMenuItem(); | |
96 | ||
97 | protected JMenuItem groovyShell; | |
98 | ||
99 | protected JCheckBoxMenuItem experimentalFeatures; | |
100 | ||
101 | protected JCheckBoxMenuItem showConsole = new JCheckBoxMenuItem(); | |
102 | ||
103 | protected JCheckBoxMenuItem showNews = new JCheckBoxMenuItem(); | |
104 | ||
105 | protected JMenuItem snapShotWindow = new JMenuItem(); | |
106 | ||
107 | /** | |
108 | * Creates a new GDesktop object. | |
109 | */ | |
110 | 75 | public GDesktop() |
111 | { | |
112 | 75 | super(); |
113 | ||
114 | // instantiate here to set same context (e.g. font) as other menus | |
115 | 75 | if (windowMenu == null) |
116 | { | |
117 | 10 | windowMenu = new JMenu(); |
118 | } | |
119 | ||
120 | 75 | try |
121 | { | |
122 | 75 | jbInit(); |
123 | 75 | this.setJMenuBar(desktopMenubar); |
124 | } catch (Exception e) | |
125 | { | |
126 | 0 | e.printStackTrace(); |
127 | } | |
128 | ||
129 | 75 | if (Platform.allowMnemonics()) |
130 | { | |
131 | // BH was !Platform.isAMacAndNotJS()) i.e. "JS or not Mac" | |
132 | // but here we want just not a Mac, period, right? | |
133 | 75 | FileMenu.setMnemonic('F'); |
134 | 75 | inputLocalFileMenuItem.setMnemonic('L'); |
135 | 75 | inputURLMenuItem.setMnemonic('U'); |
136 | 75 | inputTextboxMenuItem.setMnemonic('C'); |
137 | 75 | quit.setMnemonic('Q'); |
138 | 75 | saveState.setMnemonic('S'); |
139 | 75 | loadState.setMnemonic('L'); |
140 | 75 | inputMenu.setMnemonic('I'); |
141 | } | |
142 | } | |
143 | ||
144 | /** | |
145 | * DOCUMENT ME! | |
146 | * | |
147 | * @throws Exception | |
148 | * DOCUMENT ME! | |
149 | */ | |
150 | 75 | private void jbInit() throws Exception |
151 | { | |
152 | /** | |
153 | * APQHandlers sets handlers for About, Preferences and Quit actions | |
154 | * peculiar to macOS's application menu. APQHandlers will check to see if a | |
155 | * handler is supported before setting it. | |
156 | */ | |
157 | 75 | try |
158 | { | |
159 | 75 | APQHandlers.setAPQHandlers((Desktop) this); |
160 | } catch (Exception e) | |
161 | { | |
162 | 0 | jalview.bin.Console.outPrintln("Cannot set APQHandlers"); |
163 | // e.printStackTrace(); | |
164 | } catch (Throwable t) | |
165 | { | |
166 | 0 | jalview.bin.Console |
167 | .warn("Error setting APQHandlers: " + t.toString()); | |
168 | 0 | jalview.bin.Console.trace(Cache.getStackTraceString(t)); |
169 | } | |
170 | ||
171 | 75 | setName("jalview-desktop"); |
172 | 75 | FileMenu.setText(MessageManager.getString("action.file")); |
173 | 75 | HelpMenu.setText(MessageManager.getString("action.help")); |
174 | 75 | inputLocalFileMenuItem |
175 | .setText(MessageManager.getString("label.load_tree_from_file")); | |
176 | 75 | inputLocalFileMenuItem |
177 | .setAccelerator( | |
178 | javax.swing.KeyStroke | |
179 | .getKeyStroke(java.awt.event.KeyEvent.VK_O, | |
180 | jalview.util.ShortcutKeyMaskExWrapper | |
181 | .getMenuShortcutKeyMaskEx(), | |
182 | false)); | |
183 | 75 | inputLocalFileMenuItem |
184 | .addActionListener(new java.awt.event.ActionListener() | |
185 | { | |
186 | 0 | @Override |
187 | public void actionPerformed(ActionEvent e) | |
188 | { | |
189 | 0 | inputLocalFileMenuItem_actionPerformed(null); |
190 | } | |
191 | }); | |
192 | 75 | inputURLMenuItem.setText(MessageManager.getString("label.from_url")); |
193 | 75 | inputURLMenuItem.addActionListener(new java.awt.event.ActionListener() |
194 | { | |
195 | 0 | @Override |
196 | public void actionPerformed(ActionEvent e) | |
197 | { | |
198 | 0 | try |
199 | { | |
200 | 0 | inputURLMenuItem_actionPerformed(null); |
201 | } catch (FileFormatException e1) | |
202 | { | |
203 | 0 | jalview.bin.Console |
204 | .errPrintln("Error loading from URL: " + e1.getMessage()); | |
205 | } | |
206 | } | |
207 | }); | |
208 | 75 | inputTextboxMenuItem |
209 | .setText(MessageManager.getString("label.from_textbox")); | |
210 | 75 | inputTextboxMenuItem |
211 | .addActionListener(new java.awt.event.ActionListener() | |
212 | { | |
213 | 0 | @Override |
214 | public void actionPerformed(ActionEvent e) | |
215 | { | |
216 | 0 | inputTextboxMenuItem_actionPerformed(null); |
217 | } | |
218 | }); | |
219 | 75 | quit.setText(MessageManager.getString("action.quit")); |
220 | 75 | quit.addActionListener(new java.awt.event.ActionListener() |
221 | { | |
222 | 0 | @Override |
223 | public void actionPerformed(ActionEvent e) | |
224 | { | |
225 | 0 | if (Desktop.instance != null) |
226 | 0 | Desktop.instance.desktopQuit(); |
227 | } | |
228 | }); | |
229 | 75 | aboutMenuItem.setText(MessageManager.getString("label.about")); |
230 | 75 | aboutMenuItem.addActionListener(new java.awt.event.ActionListener() |
231 | { | |
232 | 0 | @Override |
233 | public void actionPerformed(ActionEvent e) | |
234 | { | |
235 | 0 | aboutMenuItem_actionPerformed(e); |
236 | } | |
237 | }); | |
238 | 75 | documentationMenuItem |
239 | .setText(MessageManager.getString("label.documentation")); | |
240 | 75 | documentationMenuItem.setAccelerator(javax.swing.KeyStroke |
241 | .getKeyStroke(java.awt.event.KeyEvent.VK_F1, 0, false)); | |
242 | 75 | documentationMenuItem |
243 | .addActionListener(new java.awt.event.ActionListener() | |
244 | { | |
245 | 0 | @Override |
246 | public void actionPerformed(ActionEvent e) | |
247 | { | |
248 | 0 | documentationMenuItem_actionPerformed(); |
249 | } | |
250 | }); | |
251 | 75 | this.getContentPane().setLayout(flowLayout1); |
252 | 75 | windowMenu.setText(MessageManager.getString("label.window")); |
253 | 75 | preferences.setText(MessageManager.getString("label.preferences")); |
254 | 75 | preferences.addActionListener(new ActionListener() |
255 | { | |
256 | 0 | @Override |
257 | public void actionPerformed(ActionEvent e) | |
258 | { | |
259 | 0 | preferences_actionPerformed(e); |
260 | } | |
261 | }); | |
262 | 75 | toolsMenu.setText(MessageManager.getString("label.tools")); |
263 | 75 | saveState.setText(MessageManager.getString("action.save_project")); |
264 | 75 | saveState.addActionListener(new ActionListener() |
265 | { | |
266 | 0 | @Override |
267 | public void actionPerformed(ActionEvent e) | |
268 | { | |
269 | 0 | saveState_actionPerformed(); |
270 | } | |
271 | }); | |
272 | 75 | saveAsState.setText(MessageManager.getString("action.save_project_as")); |
273 | 75 | saveAsState.addActionListener(new ActionListener() |
274 | { | |
275 | 0 | @Override |
276 | public void actionPerformed(ActionEvent e) | |
277 | { | |
278 | 0 | saveAsState_actionPerformed(e); |
279 | } | |
280 | }); | |
281 | 75 | loadState.setText(MessageManager.getString("action.load_project")); |
282 | 75 | loadState.addActionListener(new ActionListener() |
283 | { | |
284 | 0 | @Override |
285 | public void actionPerformed(ActionEvent e) | |
286 | { | |
287 | 0 | loadState_actionPerformed(); |
288 | } | |
289 | }); | |
290 | 75 | inputMenu.setText(MessageManager.getString("label.input_alignment")); |
291 | 75 | inputSequence |
292 | .setText(MessageManager.getString("action.fetch_sequences")); | |
293 | 75 | inputSequence.addActionListener(new ActionListener() |
294 | { | |
295 | 0 | @Override |
296 | public void actionPerformed(ActionEvent e) | |
297 | { | |
298 | 0 | inputSequence_actionPerformed(e); |
299 | } | |
300 | }); | |
301 | 75 | closeAll.setText(MessageManager.getString("action.close_all")); |
302 | 75 | closeAll.addActionListener(new ActionListener() |
303 | { | |
304 | 0 | @Override |
305 | public void actionPerformed(ActionEvent e) | |
306 | { | |
307 | 0 | closeAll_actionPerformed(e); |
308 | } | |
309 | }); | |
310 | 75 | raiseRelated.setText( |
311 | MessageManager.getString("action.raise_associated_windows")); | |
312 | 75 | raiseRelated.addActionListener(new ActionListener() |
313 | { | |
314 | 0 | @Override |
315 | public void actionPerformed(ActionEvent e) | |
316 | { | |
317 | 0 | raiseRelated_actionPerformed(e); |
318 | } | |
319 | }); | |
320 | 75 | minimizeAssociated.setText( |
321 | MessageManager.getString("action.minimize_associated_windows")); | |
322 | 75 | minimizeAssociated.addActionListener(new ActionListener() |
323 | { | |
324 | 0 | @Override |
325 | public void actionPerformed(ActionEvent e) | |
326 | { | |
327 | 0 | minimizeAssociated_actionPerformed(e); |
328 | } | |
329 | }); | |
330 | 75 | garbageCollect |
331 | .setText(MessageManager.getString("label.collect_garbage")); | |
332 | 75 | garbageCollect.addActionListener(new ActionListener() |
333 | { | |
334 | 0 | @Override |
335 | public void actionPerformed(ActionEvent e) | |
336 | { | |
337 | 0 | garbageCollect_actionPerformed(e); |
338 | } | |
339 | }); | |
340 | 75 | showMemusage |
341 | .setText(MessageManager.getString("label.show_memory_usage")); | |
342 | 75 | showMemusage.addActionListener(new ActionListener() |
343 | { | |
344 | 0 | @Override |
345 | public void actionPerformed(ActionEvent e) | |
346 | { | |
347 | 0 | showMemusage_actionPerformed(e); |
348 | } | |
349 | }); | |
350 | 75 | showConsole |
351 | .setText(MessageManager.getString("label.show_java_console")); | |
352 | 75 | showConsole.addActionListener(new ActionListener() |
353 | { | |
354 | 0 | @Override |
355 | public void actionPerformed(ActionEvent e) | |
356 | { | |
357 | 0 | showConsole_actionPerformed(e); |
358 | } | |
359 | }); | |
360 | 75 | showNews.setText(MessageManager.getString("label.show_jalview_news")); |
361 | 75 | showNews.addActionListener(new ActionListener() |
362 | { | |
363 | 0 | @Override |
364 | public void actionPerformed(ActionEvent e) | |
365 | { | |
366 | 0 | showNews_actionPerformed(e); |
367 | } | |
368 | }); | |
369 | 75 | groovyShell = new JMenuItem(); |
370 | 75 | groovyShell.setText(MessageManager.getString("label.groovy_console")); |
371 | 75 | groovyShell.addActionListener(new ActionListener() |
372 | { | |
373 | 0 | @Override |
374 | public void actionPerformed(ActionEvent e) | |
375 | { | |
376 | 0 | groovyShell_actionPerformed(); |
377 | } | |
378 | }); | |
379 | 75 | experimentalFeatures = new JCheckBoxMenuItem(); |
380 | 75 | experimentalFeatures |
381 | .setText(MessageManager.getString("label.show_experimental")); | |
382 | 75 | experimentalFeatures.setToolTipText( |
383 | MessageManager.getString("label.show_experimental_tip")); | |
384 | 75 | experimentalFeatures.addActionListener(new ActionListener() |
385 | { | |
386 | 0 | @Override |
387 | public void actionPerformed(ActionEvent e) | |
388 | { | |
389 | 0 | showExperimental_actionPerformed(experimentalFeatures.isSelected()); |
390 | } | |
391 | }); | |
392 | ||
393 | 75 | snapShotWindow.setText(MessageManager.getString("label.take_snapshot")); |
394 | 75 | snapShotWindow.addActionListener(new ActionListener() |
395 | { | |
396 | 0 | @Override |
397 | public void actionPerformed(ActionEvent e) | |
398 | { | |
399 | 0 | snapShotWindow_actionPerformed(e); |
400 | } | |
401 | }); | |
402 | ||
403 | 75 | desktopMenubar.add(FileMenu); |
404 | 75 | desktopMenubar.add(toolsMenu); |
405 | 75 | desktopMenubar.add(HelpMenu); |
406 | 75 | desktopMenubar.add(windowMenu); |
407 | 75 | FileMenu.add(inputMenu); |
408 | 75 | FileMenu.add(inputSequence); |
409 | 75 | FileMenu.addSeparator(); |
410 | // FileMenu.add(saveState); | |
411 | 75 | FileMenu.add(saveAsState); |
412 | 75 | FileMenu.add(loadState); |
413 | 75 | FileMenu.addSeparator(); |
414 | 75 | if (!APQHandlers.setQuit) |
415 | { | |
416 | 75 | FileMenu.add(quit); |
417 | } | |
418 | 75 | if (!APQHandlers.setAbout) |
419 | { | |
420 | 75 | HelpMenu.add(aboutMenuItem); |
421 | } | |
422 | 75 | HelpMenu.add(documentationMenuItem); |
423 | 75 | if (!APQHandlers.setPreferences) |
424 | { | |
425 | 75 | toolsMenu.add(preferences); |
426 | } | |
427 | 75 | if (!Platform.isJS()) |
428 | { | |
429 | 75 | toolsMenu.add(showMemusage); |
430 | 75 | toolsMenu.add(showConsole); |
431 | 75 | toolsMenu.add(showNews); |
432 | 75 | toolsMenu.add(garbageCollect); |
433 | 75 | toolsMenu.add(groovyShell); |
434 | } | |
435 | 75 | toolsMenu.add(experimentalFeatures); |
436 | // toolsMenu.add(snapShotWindow); | |
437 | 75 | inputMenu.add(inputLocalFileMenuItem); |
438 | 75 | inputMenu.add(inputURLMenuItem); |
439 | 75 | inputMenu.add(inputTextboxMenuItem); |
440 | 75 | windowMenu.add(closeAll); |
441 | 75 | windowMenu.add(raiseRelated); |
442 | 75 | windowMenu.add(minimizeAssociated); |
443 | 75 | windowMenu.addSeparator(); |
444 | // inputMenu.add(vamsasLoad); | |
445 | } | |
446 | ||
447 | 0 | protected void showExperimental_actionPerformed(boolean selected) |
448 | { | |
449 | } | |
450 | ||
451 | 0 | protected void groovyShell_actionPerformed() |
452 | { | |
453 | } | |
454 | ||
455 | 0 | protected void snapShotWindow_actionPerformed(ActionEvent e) |
456 | { | |
457 | // TODO Auto-generated method stub | |
458 | ||
459 | } | |
460 | ||
461 | 0 | protected void showConsole_actionPerformed(ActionEvent e) |
462 | { | |
463 | // TODO Auto-generated method stub | |
464 | ||
465 | } | |
466 | ||
467 | 0 | protected void showNews_actionPerformed(ActionEvent e) |
468 | { | |
469 | // TODO Auto-generated method stub | |
470 | ||
471 | } | |
472 | ||
473 | 0 | protected void showMemusage_actionPerformed(ActionEvent e) |
474 | { | |
475 | // TODO Auto-generated method stub | |
476 | ||
477 | } | |
478 | ||
479 | 0 | protected void garbageCollect_actionPerformed(ActionEvent e) |
480 | { | |
481 | // TODO Auto-generated method stub | |
482 | ||
483 | } | |
484 | ||
485 | 0 | protected void vamsasStMenu_actionPerformed() |
486 | { | |
487 | } | |
488 | ||
489 | 0 | public void vamsasSave_actionPerformed(ActionEvent e) |
490 | { | |
491 | } | |
492 | ||
493 | /** | |
494 | * DOCUMENT ME! | |
495 | * | |
496 | * @param e | |
497 | * DOCUMENT ME! | |
498 | */ | |
499 | 0 | protected void inputLocalFileMenuItem_actionPerformed( |
500 | jalview.gui.AlignViewport av) | |
501 | { | |
502 | } | |
503 | ||
504 | /** | |
505 | * DOCUMENT ME! | |
506 | * | |
507 | * @param e | |
508 | * DOCUMENT ME! | |
509 | * @throws FileFormatException | |
510 | */ | |
511 | 0 | protected void inputURLMenuItem_actionPerformed( |
512 | jalview.gui.AlignViewport av) throws FileFormatException | |
513 | { | |
514 | } | |
515 | ||
516 | /** | |
517 | * DOCUMENT ME! | |
518 | * | |
519 | * @param e | |
520 | * DOCUMENT ME! | |
521 | */ | |
522 | 0 | protected void inputTextboxMenuItem_actionPerformed( |
523 | AlignmentViewPanel avp) | |
524 | { | |
525 | } | |
526 | ||
527 | /** | |
528 | * DOCUMENT ME! | |
529 | */ | |
530 | 0 | protected void quit() |
531 | { | |
532 | // jalview.bin.Console.outPrintln("********** GDesktop.quit()"); | |
533 | } | |
534 | ||
535 | /** | |
536 | * DOCUMENT ME! | |
537 | * | |
538 | * @param e | |
539 | * DOCUMENT ME! | |
540 | */ | |
541 | 0 | protected void aboutMenuItem_actionPerformed(ActionEvent e) |
542 | { | |
543 | } | |
544 | ||
545 | 0 | protected void documentationMenuItem_actionPerformed() |
546 | { | |
547 | } | |
548 | ||
549 | /** | |
550 | * DOCUMENT ME! | |
551 | * | |
552 | * @param e | |
553 | * DOCUMENT ME! | |
554 | */ | |
555 | 0 | protected void preferences_actionPerformed(ActionEvent e) |
556 | { | |
557 | } | |
558 | ||
559 | /** | |
560 | * DOCUMENT ME! | |
561 | * | |
562 | * @param e | |
563 | * DOCUMENT ME! | |
564 | */ | |
565 | 0 | public void saveState_actionPerformed() |
566 | { | |
567 | } | |
568 | ||
569 | 0 | public void saveAsState_actionPerformed(ActionEvent e) |
570 | { | |
571 | } | |
572 | ||
573 | /** | |
574 | * DOCUMENT ME! | |
575 | * | |
576 | * @param e | |
577 | * DOCUMENT ME! | |
578 | */ | |
579 | 0 | public void loadState_actionPerformed() |
580 | { | |
581 | } | |
582 | ||
583 | /** | |
584 | * DOCUMENT ME! | |
585 | * | |
586 | * @param e | |
587 | * DOCUMENT ME! | |
588 | */ | |
589 | 0 | public void loadJalviewAlign_actionPerformed(ActionEvent e) |
590 | { | |
591 | } | |
592 | ||
593 | 0 | public void vamsasStart_actionPerformed(ActionEvent e) |
594 | { | |
595 | ||
596 | } | |
597 | ||
598 | 0 | public void inputSequence_actionPerformed(ActionEvent e) |
599 | { | |
600 | ||
601 | } | |
602 | ||
603 | 0 | public void vamsasStop_actionPerformed(ActionEvent e) |
604 | { | |
605 | ||
606 | } | |
607 | ||
608 | 0 | public void closeAll_actionPerformed(ActionEvent e) |
609 | { | |
610 | ||
611 | } | |
612 | ||
613 | 0 | public void raiseRelated_actionPerformed(ActionEvent e) |
614 | { | |
615 | ||
616 | } | |
617 | ||
618 | 0 | public void minimizeAssociated_actionPerformed(ActionEvent e) |
619 | { | |
620 | ||
621 | } | |
622 | ||
623 | 0 | public void vamsasImport_actionPerformed(ActionEvent e) |
624 | { | |
625 | } | |
626 | } |