JAL-3063 temporary extra menu option to save/load project as JAXB
[jalview.git] / src / jalview / jbgui / GDesktop.java
index d7e8be3..290c4a4 100755 (executable)
@@ -1,26 +1,40 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.7)
- * Copyright (C) 2011 J Procter, AM Waterhouse, G Barton, M Clamp, S Searle
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
  * 
  * This file is part of Jalview.
  * 
  * Jalview is free software: you can redistribute it and/or
  * modify it under the terms of the GNU General Public License 
- * as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
- * 
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *  
  * Jalview is distributed in the hope that it will be useful, but 
  * WITHOUT ANY WARRANTY; without even the implied warranty 
  * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
  * PURPOSE.  See the GNU General Public License for more details.
  * 
- * You should have received a copy of the GNU General Public License along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
  */
 package jalview.jbgui;
 
-import java.awt.*;
-import java.awt.event.*;
+import jalview.api.AlignmentViewPanel;
+import jalview.io.FileFormatException;
+import jalview.util.MessageManager;
+import jalview.util.Platform;
+
+import java.awt.FlowLayout;
+import java.awt.Toolkit;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
 
-import javax.swing.*;
+import javax.swing.JCheckBoxMenuItem;
+import javax.swing.JFrame;
+import javax.swing.JMenu;
+import javax.swing.JMenuBar;
+import javax.swing.JMenuItem;
 
 /**
  * DOCUMENT ME!
@@ -86,10 +100,16 @@ public class GDesktop extends JFrame
 
   JMenuItem garbageCollect = new JMenuItem();
 
+  protected JMenuItem groovyShell;
+
+  protected JCheckBoxMenuItem experimentalFeatures;
+
   protected JCheckBoxMenuItem showConsole = new JCheckBoxMenuItem();
 
   protected JCheckBoxMenuItem showNews = new JCheckBoxMenuItem();
 
+  protected JMenuItem snapShotWindow = new JMenuItem();
+
   /**
    * Creates a new GDesktop object.
    */
@@ -104,7 +124,7 @@ public class GDesktop extends JFrame
       e.printStackTrace();
     }
 
