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