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