-    if (!new jalview.util.Platform().isAMac())
+    if (!Platform.isAMac())
     {
       FileMenu.setMnemonic('F');
       inputLocalFileMenuItem.setMnemonic('L');
@@ -126,196 +146,292 @@ public class GDesktop extends JFrame
    */
   private void jbInit() throws Exception
   {
-    FileMenu.setText("File");
-    HelpMenu.setText("Help");
+
+    FileMenu.setText(MessageManager.getString("action.file"));
+    HelpMenu.setText(MessageManager.getString("action.help"));
     VamsasMenu.setText("Vamsas");
-    VamsasMenu.setToolTipText("Share data with other vamsas applications.");
-    VamsasStMenu.setText("Connect to");
-    VamsasStMenu.setToolTipText("Join an existing vamsas session");
-    inputLocalFileMenuItem.setText("from File");
-    inputLocalFileMenuItem.setAccelerator(javax.swing.KeyStroke
-            .getKeyStroke(java.awt.event.KeyEvent.VK_O, Toolkit
-                    .getDefaultToolkit().getMenuShortcutKeyMask(), false));
+    VamsasMenu.setToolTipText(MessageManager
+            .getString("label.share_data_vamsas_applications"));
+    VamsasStMenu.setText(MessageManager.getString("label.connect_to"));
+    VamsasStMenu.setToolTipText(
+            MessageManager.getString("label.join_existing_vamsas_session"));
+    inputLocalFileMenuItem
+            .setText(MessageManager.getString("label.load_tree_from_file"));
+    inputLocalFileMenuItem.setAccelerator(
+            javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_O,
+                    Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(),
+                    false));
     inputLocalFileMenuItem
             .addActionListener(new java.awt.event.ActionListener()
             {
+              @Override
               public void actionPerformed(ActionEvent e)
               {
                 inputLocalFileMenuItem_actionPerformed(null);
               }
             });
-    inputURLMenuItem.setText("from URL");
+    inputURLMenuItem.setText(MessageManager.getString("label.from_url"));
     inputURLMenuItem.addActionListener(new java.awt.event.ActionListener()
     {
+      @Override
       public void actionPerformed(ActionEvent e)
       {
-        inputURLMenuItem_actionPerformed(null);
+        try
+        {
+          inputURLMenuItem_actionPerformed(null);
+        } catch (FileFormatException e1)
+        {
+          System.err.println("Error loading from URL: " + e1.getMessage());
+        }
       }
     });
-    inputTextboxMenuItem.setText("from Textbox");
+    inputTextboxMenuItem
+            .setText(MessageManager.getString("label.from_textbox"));
     inputTextboxMenuItem
             .addActionListener(new java.awt.event.ActionListener()
             {
+              @Override
               public void actionPerformed(ActionEvent e)
               {
                 inputTextboxMenuItem_actionPerformed(null);
               }
             });
-    quit.setText("Quit");
+    quit.setText(MessageManager.getString("action.quit"));
     quit.addActionListener(new java.awt.event.ActionListener()
     {
+      @Override
       public void actionPerformed(ActionEvent e)
       {
         quit();
       }
     });
-    aboutMenuItem.setText("About");
+    aboutMenuItem.setText(MessageManager.getString("label.about"));
     aboutMenuItem.addActionListener(new java.awt.event.ActionListener()
     {
+      @Override
       public void actionPerformed(ActionEvent e)
       {
         aboutMenuItem_actionPerformed(e);
       }
     });
-    documentationMenuItem.setText("Documentation");
+    documentationMenuItem
+            .setText(MessageManager.getString("label.documentation"));
     documentationMenuItem.setAccelerator(javax.swing.KeyStroke
             .getKeyStroke(java.awt.event.KeyEvent.VK_F1, 0, false));
     documentationMenuItem
             .addActionListener(new java.awt.event.ActionListener()
             {
+              @Override
               public void actionPerformed(ActionEvent e)
               {
                 documentationMenuItem_actionPerformed(e);
               }
             });
     this.getContentPane().setLayout(flowLayout1);
-    windowMenu.setText("Window");
-    preferences.setText("Preferences...");
+    windowMenu.setText(MessageManager.getString("label.window"));
+    preferences.setText(MessageManager.getString("label.preferences"));
     preferences.addActionListener(new ActionListener()
     {
+      @Override
       public void actionPerformed(ActionEvent e)
       {
         preferences_actionPerformed(e);
       }
     });
-    toolsMenu.setText("Tools");
-    saveState.setText("Save Project");
+    toolsMenu.setText(MessageManager.getString("label.tools"));
+    saveState.setText(MessageManager.getString("action.save_project"));
     saveState.addActionListener(new ActionListener()
     {
+      @Override
+      public void actionPerformed(ActionEvent e)
+      {
+        saveState_actionPerformed(true);
+      }
+    });
+    JMenuItem saveAsJaxb = new JMenuItem("Save Project as JAXB");
+    saveAsJaxb.addActionListener(new ActionListener()
+    {
+      @Override
       public void actionPerformed(ActionEvent e)
       {
-        saveState_actionPerformed(e);
+        saveState_actionPerformed(false);
       }
     });
-    loadState.setText("Load Project");
+    loadState.setText(MessageManager.getString("action.load_project"));
     loadState.addActionListener(new ActionListener()
     {
+      @Override
       public void actionPerformed(ActionEvent e)
       {
-        loadState_actionPerformed(e);
+        loadState_actionPerformed(true);
       }
     });
-    inputMenu.setText("Input Alignment");
-    vamsasStart.setText("New Vamsas Session...");
+    JMenuItem loadAsJaxb = new JMenuItem("Load Project as JAXB");
+    loadAsJaxb.addActionListener(new ActionListener()
+    {
+      @Override
+      public void actionPerformed(ActionEvent e)
+      {
+        loadState_actionPerformed(false);
+      }
+    });
+    inputMenu.setText(MessageManager.getString("label.input_alignment"));
+    vamsasStart
+            .setText(MessageManager.getString("label.new_vamsas_session"));
     vamsasStart.setVisible(false);
     vamsasStart.addActionListener(new ActionListener()
     {
+      @Override
       public void actionPerformed(ActionEvent e)
       {
         vamsasStart_actionPerformed(e);
       }
     });
-    vamsasImport.setText("Load Vamsas Session...");
+    vamsasImport.setText(
+            MessageManager.getString("action.load_vamsas_session"));
     vamsasImport.setVisible(false);
     vamsasImport.addActionListener(new ActionListener()
     {
+      @Override
       public void actionPerformed(ActionEvent e)
       {
         vamsasImport_actionPerformed(e);
       }
     });
-    vamsasSave.setText("Save Vamsas Session...");
+    vamsasSave.setText(
+            MessageManager.getString("action.save_vamsas_session"));
     vamsasSave.setVisible(false);
     vamsasSave.addActionListener(new ActionListener()
     {
+      @Override
       public void actionPerformed(ActionEvent e)
       {
         vamsasSave_actionPerformed(e);
       }
     });
-    inputSequence.setText("Fetch Sequence(s)...");
+    inputSequence
+            .setText(MessageManager.getString("action.fetch_sequences"));
     inputSequence.addActionListener(new ActionListener()
     {
+      @Override
       public void actionPerformed(ActionEvent e)
       {
         inputSequence_actionPerformed(e);
       }
     });
-    vamsasStop.setText("Stop Vamsas Session");
+    vamsasStop
+            .setText(MessageManager.getString("label.stop_vamsas_session"));
     vamsasStop.setVisible(false);
     vamsasStop.addActionListener(new ActionListener()
     {
+      @Override
       public void actionPerformed(ActionEvent e)
       {
         vamsasStop_actionPerformed(e);
       }
     });
-    closeAll.setText("Close All");
+    closeAll.setText(MessageManager.getString("action.close_all"));
     closeAll.addActionListener(new ActionListener()
     {
+      @Override
       public void actionPerformed(ActionEvent e)
       {
         closeAll_actionPerformed(e);
       }
     });
-    raiseRelated.setText("Raise Associated Windows");
+    raiseRelated.setText(
+            MessageManager.getString("action.raise_associated_windows"));
     raiseRelated.addActionListener(new ActionListener()
     {
+      @Override
       public void actionPerformed(ActionEvent e)
       {
         raiseRelated_actionPerformed(e);
       }
     });
-    minimizeAssociated.setText("Minimize Associated Windows");
+    minimizeAssociated.setText(
+            MessageManager.getString("action.minimize_associated_windows"));
     minimizeAssociated.addActionListener(new ActionListener()
     {
+      @Override
       public void actionPerformed(ActionEvent e)
       {
         minimizeAssociated_actionPerformed(e);
       }
     });
-    garbageCollect.setText("Collect Garbage");
+    garbageCollect
+            .setText(MessageManager.getString("label.collect_garbage"));
     garbageCollect.addActionListener(new ActionListener()
     {
+      @Override
       public void actionPerformed(ActionEvent e)
       {
         garbageCollect_actionPerformed(e);
       }
     });
-    showMemusage.setText("Show Memory Usage");
+    showMemusage
+            .setText(MessageManager.getString("label.show_memory_usage"));
     showMemusage.addActionListener(new ActionListener()
     {
+      @Override
       public void actionPerformed(ActionEvent e)
       {
         showMemusage_actionPerformed(e);
       }
     });
-    showConsole.setText("Show Java Console");
+    showConsole
+            .setText(MessageManager.getString("label.show_java_console"));
     showConsole.addActionListener(new ActionListener()
     {
+      @Override
       public void actionPerformed(ActionEvent e)
       {
         showConsole_actionPerformed(e);
       }
     });
-    showNews.setText("Show Jalview News");
+    showNews.setText(MessageManager.getString("label.show_jalview_news"));
     showNews.addActionListener(new ActionListener()
     {
+      @Override
       public void actionPerformed(ActionEvent e)
       {
         showNews_actionPerformed(e);
       }
     });
+    groovyShell = new JMenuItem();
+    groovyShell.setText(MessageManager.getString("label.groovy_console"));
+    groovyShell.addActionListener(new ActionListener()
+    {
+      @Override
+      public void actionPerformed(ActionEvent e)
+      {
+        groovyShell_actionPerformed();
+      }
+    });
+    experimentalFeatures = new JCheckBoxMenuItem();
+    experimentalFeatures
+            .setText(MessageManager.getString("label.show_experimental"));
+    experimentalFeatures.setToolTipText(
+            MessageManager.getString("label.show_experimental_tip"));
+    experimentalFeatures.addActionListener(new ActionListener()
+    {
+      @Override
+      public void actionPerformed(ActionEvent e)
+      {
+        showExperimental_actionPerformed(experimentalFeatures.isSelected());
+      }
+    });
+
+    snapShotWindow.setText(MessageManager.getString("label.take_snapshot"));
+    snapShotWindow.addActionListener(new ActionListener()
+    {
+      @Override
+      public void actionPerformed(ActionEvent e)
+      {
+        snapShotWindow_actionPerformed(e);
+      }
+    });
+
     desktopMenubar.add(FileMenu);
     desktopMenubar.add(toolsMenu);
     VamsasMenu.setVisible(false);
@@ -326,7 +442,9 @@ public class GDesktop extends JFrame
     FileMenu.add(inputSequence);
     FileMenu.addSeparator();
     FileMenu.add(saveState);
+    FileMenu.add(saveAsJaxb);
     FileMenu.add(loadState);
+    FileMenu.add(loadAsJaxb);
     FileMenu.addSeparator();
     FileMenu.add(quit);
     HelpMenu.add(aboutMenuItem);
@@ -342,6 +460,9 @@ public class GDesktop extends JFrame
     toolsMenu.add(showConsole);
     toolsMenu.add(showNews);
     toolsMenu.add(garbageCollect);
+    toolsMenu.add(groovyShell);
+    toolsMenu.add(experimentalFeatures);
+    // toolsMenu.add(snapShotWindow);
     inputMenu.add(inputLocalFileMenuItem);
     inputMenu.add(inputURLMenuItem);
     inputMenu.add(inputTextboxMenuItem);
@@ -352,16 +473,32 @@ public class GDesktop extends JFrame
     // inputMenu.add(vamsasLoad);
   }
 
