Merge branch 'develop' into trialMerge
[jalview.git] / src / jalview / jbgui / GDesktop.java
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 jalview.api.AlignmentViewPanel;
24 import jalview.io.FileFormatException;
25 import jalview.util.MessageManager;
26 import jalview.util.Platform;
27
28 import java.awt.FlowLayout;
29 import java.awt.Toolkit;
30 import java.awt.event.ActionEvent;
31 import java.awt.event.ActionListener;
32
33 import javax.swing.JCheckBoxMenuItem;
34 import javax.swing.JFrame;
35 import javax.swing.JMenu;
36 import javax.swing.JMenuBar;
37 import javax.swing.JMenuItem;
38
39 /**
40  * DOCUMENT ME!
41  * 
42  * @author $author$
43  * @version $Revision$
44  */
45 public class GDesktop extends JFrame
46 {
47
48   public static javax.swing.JTabbedPane createTabbedPane()
49   {
50     // now just always return JTabbedPane
51    return new javax.swing.JTabbedPane();
52 //    // BH 2018 coercing jalview.jbgui.swing.JTabbedPane() for now
53 //    if (/** @j2sNative false && */
54 //    true)
55 //    {
56 //      // Java
57 //      return new javax.swing.JTabbedPane();
58 //    }
59 //    // JavaScript
60 //    return (javax.swing.JTabbedPane) (Object) new jalview.jbgui.swing.JTabbedPane();
61   }
62
63   
64   protected static JMenu windowMenu = new JMenu();
65
66   JMenuBar desktopMenubar = new JMenuBar();
67
68   JMenu FileMenu = new JMenu();
69
70   JMenu HelpMenu = new JMenu();
71
72   protected JMenu VamsasMenu = new JMenu();
73
74   protected JMenu VamsasStMenu = new JMenu();
75
76   JMenuItem inputLocalFileMenuItem = new JMenuItem();
77
78   JMenuItem inputURLMenuItem = new JMenuItem();
79
80   JMenuItem inputTextboxMenuItem = new JMenuItem();
81
82   JMenuItem quit = new JMenuItem();
83
84   JMenuItem aboutMenuItem = new JMenuItem();
85
86   JMenuItem documentationMenuItem = new JMenuItem();
87
88   FlowLayout flowLayout1 = new FlowLayout();
89
90   protected JMenu toolsMenu = new JMenu();
91
92   JMenuItem preferences = new JMenuItem();
93
94   JMenuItem saveState = new JMenuItem();
95
96   JMenuItem saveAsState = new JMenuItem();
97
98   JMenuItem loadState = new JMenuItem();
99
100   JMenu inputMenu = new JMenu();
101
102   protected JMenuItem vamsasStart = new JMenuItem();
103
104   protected JMenuItem vamsasImport = new JMenuItem();
105
106   protected JMenuItem vamsasSave = new JMenuItem();
107
108   JMenuItem inputSequence = new JMenuItem();
109
110   protected JMenuItem vamsasStop = new JMenuItem();
111
112   JMenuItem closeAll = new JMenuItem();
113
114   JMenuItem raiseRelated = new JMenuItem();
115
116   JMenuItem minimizeAssociated = new JMenuItem();
117
118   protected JCheckBoxMenuItem showMemusage = new JCheckBoxMenuItem();
119
120   JMenuItem garbageCollect = new JMenuItem();
121
122   protected JMenuItem groovyShell;
123
124   protected JCheckBoxMenuItem experimentalFeatures;
125
126   protected JCheckBoxMenuItem showConsole = new JCheckBoxMenuItem();
127
128   protected JCheckBoxMenuItem showNews = new JCheckBoxMenuItem();
129
130   protected JMenuItem snapShotWindow = new JMenuItem();
131
132   /**
133    * Creates a new GDesktop object.
134    */
135   public GDesktop()
136   {
137     super();
138     try
139     {
140       jbInit();
141       this.setJMenuBar(desktopMenubar);
142     } catch (Exception e)
143     {
144       e.printStackTrace();
145     }
146
147     if (Platform.allowMnemonics()) 
148     {
149         //BH was !Platform.isAMacAndNotJS()) i.e. "JS or not Mac"
150         // but here we want just not a Mac, period, right?
151       FileMenu.setMnemonic('F');
152       inputLocalFileMenuItem.setMnemonic('L');
153       VamsasMenu.setMnemonic('V'); 
154       inputURLMenuItem.setMnemonic('U');
155       inputTextboxMenuItem.setMnemonic('C');
156       quit.setMnemonic('Q');
157       saveState.setMnemonic('S');
158       loadState.setMnemonic('L');
159       inputMenu.setMnemonic('I');
160     }
161   }
162
163   /**
164    * DOCUMENT ME!
165    * 
166    * @throws Exception
167    *           DOCUMENT ME!
168    */
169   private void jbInit() throws Exception
170   {
171
172     FileMenu.setText(MessageManager.getString("action.file"));
173     HelpMenu.setText(MessageManager.getString("action.help"));
174     VamsasMenu.setText("Vamsas");
175     VamsasMenu.setToolTipText(MessageManager
176             .getString("label.share_data_vamsas_applications"));
177     VamsasStMenu.setText(MessageManager.getString("label.connect_to"));
178     VamsasStMenu.setToolTipText(
179             MessageManager.getString("label.join_existing_vamsas_session"));
180     inputLocalFileMenuItem
181             .setText(MessageManager.getString("label.load_tree_from_file"));
182     inputLocalFileMenuItem.setAccelerator(
183             javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_O,
184                     Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(),
185                     false));
186     inputLocalFileMenuItem
187             .addActionListener(new java.awt.event.ActionListener()
188             {
189               @Override
190               public void actionPerformed(ActionEvent e)
191               {
192                 inputLocalFileMenuItem_actionPerformed(null);
193               }
194             });
195     inputURLMenuItem.setText(MessageManager.getString("label.from_url"));
196     inputURLMenuItem.addActionListener(new java.awt.event.ActionListener()
197     {
198       @Override
199       public void actionPerformed(ActionEvent e)
200       {
201         try
202         {
203           inputURLMenuItem_actionPerformed(null);
204         } catch (FileFormatException e1)
205         {
206           System.err.println("Error loading from URL: " + e1.getMessage());
207         }
208       }
209     });
210     inputTextboxMenuItem
211             .setText(MessageManager.getString("label.from_textbox"));
212     inputTextboxMenuItem
213             .addActionListener(new java.awt.event.ActionListener()
214             {
215               @Override
216               public void actionPerformed(ActionEvent e)
217               {
218                 inputTextboxMenuItem_actionPerformed(null);
219               }
220             });
221     quit.setText(MessageManager.getString("action.quit"));
222     quit.addActionListener(new java.awt.event.ActionListener()
223     {
224       @Override
225       public void actionPerformed(ActionEvent e)
226       {
227         quit();
228       }
229     });
230     aboutMenuItem.setText(MessageManager.getString("label.about"));
231     aboutMenuItem.addActionListener(new java.awt.event.ActionListener()
232     {
233       @Override
234       public void actionPerformed(ActionEvent e)
235       {
236         aboutMenuItem_actionPerformed(e);
237       }
238     });
239     documentationMenuItem
240             .setText(MessageManager.getString("label.documentation"));
241     documentationMenuItem.setAccelerator(javax.swing.KeyStroke
242             .getKeyStroke(java.awt.event.KeyEvent.VK_F1, 0, false));
243     documentationMenuItem
244             .addActionListener(new java.awt.event.ActionListener()
245             {
246               @Override
247               public void actionPerformed(ActionEvent e)
248               {
249                 documentationMenuItem_actionPerformed();
250               }
251             });
252     this.getContentPane().setLayout(flowLayout1);
253     windowMenu.setText(MessageManager.getString("label.window"));
254     preferences.setText(MessageManager.getString("label.preferences"));
255     preferences.addActionListener(new ActionListener()
256     {
257       @Override
258       public void actionPerformed(ActionEvent e)
259       {
260         preferences_actionPerformed(e);
261       }
262     });
263     toolsMenu.setText(MessageManager.getString("label.tools"));
264     saveState.setText(MessageManager.getString("action.save_project"));
265     saveState.addActionListener(new ActionListener()
266     {
267       @Override
268       public void actionPerformed(ActionEvent e)
269       {
270         saveState_actionPerformed();
271       }
272     });
273     saveAsState.setText(MessageManager.getString("action.save_project_as"));
274     saveAsState.addActionListener(new ActionListener()
275     {
276       @Override
277       public void actionPerformed(ActionEvent e)
278       {
279         saveAsState_actionPerformed(e);
280       }
281     });
282     loadState.setText(MessageManager.getString("action.load_project"));
283     loadState.addActionListener(new ActionListener()
284     {
285       @Override
286       public void actionPerformed(ActionEvent e)
287       {
288         loadState_actionPerformed();
289       }
290     });
291     inputMenu.setText(MessageManager.getString("label.input_alignment"));
292     vamsasStart
293             .setText(MessageManager.getString("label.new_vamsas_session"));
294     vamsasStart.setVisible(false);
295     vamsasStart.addActionListener(new ActionListener()
296     {
297       @Override
298       public void actionPerformed(ActionEvent e)
299       {
300         vamsasStart_actionPerformed(e);
301       }
302     });
303     vamsasImport.setText(
304             MessageManager.getString("action.load_vamsas_session"));
305     vamsasImport.setVisible(false);
306     vamsasImport.addActionListener(new ActionListener()
307     {
308       @Override
309       public void actionPerformed(ActionEvent e)
310       {
311         vamsasImport_actionPerformed(e);
312       }
313     });
314     vamsasSave.setText(
315             MessageManager.getString("action.save_vamsas_session"));
316     vamsasSave.setVisible(false);
317     vamsasSave.addActionListener(new ActionListener()
318     {
319       @Override
320       public void actionPerformed(ActionEvent e)
321       {
322         vamsasSave_actionPerformed(e);
323       }
324     });
325     inputSequence
326             .setText(MessageManager.getString("action.fetch_sequences"));
327     inputSequence.addActionListener(new ActionListener()
328     {
329       @Override
330       public void actionPerformed(ActionEvent e)
331       {
332         inputSequence_actionPerformed(e);
333       }
334     });
335     vamsasStop
336             .setText(MessageManager.getString("label.stop_vamsas_session"));
337     vamsasStop.setVisible(false);
338     vamsasStop.addActionListener(new ActionListener()
339     {
340       @Override
341       public void actionPerformed(ActionEvent e)
342       {
343         vamsasStop_actionPerformed(e);
344       }
345     });
346     closeAll.setText(MessageManager.getString("action.close_all"));
347     closeAll.addActionListener(new ActionListener()
348     {
349       @Override
350       public void actionPerformed(ActionEvent e)
351       {
352         closeAll_actionPerformed(e);
353       }
354     });
355     raiseRelated.setText(
356             MessageManager.getString("action.raise_associated_windows"));
357     raiseRelated.addActionListener(new ActionListener()
358     {
359       @Override
360       public void actionPerformed(ActionEvent e)
361       {
362         raiseRelated_actionPerformed(e);
363       }
364     });
365     minimizeAssociated.setText(
366             MessageManager.getString("action.minimize_associated_windows"));
367     minimizeAssociated.addActionListener(new ActionListener()
368     {
369       @Override
370       public void actionPerformed(ActionEvent e)
371       {
372         minimizeAssociated_actionPerformed(e);
373       }
374     });
375     garbageCollect
376             .setText(MessageManager.getString("label.collect_garbage"));
377     garbageCollect.addActionListener(new ActionListener()
378     {
379       @Override
380       public void actionPerformed(ActionEvent e)
381       {
382         garbageCollect_actionPerformed(e);
383       }
384     });
385     showMemusage
386             .setText(MessageManager.getString("label.show_memory_usage"));
387     showMemusage.addActionListener(new ActionListener()
388     {
389       @Override
390       public void actionPerformed(ActionEvent e)
391       {
392         showMemusage_actionPerformed(e);
393       }
394     });
395     showConsole
396             .setText(MessageManager.getString("label.show_java_console"));
397     showConsole.addActionListener(new ActionListener()
398     {
399       @Override
400       public void actionPerformed(ActionEvent e)
401       {
402         showConsole_actionPerformed(e);
403       }
404     });
405     showNews.setText(MessageManager.getString("label.show_jalview_news"));
406     showNews.addActionListener(new ActionListener()
407     {
408       @Override
409       public void actionPerformed(ActionEvent e)
410       {
411         showNews_actionPerformed(e);
412       }
413     });
414     groovyShell = new JMenuItem();
415     groovyShell.setText(MessageManager.getString("label.groovy_console"));
416     groovyShell.addActionListener(new ActionListener()
417     {
418       @Override
419       public void actionPerformed(ActionEvent e)
420       {
421         groovyShell_actionPerformed();
422       }
423     });
424     experimentalFeatures = new JCheckBoxMenuItem();
425     experimentalFeatures
426             .setText(MessageManager.getString("label.show_experimental"));
427     experimentalFeatures.setToolTipText(
428             MessageManager.getString("label.show_experimental_tip"));
429     experimentalFeatures.addActionListener(new ActionListener()
430     {
431       @Override
432       public void actionPerformed(ActionEvent e)
433       {
434         showExperimental_actionPerformed(experimentalFeatures.isSelected());
435       }
436     });
437
438     snapShotWindow.setText(MessageManager.getString("label.take_snapshot"));
439     snapShotWindow.addActionListener(new ActionListener()
440     {
441       @Override
442       public void actionPerformed(ActionEvent e)
443       {
444         snapShotWindow_actionPerformed(e);
445       }
446     });
447
448     desktopMenubar.add(FileMenu);
449     desktopMenubar.add(toolsMenu);
450     VamsasMenu.setVisible(false);
451     desktopMenubar.add(VamsasMenu);
452     desktopMenubar.add(HelpMenu);
453     desktopMenubar.add(windowMenu);
454     FileMenu.add(inputMenu);
455     FileMenu.add(inputSequence);
456     FileMenu.addSeparator();
457     FileMenu.add(saveState);
458     FileMenu.add(saveAsState);
459     FileMenu.add(loadState);
460     FileMenu.addSeparator();
461     FileMenu.add(quit);
462     HelpMenu.add(aboutMenuItem);
463     HelpMenu.add(documentationMenuItem);
464     VamsasMenu.add(VamsasStMenu);
465     VamsasStMenu.setVisible(false);
466     VamsasMenu.add(vamsasStart);
467     VamsasMenu.add(vamsasImport);
468     VamsasMenu.add(vamsasSave);
469     VamsasMenu.add(vamsasStop);
470     toolsMenu.add(preferences);
471     if (!Platform.isJS())
472     {
473       toolsMenu.add(showMemusage);
474       toolsMenu.add(showConsole);
475     }
476     if (!Platform.isJS())
477     {
478       toolsMenu.add(showNews);
479       toolsMenu.add(garbageCollect);
480       toolsMenu.add(groovyShell);
481     }
482     toolsMenu.add(experimentalFeatures);
483     // toolsMenu.add(snapShotWindow);
484     inputMenu.add(inputLocalFileMenuItem);
485     inputMenu.add(inputURLMenuItem);
486     inputMenu.add(inputTextboxMenuItem);
487     windowMenu.add(closeAll);
488     windowMenu.add(raiseRelated);
489     windowMenu.add(minimizeAssociated);
490     windowMenu.addSeparator();
491     // inputMenu.add(vamsasLoad);
492   }
493
494   protected void showExperimental_actionPerformed(boolean selected)
495   {
496   }
497
498   protected void groovyShell_actionPerformed()
499   {
500   }
501
502   protected void snapShotWindow_actionPerformed(ActionEvent e)
503   {
504     // TODO Auto-generated method stub
505
506   }
507
508   protected void showConsole_actionPerformed(ActionEvent e)
509   {
510     // TODO Auto-generated method stub
511
512   }
513
514   protected void showNews_actionPerformed(ActionEvent e)
515   {
516     // TODO Auto-generated method stub
517
518   }
519
520   protected void showMemusage_actionPerformed(ActionEvent e)
521   {
522     // TODO Auto-generated method stub
523
524   }
525
526   protected void garbageCollect_actionPerformed(ActionEvent e)
527   {
528     // TODO Auto-generated method stub
529
530   }
531
532   protected void vamsasStMenu_actionPerformed()
533   {
534   }
535
536   public void vamsasSave_actionPerformed(ActionEvent e)
537   {
538   }
539
540   /**
541    * DOCUMENT ME!
542    * 
543    * @param e
544    *          DOCUMENT ME!
545    */
546   protected void inputLocalFileMenuItem_actionPerformed(
547           jalview.gui.AlignViewport av)
548   {
549   }
550
551   /**
552    * DOCUMENT ME!
553    * 
554    * @param e
555    *          DOCUMENT ME!
556    * @throws FileFormatException
557    */
558   protected void inputURLMenuItem_actionPerformed(
559           jalview.gui.AlignViewport av) throws FileFormatException
560   {
561   }
562
563   /**
564    * DOCUMENT ME!
565    * 
566    * @param e
567    *          DOCUMENT ME!
568    */
569   protected void inputTextboxMenuItem_actionPerformed(
570           AlignmentViewPanel avp)
571   {
572   }
573
574   /**
575    * DOCUMENT ME!
576    */
577   protected void quit()
578   {
579   }
580
581   /**
582    * DOCUMENT ME!
583    * 
584    * @param e
585    *          DOCUMENT ME!
586    */
587   protected void aboutMenuItem_actionPerformed(ActionEvent e)
588   {
589   }
590
591   protected void documentationMenuItem_actionPerformed()
592   {
593   }
594
595   /**
596    * DOCUMENT ME!
597    * 
598    * @param e
599    *          DOCUMENT ME!
600    */
601   protected void preferences_actionPerformed(ActionEvent e)
602   {
603   }
604
605   /**
606    * DOCUMENT ME!
607    * 
608    * @param e
609    *          DOCUMENT ME!
610    */
611   public void saveState_actionPerformed()
612   {
613   }
614
615   public void saveAsState_actionPerformed(ActionEvent e)
616   {
617   }
618
619   /**
620    * DOCUMENT ME!
621    * 
622    * @param e
623    *          DOCUMENT ME!
624    */
625   public void loadState_actionPerformed()
626   {
627   }
628
629   /**
630    * DOCUMENT ME!
631    * 
632    * @param e
633    *          DOCUMENT ME!
634    */
635   public void loadJalviewAlign_actionPerformed(ActionEvent e)
636   {
637   }
638
639   public void vamsasStart_actionPerformed(ActionEvent e)
640   {
641
642   }
643
644   public void inputSequence_actionPerformed(ActionEvent e)
645   {
646
647   }
648
649   public void vamsasStop_actionPerformed(ActionEvent e)
650   {
651
652   }
653
654   public void closeAll_actionPerformed(ActionEvent e)
655   {
656
657   }
658
659   public void raiseRelated_actionPerformed(ActionEvent e)
660   {
661
662   }
663
664   public void minimizeAssociated_actionPerformed(ActionEvent e)
665   {
666
667   }
668
669   public void vamsasImport_actionPerformed(ActionEvent e)
670   {
671   }
672 }