+  protected void showExperimental_actionPerformed(boolean selected)
+  {
+  }
+
+  protected void groovyShell_actionPerformed()
+  {
+  }
+
+  protected void snapShotWindow_actionPerformed(ActionEvent e)
+  {
+    // TODO Auto-generated method stub
+
+  }
+
   protected void showConsole_actionPerformed(ActionEvent e)
   {
     // TODO Auto-generated method stub
 
   }
+
   protected void showNews_actionPerformed(ActionEvent e)
   {
     // TODO Auto-generated method stub
 
   }
+
   protected void showMemusage_actionPerformed(ActionEvent e)
   {
     // TODO Auto-generated method stub
@@ -398,9 +535,10 @@ public class GDesktop extends JFrame
    * 
    * @param e
    *          DOCUMENT ME!
+   * @throws FileFormatException
    */
   protected void inputURLMenuItem_actionPerformed(
-          jalview.gui.AlignViewport av)
+          jalview.gui.AlignViewport av) throws FileFormatException
   {
   }
 
@@ -411,7 +549,7 @@ public class GDesktop extends JFrame
    *          DOCUMENT ME!
    */
   protected void inputTextboxMenuItem_actionPerformed(
-          jalview.gui.AlignViewport av)
+          AlignmentViewPanel avp)
   {
   }
 
@@ -468,7 +606,7 @@ public class GDesktop extends JFrame
    * @param e
    *          DOCUMENT ME!
    */
-  public void saveState_actionPerformed(ActionEvent e)
+  public void saveState_actionPerformed(boolean asCastor)
   {
   }
 
@@ -478,7 +616,7 @@ public class GDesktop extends JFrame
    * @param e
    *          DOCUMENT ME!
    */
-  public void loadState_actionPerformed(ActionEvent e)
+  public void loadState_actionPerformed(boolean asCastor)
   {
   }