merge from 2_4_Release branch
[jalview.git] / src / jalview / gui / Desktop.java
index 10687cd..9a89b0a 100755 (executable)
@@ -1,17 +1,17 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer
- * Copyright (C) 2007 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle
- *
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.4)
+ * Copyright (C) 2008 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle
+ * 
  * This program 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 2
  * of the License, or (at your option) any later version.
- *
+ * 
  * This program 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 this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
@@ -33,29 +33,32 @@ import javax.swing.event.MenuListener;
 
 /**
  * DOCUMENT ME!
- *
+ * 
  * @author $author$
  * @version $Revision$
  */
-public class Desktop
-    extends jalview.jbgui.GDesktop implements DropTargetListener,
-    ClipboardOwner, IProgressIndicator
+public class Desktop extends jalview.jbgui.GDesktop implements
+        DropTargetListener, ClipboardOwner, IProgressIndicator
 {
   /** DOCUMENT ME!! */
   public static Desktop instance;
 
-  //Need to decide if the Memory Usage is to be included in
-  //Next release or not.
+  // Need to decide if the Memory Usage is to be included in
+  // Next release or not.
   public static MyDesktopPane desktop;
-  // public static JDesktopPane desktop;
 
+  // public static JDesktopPane desktop;
 
   static int openFrameCount = 0;
+
   static final int xOffset = 30;
+
   static final int yOffset = 30;
+
   public static jalview.ws.Discoverer discoverer;
 
   public static Object[] jalviewClipboard;
+
   public static boolean internalCopy = false;
 
   static int fileLoadingCount = 0;
@@ -66,18 +69,18 @@ public class Desktop
   public Desktop()
   {
     /**
-     * A note to implementors. It is ESSENTIAL that any 
-     * activities that might block are spawned off as threads rather 
-     * than waited for during this constructor.
+     * A note to implementors. It is ESSENTIAL that any activities that might
+     * block are spawned off as threads rather than waited for during this
+     * constructor.
      */
     instance = this;
     doVamsasClientCheck();
     doGroovyCheck();
 
-
     setTitle("Jalview " + jalview.bin.Cache.getProperty("VERSION"));
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
-    boolean selmemusage = jalview.bin.Cache.getDefault("SHOW_MEMUSAGE",false);
+    boolean selmemusage = jalview.bin.Cache.getDefault("SHOW_MEMUSAGE",
+            false);
     desktop = new MyDesktopPane(selmemusage);
     showMemusage.setSelected(selmemusage);
     desktop.setBackground(Color.white);
@@ -95,15 +98,15 @@ public class Desktop
     String width = jalview.bin.Cache.getProperty("SCREEN_WIDTH");
     String height = jalview.bin.Cache.getProperty("SCREEN_HEIGHT");
 
-    if ( (x != null) && (y != null) && (width != null) && (height != null))
+    if ((x != null) && (y != null) && (width != null) && (height != null))
     {
-      setBounds(Integer.parseInt(x), Integer.parseInt(y),
-                Integer.parseInt(width), Integer.parseInt(height));
+      setBounds(Integer.parseInt(x), Integer.parseInt(y), Integer
+              .parseInt(width), Integer.parseInt(height));
     }
     else
     {
-      setBounds( (int) (screenSize.width - 900) / 2,
-                (int) (screenSize.height - 650) / 2, 900, 650);
+      setBounds((int) (screenSize.width - 900) / 2,
+              (int) (screenSize.height - 650) / 2, 900, 650);
     }
 
     this.addWindowListener(new WindowAdapter()
@@ -115,24 +118,22 @@ public class Desktop
     });
 
     this.addMouseListener(new MouseAdapter()
+    {
+      public void mousePressed(MouseEvent evt)
+      {
+        if (SwingUtilities.isRightMouseButton(evt))
         {
-          public void mousePressed(MouseEvent evt)
-          {
-            if(SwingUtilities.isRightMouseButton(evt))
-            {
-              showPasteMenu(evt.getX(), evt.getY());
-            }
-          }
-        });
-
+          showPasteMenu(evt.getX(), evt.getY());
+        }
+      }
+    });
 
     this.setDropTarget(new java.awt.dnd.DropTarget(desktop, this));
     // Spawn a thread that shows the splashscreen
-    new SplashScreen();     
-
+    new SplashScreen();
 
-
-    discoverer = new jalview.ws.Discoverer(); // Only gets started if gui is displayed.
+    discoverer = new jalview.ws.Discoverer(); // Only gets started if gui is
+                                              // displayed.
   }
 
   private void doVamsasClientCheck()
@@ -142,14 +143,16 @@ public class Desktop
       setupVamsasDisconnectedGui();
       VamsasMenu.setVisible(true);
       final Desktop us = this;
-      VamsasMenu.addMenuListener(new MenuListener() {
+      VamsasMenu.addMenuListener(new MenuListener()
+      {
         // this listener remembers when the menu was first selected, and
         // doesn't rebuild the session list until it has been cleared and
         // reselected again.
-        boolean refresh=true;
+        boolean refresh = true;
+
         public void menuCanceled(MenuEvent e)
         {
-          refresh=true;
+          refresh = true;
         }
 
         public void menuDeselected(MenuEvent e)
@@ -162,7 +165,7 @@ public class Desktop
           if (refresh)
           {
             us.buildVamsasStMenu();
-            refresh=false;
+            refresh = false;
           }
         }
       });
@@ -196,50 +199,61 @@ public class Desktop
       if (contents != null)
       {
         String file = (String) contents
-            .getTransferData(DataFlavor.stringFlavor);
+                .getTransferData(DataFlavor.stringFlavor);
 
         String format = new IdentifyFile().Identify(file,
-                                                    FormatAdapter.PASTE);
+                FormatAdapter.PASTE);
 
         new FileLoader().LoadFile(file, FormatAdapter.PASTE, format);
 
       }
-    }
-    catch (Exception ex)
+    } catch (Exception ex)
     {
-      System.out.println("Unable to paste alignment from system clipboard:\n"
-                         + ex);
+      System.out
+              .println("Unable to paste alignment from system clipboard:\n"
+                      + ex);
     }
   }
 
   /**
    * DOCUMENT ME!
-   *
-   * @param frame DOCUMENT ME!
-   * @param title DOCUMENT ME!
-   * @param w DOCUMENT ME!
-   * @param h DOCUMENT ME!
+   * 
+   * @param frame
+   *                DOCUMENT ME!
+   * @param title
+   *                DOCUMENT ME!
+   * @param w
+   *                DOCUMENT ME!
+   * @param h
+   *                DOCUMENT ME!
    */
-  public static synchronized void addInternalFrame(final JInternalFrame frame,
-      String title, int w, int h)
+  public static synchronized void addInternalFrame(
+          final JInternalFrame frame, String title, int w, int h)
   {
     addInternalFrame(frame, title, w, h, true);
   }
 
   /**
    * DOCUMENT ME!
-   *
-   * @param frame DOCUMENT ME!
-   * @param title DOCUMENT ME!
-   * @param w DOCUMENT ME!
-   * @param h DOCUMENT ME!
-   * @param resizable DOCUMENT ME!
+   * 
+   * @param frame
+   *                DOCUMENT ME!
+   * @param title
+   *                DOCUMENT ME!
+   * @param w
+   *                DOCUMENT ME!
+   * @param h
+   *                DOCUMENT ME!
+   * @param resizable
+   *                DOCUMENT ME!
    */
-  public static synchronized void addInternalFrame(final JInternalFrame frame,
-      String title, int w, int h, boolean resizable)
+  public static synchronized void addInternalFrame(
+          final JInternalFrame frame, String title, int w, int h,
+          boolean resizable)
   {
 
-    // TODO: consider fixing method to update entries in the window submenu with the current window title 
+    // TODO: consider fixing method to update entries in the window submenu with
+    // the current window title
 
     frame.setTitle(title);
     if (frame.getWidth() < 1 || frame.getHeight() < 1)
@@ -249,9 +263,9 @@ public class Desktop
     // THIS IS A PUBLIC STATIC METHOD, SO IT MAY BE CALLED EVEN IN
     // A HEADLESS STATE WHEN NO DESKTOP EXISTS. MUST RETURN
     // IF JALVIEW IS RUNNING HEADLESS
-    /////////////////////////////////////////////////
+    // ///////////////////////////////////////////////
     if (System.getProperty("java.awt.headless") != null
-        && System.getProperty("java.awt.headless").equals("true"))
+            && System.getProperty("java.awt.headless").equals("true"))
     {
       return;
     }
@@ -267,39 +281,39 @@ public class Desktop
 
     if (frame.getX() < 1 && frame.getY() < 1)
     {
-      frame.setLocation(xOffset * openFrameCount,
-                        yOffset * ( (openFrameCount - 1) % 10) + yOffset);
+      frame.setLocation(xOffset * openFrameCount, yOffset
+              * ((openFrameCount - 1) % 10) + yOffset);
     }
 
     final JMenuItem menuItem = new JMenuItem(title);
-    frame.addInternalFrameListener(new javax.swing.event.InternalFrameAdapter()
-    {
-      public void internalFrameActivated(javax.swing.event.
-                                         InternalFrameEvent evt)
-      {
-        JInternalFrame itf = desktop.getSelectedFrame();
-        if (itf != null)
-        {
-          itf.requestFocus();
-        }
+    frame
+            .addInternalFrameListener(new javax.swing.event.InternalFrameAdapter()
+            {
+              public void internalFrameActivated(
+                      javax.swing.event.InternalFrameEvent evt)
+              {
+                JInternalFrame itf = desktop.getSelectedFrame();
+                if (itf != null)
+                {
+                  itf.requestFocus();
+                }
 
-      }
+              }
 
-      public void internalFrameClosed(
-          javax.swing.event.InternalFrameEvent evt)
-      {
-        PaintRefresher.RemoveComponent(frame);
-        openFrameCount--;
-        windowMenu.remove(menuItem);
-        JInternalFrame itf = desktop.getSelectedFrame();
-        if (itf != null)
-        {
-          itf.requestFocus();
-        }
-        System.gc();
-      }
-      ;
-    });
+              public void internalFrameClosed(
+                      javax.swing.event.InternalFrameEvent evt)
+              {
+                PaintRefresher.RemoveComponent(frame);
+                openFrameCount--;
+                windowMenu.remove(menuItem);
+                JInternalFrame itf = desktop.getSelectedFrame();
+                if (itf != null)
+                {
+                  itf.requestFocus();
+                }
+                System.gc();
+              };
+            });
 
     menuItem.addActionListener(new ActionListener()
     {
@@ -309,8 +323,7 @@ public class Desktop
         {
           frame.setSelected(true);
           frame.setIcon(false);
-        }
-        catch (java.beans.PropertyVetoException ex)
+        } catch (java.beans.PropertyVetoException ex)
         {
 
         }
@@ -325,9 +338,9 @@ public class Desktop
     {
       frame.setSelected(true);
       frame.requestFocus();
+    } catch (java.beans.PropertyVetoException ve)
+    {
     }
-    catch (java.beans.PropertyVetoException ve)
-    {}
   }
 
   public void lostOwnership(Clipboard clipboard, Transferable contents)
@@ -341,21 +354,26 @@ public class Desktop
   }
 
   public void dragEnter(DropTargetDragEvent evt)
-  {}
+  {
+  }
 
   public void dragExit(DropTargetEvent evt)
-  {}
+  {
+  }
 
   public void dragOver(DropTargetDragEvent evt)
-  {}
+  {
+  }
 
   public void dropActionChanged(DropTargetDragEvent evt)
-  {}
+  {
+  }
 
   /**
    * DOCUMENT ME!
-   *
-   * @param evt DOCUMENT ME!
+   * 
+   * @param evt
+   *                DOCUMENT ME!
    */
   public void drop(DropTargetDropEvent evt)
   {
@@ -365,13 +383,13 @@ public class Desktop
     try
     {
       DataFlavor uriListFlavor = new DataFlavor(
-          "text/uri-list;class=java.lang.String");
+              "text/uri-list;class=java.lang.String");
       if (t.isDataFlavorSupported(DataFlavor.javaFileListFlavor))
       {
-        //Works on Windows and MacOSX
+        // Works on Windows and MacOSX
         evt.acceptDrop(DnDConstants.ACTION_COPY_OR_MOVE);
-        files = (java.util.List) t.getTransferData(DataFlavor.
-            javaFileListFlavor);
+        files = (java.util.List) t
+                .getTransferData(DataFlavor.javaFileListFlavor);
       }
       else if (t.isDataFlavorSupported(uriListFlavor))
       {
@@ -380,9 +398,7 @@ public class Desktop
         String data = (String) t.getTransferData(uriListFlavor);
         files = new java.util.ArrayList(1);
         for (java.util.StringTokenizer st = new java.util.StringTokenizer(
-            data,
-            "\r\n");
-             st.hasMoreTokens(); )
+                data, "\r\n"); st.hasMoreTokens();)
         {
           String s = st.nextToken();
           if (s.startsWith("#"))
@@ -396,9 +412,9 @@ public class Desktop
           files.add(file);
         }
       }
+    } catch (Exception e)
+    {
     }
-    catch (Exception e)
-    {}
 
     if (files != null)
     {
@@ -417,31 +433,30 @@ public class Desktop
           }
           else
           {
-            format = new IdentifyFile().Identify(file,
-                                                 protocol);
+            format = new IdentifyFile().Identify(file, protocol);
           }
 
           new FileLoader().LoadFile(file, protocol, format);
 
         }
+      } catch (Exception ex)
+      {
       }
-      catch (Exception ex)
-      {}
     }
   }
 
   /**
    * DOCUMENT ME!
-   *
-   * @param e DOCUMENT ME!
+   * 
+   * @param e
+   *                DOCUMENT ME!
    */
   public void inputLocalFileMenuItem_actionPerformed(AlignViewport viewport)
   {
-    JalviewFileChooser chooser = new JalviewFileChooser(jalview.bin.Cache.
-        getProperty(
-            "LAST_DIRECTORY"),
+    JalviewFileChooser chooser = new JalviewFileChooser(jalview.bin.Cache
+            .getProperty("LAST_DIRECTORY"),
             jalview.io.AppletFormatAdapter.READABLE_EXTENSIONS,
-            jalview.io.AppletFormatAdapter.READABLE_FNAMES, 
+            jalview.io.AppletFormatAdapter.READABLE_FNAMES,
             jalview.bin.Cache.getProperty("DEFAULT_FILE_FORMAT"));
 
     chooser.setFileView(new JalviewFileView());
@@ -453,8 +468,8 @@ public class Desktop
     if (value == JalviewFileChooser.APPROVE_OPTION)
     {
       String choice = chooser.getSelectedFile().getPath();
-      jalview.bin.Cache.setProperty("LAST_DIRECTORY",
-                                    chooser.getSelectedFile().getParent());
+      jalview.bin.Cache.setProperty("LAST_DIRECTORY", chooser
+              .getSelectedFile().getParent());
 
       String format = null;
       if (chooser.getSelectedFormat().equals("Jalview"))
@@ -468,7 +483,8 @@ public class Desktop
 
       if (viewport != null)
       {
-        new FileLoader().LoadFile(viewport, choice, FormatAdapter.FILE, format);
+        new FileLoader().LoadFile(viewport, choice, FormatAdapter.FILE,
+                format);
       }
       else
       {
@@ -479,8 +495,9 @@ public class Desktop
 
   /**
    * DOCUMENT ME!
-   *
-   * @param e DOCUMENT ME!
+   * 
+   * @param e
+   *                DOCUMENT ME!
    */
   public void inputURLMenuItem_actionPerformed(AlignViewport viewport)
   {
@@ -510,9 +527,8 @@ public class Desktop
       }
     }
 
-    int reply = JOptionPane.showInternalConfirmDialog(desktop,
-        panel, "Input Alignment From URL",
-        JOptionPane.OK_CANCEL_OPTION);
+    int reply = JOptionPane.showInternalConfirmDialog(desktop, panel,
+            "Input Alignment From URL", JOptionPane.OK_CANCEL_OPTION);
 
     if (reply != JOptionPane.OK_OPTION)
     {
@@ -525,7 +541,8 @@ public class Desktop
     {
       if (viewport != null)
       {
-        new FileLoader().LoadFile(viewport, url, FormatAdapter.URL, "Jalview");
+        new FileLoader().LoadFile(viewport, url, FormatAdapter.URL,
+                "Jalview");
       }
       else
       {
@@ -539,9 +556,8 @@ public class Desktop
       if (format.equals("URL NOT FOUND"))
       {
         JOptionPane.showInternalMessageDialog(Desktop.desktop,
-                                              "Couldn't locate " + url,
-                                              "URL not found",
-                                              JOptionPane.WARNING_MESSAGE);
+                "Couldn't locate " + url, "URL not found",
+                JOptionPane.WARNING_MESSAGE);
 
         return;
       }
@@ -559,8 +575,9 @@ public class Desktop
 
   /**
    * DOCUMENT ME!
-   *
-   * @param e DOCUMENT ME!
+   * 
+   * @param e
+   *                DOCUMENT ME!
    */
   public void inputTextboxMenuItem_actionPerformed(AlignViewport viewport)
   {
@@ -583,47 +600,45 @@ public class Desktop
 
   /**
    * DOCUMENT ME!
-   *
-   * @param e DOCUMENT ME!
+   * 
+   * @param e
+   *                DOCUMENT ME!
    */
   public void aboutMenuItem_actionPerformed(ActionEvent e)
   {
-    StringBuffer message = new StringBuffer("Jalview version " +
-                                            jalview.bin.Cache.getProperty(
-                                                "VERSION") +
-                                            "; last updated: " +
-                                            jalview.bin.
-                                            Cache.getDefault("BUILD_DATE",
-        "unknown"));
+    StringBuffer message = new StringBuffer("Jalview version "
+            + jalview.bin.Cache.getProperty("VERSION") + "; last updated: "
+            + jalview.bin.Cache.getDefault("BUILD_DATE", "unknown"));
 
     if (!jalview.bin.Cache.getProperty("LATEST_VERSION").equals(
-        jalview.bin.Cache.getProperty("VERSION")))
+            jalview.bin.Cache.getProperty("VERSION")))
     {
-      message.append("\n\n!! Jalview version "
-                     + jalview.bin.Cache.getProperty("LATEST_VERSION")
-                     +
-          " is available for download from http://www.jalview.org !!\n");
+      message
+              .append("\n\n!! Jalview version "
+                      + jalview.bin.Cache.getProperty("LATEST_VERSION")
+                      + " is available for download from http://www.jalview.org !!\n");
 
     }
-
-    message.append("\nAuthors:  Michele Clamp, James Cuff, Steve Searle, Andrew Waterhouse, Jim Procter & Geoff Barton." +
-                   "\nDevelopment managed by The Barton Group, University of Dundee.\n"+
-                   "\nFor specific issues relating to Jalview, email help@jalview.org\n"+
-                   " or join the jalview-discuss@jalview.org mailing list" +
-                   "\n\nIf  you use Jalview, please cite:" +
-                   "\n\"Clamp, M., Cuff, J., Searle, S. M. and Barton, G. J. (2004), The Jalview Java Alignment Editor\"" +
-                   "\nBioinformatics,  2004 20;426-7.");
+    // TODO: update this text for each release or centrally store it for lite
+    // and application
+    message
+            .append("\nAuthors:  Andrew Waterhouse, Jim Procter, Michele Clamp, James Cuff, Steve Searle,\n    David Martin & Geoff Barton."
+                    + "\nDevelopment managed by The Barton Group, University of Dundee, Scotland, UK.\n"
+                    + "\nFor help, see the FAQ at www.jalview.org and/or join the jalview-discuss@jalview.org mailing list\n"
+                    + "\nIf  you use Jalview, please cite:"
+                    + "\n\"Clamp, M., Cuff, J., Searle, S. M. and Barton, G. J. (2004), The Jalview Java Alignment Editor\""
+                    + "\nBioinformatics,  2004 20;426-7.");
 
     JOptionPane.showInternalMessageDialog(Desktop.desktop,
 
-                                          message.toString(), "About Jalview",
-                                          JOptionPane.INFORMATION_MESSAGE);
+    message.toString(), "About Jalview", JOptionPane.INFORMATION_MESSAGE);
   }
 
   /**
    * DOCUMENT ME!
-   *
-   * @param e DOCUMENT ME!
+   * 
+   * @param e
+   *                DOCUMENT ME!
    */
   public void documentationMenuItem_actionPerformed(ActionEvent e)
   {
@@ -636,9 +651,9 @@ public class Desktop
       javax.help.HelpBroker hb = hs.createHelpBroker();
       hb.setCurrentID("home");
       hb.setDisplayed(true);
+    } catch (Exception ex)
+    {
     }
-    catch (Exception ex)
-    {}
   }
 
   public void closeAll_actionPerformed(ActionEvent e)
@@ -649,9 +664,9 @@ public class Desktop
       try
       {
         frames[i].setClosed(true);
+      } catch (java.beans.PropertyVetoException ex)
+      {
       }
-      catch (java.beans.PropertyVetoException ex)
-      {}
     }
     System.out.println("ALL CLOSED");
 
@@ -672,7 +687,9 @@ public class Desktop
     reorderAssociatedWindows(false, true);
   }
 
-  /* (non-Javadoc)
+  /*
+   * (non-Javadoc)
+   * 
    * @see jalview.jbgui.GDesktop#garbageCollect_actionPerformed(java.awt.event.ActionEvent)
    */
   protected void garbageCollect_actionPerformed(ActionEvent e)
@@ -683,7 +700,9 @@ public class Desktop
     jalview.bin.Cache.log.debug("Finished garbage collection.");
   }
 
-  /* (non-Javadoc)
+  /*
+   * (non-Javadoc)
+   * 
    * @see jalview.jbgui.GDesktop#showMemusage_actionPerformed(java.awt.event.ActionEvent)
    */
   protected void showMemusage_actionPerformed(ActionEvent e)
@@ -702,19 +721,19 @@ public class Desktop
     AlignViewport source = null, target = null;
     if (frames[0] instanceof AlignFrame)
     {
-      source = ( (AlignFrame) frames[0]).getCurrentView();
+      source = ((AlignFrame) frames[0]).getCurrentView();
     }
     else if (frames[0] instanceof TreePanel)
     {
-      source = ( (TreePanel) frames[0]).getViewPort();
+      source = ((TreePanel) frames[0]).getViewPort();
     }
     else if (frames[0] instanceof PCAPanel)
     {
-      source = ( (PCAPanel) frames[0]).av;
+      source = ((PCAPanel) frames[0]).av;
     }
     else if (frames[0].getContentPane() instanceof PairwiseAlignPanel)
     {
-      source = ( (PairwiseAlignPanel) frames[0].getContentPane()).av;
+      source = ((PairwiseAlignPanel) frames[0].getContentPane()).av;
     }
 
     if (source != null)
@@ -728,19 +747,19 @@ public class Desktop
         }
         if (frames[i] instanceof AlignFrame)
         {
-          target = ( (AlignFrame) frames[i]).getCurrentView();
+          target = ((AlignFrame) frames[i]).getCurrentView();
         }
         else if (frames[i] instanceof TreePanel)
         {
-          target = ( (TreePanel) frames[i]).getViewPort();
+          target = ((TreePanel) frames[i]).getViewPort();
         }
         else if (frames[i] instanceof PCAPanel)
         {
-          target = ( (PCAPanel) frames[i]).av;
+          target = ((PCAPanel) frames[i]).av;
         }
         else if (frames[i].getContentPane() instanceof PairwiseAlignPanel)
         {
-          target = ( (PairwiseAlignPanel) frames[i].getContentPane()).av;
+          target = ((PairwiseAlignPanel) frames[i].getContentPane()).av;
         }
 
         if (source == target)
@@ -760,17 +779,19 @@ public class Desktop
               }
             }
 
+          } catch (java.beans.PropertyVetoException ex)
+          {
           }
-          catch (java.beans.PropertyVetoException ex)
-          {}
         }
       }
     }
   }
+
   /**
    * DOCUMENT ME!
-   *
-   * @param e DOCUMENT ME!
+   * 
+   * @param e
+   *                DOCUMENT ME!
    */
   protected void preferences_actionPerformed(ActionEvent e)
   {
@@ -779,17 +800,16 @@ public class Desktop
 
   /**
    * DOCUMENT ME!
-   *
-   * @param e DOCUMENT ME!
+   * 
+   * @param e
+   *                DOCUMENT ME!
    */
   public void saveState_actionPerformed(ActionEvent e)
   {
-    JalviewFileChooser chooser = new JalviewFileChooser(jalview.bin.Cache.
-        getProperty(
-            "LAST_DIRECTORY"), new String[]
-        {"jar"},
-        new String[]
-        {"Jalview Project"}, "Jalview Project");
+    JalviewFileChooser chooser = new JalviewFileChooser(jalview.bin.Cache
+            .getProperty("LAST_DIRECTORY"), new String[]
+    { "jar" }, new String[]
+    { "Jalview Project" }, "Jalview Project");
 
     chooser.setFileView(new JalviewFileView());
     chooser.setDialogTitle("Save State");
@@ -806,17 +826,16 @@ public class Desktop
 
   /**
    * DOCUMENT ME!
-   *
-   * @param e DOCUMENT ME!
+   * 
+   * @param e
+   *                DOCUMENT ME!
    */
   public void loadState_actionPerformed(ActionEvent e)
   {
-    JalviewFileChooser chooser = new JalviewFileChooser(jalview.bin.Cache.
-        getProperty(
-            "LAST_DIRECTORY"), new String[]
-        {"jar"},
-        new String[]
-        {"Jalview Project"}, "Jalview Project");
+    JalviewFileChooser chooser = new JalviewFileChooser(jalview.bin.Cache
+            .getProperty("LAST_DIRECTORY"), new String[]
+    { "jar" }, new String[]
+    { "Jalview Project" }, "Jalview Project");
     chooser.setFileView(new JalviewFileView());
     chooser.setDialogTitle("Restore state");
 
@@ -825,8 +844,8 @@ public class Desktop
     if (value == JalviewFileChooser.APPROVE_OPTION)
     {
       String choice = chooser.getSelectedFile().getAbsolutePath();
-      jalview.bin.Cache.setProperty("LAST_DIRECTORY",
-                                    chooser.getSelectedFile().getParent());
+      jalview.bin.Cache.setProperty("LAST_DIRECTORY", chooser
+              .getSelectedFile().getParent());
       new Jalview2XML().LoadJalviewAlign(choice);
     }
   }
@@ -843,22 +862,22 @@ public class Desktop
     if (fileLoadingCount == 0)
     {
       addProgressPanel("Loading File: " + fileName + "   ");
-      
+
     }
     fileLoadingCount++;
   }
+
   private JProgressBar addProgressPanel(String string)
   {
-    if (progressPanel==null)
+    if (progressPanel == null)
     {
       progressPanel = new JPanel(new BorderLayout());
-      totalProgressCount=0;
+      totalProgressCount = 0;
     }
     JProgressBar progressBar = new JProgressBar();
     progressBar.setIndeterminate(true);
 
-    progressPanel.add(new JLabel(string),
-                      BorderLayout.WEST);
+    progressPanel.add(new JLabel(string), BorderLayout.WEST);
 
     progressPanel.add(progressBar, BorderLayout.CENTER);
 
@@ -867,13 +886,15 @@ public class Desktop
     validate();
     return progressBar;
   }
-  int totalProgressCount=0;
+
+  int totalProgressCount = 0;
+
   private void removeProgressPanel(JProgressBar progbar)
   {
-    if (progressPanel!=null)
+    if (progressPanel != null)
     {
       progressPanel.remove(progbar);
-      if (--totalProgressCount<1)
+      if (--totalProgressCount < 1)
       {
         this.getContentPane().remove(progressPanel);
         progressPanel = null;
@@ -881,6 +902,7 @@ public class Desktop
     }
     validate();
   }
+
   public void stopLoading()
   {
     fileLoadingCount--;
@@ -895,6 +917,7 @@ public class Desktop
     }
     validate();
   }
+
   public static int getViewCount(String viewId)
   {
     int count = 0;
@@ -906,10 +929,9 @@ public class Desktop
         AlignFrame af = (AlignFrame) frames[t];
         for (int a = 0; a < af.alignPanels.size(); a++)
         {
-          if (viewId.equals(
-              ( (AlignmentPanel) af.alignPanels.elementAt(a)).av.
-              getSequenceSetId())
-              )
+          if (viewId
+                  .equals(((AlignmentPanel) af.alignPanels.elementAt(a)).av
+                          .getSequenceSetId()))
           {
             count++;
           }
@@ -932,17 +954,16 @@ public class Desktop
     {
       AlignmentPanel ap = (AlignmentPanel) af.alignPanels.elementAt(i);
       AlignFrame newaf = new AlignFrame(ap);
-      if (ap.av.explodedPosition != null &&
-          !ap.av.explodedPosition.equals(af.getBounds()))
+      if (ap.av.explodedPosition != null
+              && !ap.av.explodedPosition.equals(af.getBounds()))
       {
         newaf.setBounds(ap.av.explodedPosition);
       }
 
       ap.av.gatherViewsHere = false;
 
-      addInternalFrame(newaf, af.getTitle(),
-                       AlignFrame.DEFAULT_WIDTH,
-                       AlignFrame.DEFAULT_HEIGHT);
+      addInternalFrame(newaf, af.getTitle(), AlignFrame.DEFAULT_WIDTH,
+              AlignFrame.DEFAULT_HEIGHT);
     }
 
     af.alignPanels.clear();
@@ -986,35 +1007,43 @@ public class Desktop
   }
 
   jalview.gui.VamsasApplication v_client = null;
+
   public void vamsasImport_actionPerformed(ActionEvent e)
   {
-    if (v_client==null)
+    if (v_client == null)
     {
       // Load and try to start a session.
-      JalviewFileChooser chooser = new JalviewFileChooser(jalview.bin.Cache.
-          getProperty("LAST_DIRECTORY"));
+      JalviewFileChooser chooser = new JalviewFileChooser(jalview.bin.Cache
+              .getProperty("LAST_DIRECTORY"));
 
       chooser.setFileView(new JalviewFileView());
       chooser.setDialogTitle("Open a saved VAMSAS session");
-      chooser.setToolTipText("select a vamsas session to be opened as a new vamsas session.");
+      chooser
+              .setToolTipText("select a vamsas session to be opened as a new vamsas session.");
 
       int value = chooser.showOpenDialog(this);
 
       if (value == JalviewFileChooser.APPROVE_OPTION)
       {
-        try {
-          v_client = new jalview.gui.VamsasApplication(this,
-                                                chooser.getSelectedFile());
+        try
+        {
+          v_client = new jalview.gui.VamsasApplication(this, chooser
+                  .getSelectedFile());
         } catch (Exception ex)
         {
-          jalview.bin.Cache.log.error("New vamsas session from existing session file failed:",ex);
+          jalview.bin.Cache.log.error(
+                  "New vamsas session from existing session file failed:",
+                  ex);
           return;
         }
         setupVamsasConnectedGui();
         v_client.initial_update(); // TODO: thread ?
       }
-    }else {
-      jalview.bin.Cache.log.error("Implementation error - load session from a running session is not supported.");
+    }
+    else
+    {
+      jalview.bin.Cache.log
+              .error("Implementation error - load session from a running session is not supported.");
     }
   }
 
@@ -1025,21 +1054,19 @@ public class Desktop
       // Start a session.
       // we just start a default session for moment.
       /*
-      JalviewFileChooser chooser = new JalviewFileChooser(jalview.bin.Cache.
-          getProperty("LAST_DIRECTORY"));
-
-      chooser.setFileView(new JalviewFileView());
-      chooser.setDialogTitle("Load Vamsas file");
-      chooser.setToolTipText("Import");
-
-      int value = chooser.showOpenDialog(this);
-
-      if (value == JalviewFileChooser.APPROVE_OPTION)
-      {
-        v_client = new jalview.gui.VamsasApplication(this,
-                                                chooser.getSelectedFile());
-                                                *
-                                                */
+       * JalviewFileChooser chooser = new JalviewFileChooser(jalview.bin.Cache.
+       * getProperty("LAST_DIRECTORY"));
+       * 
+       * chooser.setFileView(new JalviewFileView());
+       * chooser.setDialogTitle("Load Vamsas file");
+       * chooser.setToolTipText("Import");
+       * 
+       * int value = chooser.showOpenDialog(this);
+       * 
+       * if (value == JalviewFileChooser.APPROVE_OPTION) { v_client = new
+       * jalview.gui.VamsasApplication(this, chooser.getSelectedFile());
+       * 
+       */
       v_client = new VamsasApplication(this);
       setupVamsasConnectedGui();
       v_client.initial_update(); // TODO: thread ?
@@ -1056,8 +1083,10 @@ public class Desktop
     vamsasStart.setText("Session Update");
     vamsasSave.setVisible(true);
     vamsasStop.setVisible(true);
-    vamsasImport.setVisible(false); // Document import to existing session is not possible for vamsas-client-1.0.
+    vamsasImport.setVisible(false); // Document import to existing session is
+                                    // not possible for vamsas-client-1.0.
   }
+
   protected void setupVamsasDisconnectedGui()
   {
     vamsasSave.setVisible(false);
@@ -1075,6 +1104,7 @@ public class Desktop
       setupVamsasDisconnectedGui();
     }
   }
+
   protected void buildVamsasStMenu()
   {
     if (v_client == null)
@@ -1108,7 +1138,8 @@ public class Desktop
             {
               if (dsktp.v_client == null)
               {
-                Thread rthr = new Thread(new Runnable() {
+                Thread rthr = new Thread(new Runnable()
+                {
 
                   public void run()
                   {
@@ -1116,7 +1147,7 @@ public class Desktop
                     dsktp.setupVamsasConnectedGui();
                     dsktp.v_client.initial_update();
                   }
-                  
+
                 });
                 rthr.start();
               }
@@ -1125,8 +1156,8 @@ public class Desktop
           VamsasStMenu.add(sessit);
         }
         // don't show an empty menu.
-        VamsasStMenu.setVisible(sess.length>0);
-        
+        VamsasStMenu.setVisible(sess.length > 0);
+
       }
       else
       {
@@ -1134,71 +1165,77 @@ public class Desktop
         VamsasStMenu.removeAll();
         VamsasStMenu.setVisible(false);
       }
-    } else {
+    }
+    else
+    {
       // Not interested in the content. Just hide ourselves.
       VamsasStMenu.setVisible(false);
     }
   }
+
   public void vamsasSave_actionPerformed(ActionEvent e)
   {
     if (v_client != null)
     {
-      JalviewFileChooser chooser = new JalviewFileChooser(jalview.bin.Cache.
-            getProperty(
-                "LAST_DIRECTORY"), new String[]
-            {"vdj"}, // TODO: VAMSAS DOCUMENT EXTENSION is VDJ
-            new String[]
-            {"Vamsas Document"}, "Vamsas Document");
+      JalviewFileChooser chooser = new JalviewFileChooser(jalview.bin.Cache
+              .getProperty("LAST_DIRECTORY"), new String[]
+      { "vdj" }, // TODO: VAMSAS DOCUMENT EXTENSION is VDJ
+              new String[]
+              { "Vamsas Document" }, "Vamsas Document");
 
-        chooser.setFileView(new JalviewFileView());
-        chooser.setDialogTitle("Save Vamsas Document Archive");
+      chooser.setFileView(new JalviewFileView());
+      chooser.setDialogTitle("Save Vamsas Document Archive");
 
-        int value = chooser.showSaveDialog(this);
+      int value = chooser.showSaveDialog(this);
 
-        if (value == JalviewFileChooser.APPROVE_OPTION)
+      if (value == JalviewFileChooser.APPROVE_OPTION)
+      {
+        java.io.File choice = chooser.getSelectedFile();
+        jalview.bin.Cache.setProperty("LAST_DIRECTORY", choice.getParent());
+        String warnmsg = null;
+        String warnttl = null;
+        try
         {
-          java.io.File choice = chooser.getSelectedFile();
-          jalview.bin.Cache.setProperty("LAST_DIRECTORY", choice.getParent());
-          String warnmsg=null;
-          String warnttl=null;
-          try {
-            v_client.vclient.storeDocument(choice);
-          }
-          catch (Error ex)
-          {
-            warnttl = "Serious Problem saving Vamsas Document";
-            warnmsg = ex.toString();
-            jalview.bin.Cache.log.error("Error Whilst saving document to "+choice,ex);
-            
-          }
-          catch (Exception ex)
-          {
-            warnttl = "Problem saving Vamsas Document.";
-            warnmsg = ex.toString();
-            jalview.bin.Cache.log.warn("Exception Whilst saving document to "+choice,ex);
-            
-          }
-          if (warnmsg!=null)
-          {
-            JOptionPane.showInternalMessageDialog(Desktop.desktop,
+          v_client.vclient.storeDocument(choice);
+        } catch (Error ex)
+        {
+          warnttl = "Serious Problem saving Vamsas Document";
+          warnmsg = ex.toString();
+          jalview.bin.Cache.log.error("Error Whilst saving document to "
+                  + choice, ex);
 
-                  warnmsg, warnttl,
-                  JOptionPane.ERROR_MESSAGE);
-          }
+        } catch (Exception ex)
+        {
+          warnttl = "Problem saving Vamsas Document.";
+          warnmsg = ex.toString();
+          jalview.bin.Cache.log.warn("Exception Whilst saving document to "
+                  + choice, ex);
+
+        }
+        if (warnmsg != null)
+        {
+          JOptionPane.showInternalMessageDialog(Desktop.desktop,
+
+          warnmsg, warnttl, JOptionPane.ERROR_MESSAGE);
         }
+      }
     }
   }
+
   JProgressBar vamUpdate = null;
+
   /**
    * hide vamsas user gui bits when a vamsas document event is being handled.
-   * @param b true to hide gui, false to reveal gui
+   * 
+   * @param b
+   *                true to hide gui, false to reveal gui
    */
   public void setVamsasUpdate(boolean b)
   {
-    jalview.bin.Cache.log.debug("Setting gui for Vamsas update " +
-                                (b ? "in progress" : "finished"));
-    
-    if (vamUpdate!=null)
+    jalview.bin.Cache.log.debug("Setting gui for Vamsas update "
+            + (b ? "in progress" : "finished"));
+
+    if (vamUpdate != null)
     {
       this.removeProgressPanel(vamUpdate);
     }
@@ -1216,32 +1253,37 @@ public class Desktop
     return desktop.getAllFrames();
   }
 
-
   /**
-   * Checks the given url to see if it gives a response indicating that
-   * the user should be informed of a new questionnaire.
+   * Checks the given url to see if it gives a response indicating that the user
+   * should be informed of a new questionnaire.
+   * 
    * @param url
    */
   public void checkForQuestionnaire(String url)
   {
     UserQuestionnaireCheck jvq = new UserQuestionnaireCheck(url);
-    //javax.swing.SwingUtilities.invokeLater(jvq);
+    // javax.swing.SwingUtilities.invokeLater(jvq);
     new Thread(jvq).start();
   }
+
   /**
-   * Proxy class for JDesktopPane which optionally 
-   * displays the current memory usage and highlights 
-   * the desktop area with a red bar if free memory runs low.
+   * Proxy class for JDesktopPane which optionally displays the current memory
+   * usage and highlights the desktop area with a red bar if free memory runs
+   * low.
+   * 
    * @author AMW
    */
-  public class  MyDesktopPane extends JDesktopPane implements Runnable
+  public class MyDesktopPane extends JDesktopPane implements Runnable
   {
-    
+
     boolean showMemoryUsage = false;
+
     Runtime runtime;
+
     java.text.NumberFormat df;
 
-    float maxMemory, allocatedMemory, freeMemory, totalFreeMemory, percentUsage;
+    float maxMemory, allocatedMemory, freeMemory, totalFreeMemory,
+            percentUsage;
 
     public MyDesktopPane(boolean showMemoryUsage)
     {
@@ -1257,10 +1299,12 @@ public class Desktop
         worker.start();
       }
     }
+
     public boolean isShowMemoryUsage()
     {
       return showMemoryUsage;
     }
+
     public void run()
     {
       df = java.text.NumberFormat.getNumberInstance();
@@ -1279,15 +1323,15 @@ public class Desktop
 
           percentUsage = (totalFreeMemory / maxMemory) * 100;
 
-        //  if (percentUsage < 20)
+          // if (percentUsage < 20)
           {
-            //   border1 = BorderFactory.createMatteBorder(12, 12, 12, 12, Color.red);
-            //    instance.set.setBorder(border1);
+            // border1 = BorderFactory.createMatteBorder(12, 12, 12, 12,
+            // Color.red);
+            // instance.set.setBorder(border1);
           }
           repaint();
 
-        }
-        catch (Exception ex)
+        } catch (Exception ex)
         {
           ex.printStackTrace();
         }
@@ -1296,124 +1340,142 @@ public class Desktop
 
     public void paintComponent(Graphics g)
     {
-      if(showMemoryUsage)
+      if (showMemoryUsage)
       {
         if (percentUsage < 20)
           g.setColor(Color.red);
 
         g.drawString("Total Free Memory: " + df.format(totalFreeMemory)
-                     + "MB; Max Memory: " + df.format(maxMemory)
-                     + "MB; " + df.format(percentUsage) + "%", 10,
-                     getHeight() - g.getFontMetrics().getHeight());
+                + "MB; Max Memory: " + df.format(maxMemory) + "MB; "
+                + df.format(percentUsage) + "%", 10, getHeight()
+                - g.getFontMetrics().getHeight());
       }
     }
 
-    
-    
   }
+
   protected JMenuItem groovyShell;
-  public void doGroovyCheck() {
+
+  public void doGroovyCheck()
+  {
     if (jalview.bin.Cache.groovyJarsPresent())
     {
       groovyShell = new JMenuItem();
       groovyShell.setText("Groovy Console...");
       groovyShell.addActionListener(new ActionListener()
       {
-          public void actionPerformed(ActionEvent e) {
-              groovyShell_actionPerformed(e);
-          }
+        public void actionPerformed(ActionEvent e)
+        {
+          groovyShell_actionPerformed(e);
+        }
       });
       toolsMenu.add(groovyShell);
       groovyShell.setVisible(true);
     }
   }
+
   /**
-   * Accessor method to quickly get all the AlignmentFrames
-   * loaded.
+   * Accessor method to quickly get all the AlignmentFrames loaded.
    */
-  public static AlignFrame[] getAlignframes() {
+  public static AlignFrame[] getAlignframes()
+  {
     JInternalFrame[] frames = Desktop.desktop.getAllFrames();
 
     if (frames == null)
     {
       return null;
-      }
-      Vector avp=new Vector();
-      try
-      {
-          //REVERSE ORDER
-          for (int i = frames.length - 1; i > -1; i--)
-          {
-              if (frames[i] instanceof AlignFrame)
-              {
-                  AlignFrame af = (AlignFrame) frames[i];
-                  avp.addElement(af);
-              }
-          }
-      }
-      catch (Exception ex)
-      {
-          ex.printStackTrace();
-      }
-      if (avp.size()==0)
+    }
+    Vector avp = new Vector();
+    try
+    {
+      // REVERSE ORDER
+      for (int i = frames.length - 1; i > -1; i--)
       {
-          return null;
-      }
-      AlignFrame afs[] = new AlignFrame[avp.size()];
-      for (int i=0,j=avp.size(); i<j; i++) {
-          afs[i] = (AlignFrame) avp.elementAt(i);
+        if (frames[i] instanceof AlignFrame)
+        {
+          AlignFrame af = (AlignFrame) frames[i];
+          avp.addElement(af);
+        }
       }
-      avp.clear();
-      return afs;
+    } catch (Exception ex)
+    {
+      ex.printStackTrace();
+    }
+    if (avp.size() == 0)
+    {
+      return null;
+    }
+    AlignFrame afs[] = new AlignFrame[avp.size()];
+    for (int i = 0, j = avp.size(); i < j; i++)
+    {
+      afs[i] = (AlignFrame) avp.elementAt(i);
+    }
+    avp.clear();
+    return afs;
   }
 
   /**
-    * Add Groovy Support to Jalview
-    */
-  public void groovyShell_actionPerformed(ActionEvent e) {
+   * Add Groovy Support to Jalview
+   */
+  public void groovyShell_actionPerformed(ActionEvent e)
+  {
     // use reflection to avoid creating compilation dependency.
     if (!jalview.bin.Cache.groovyJarsPresent())
     {
-      throw new Error("Implementation Error. Cannot create groovyShell without Groovy on the classpath!");
-    }
-    try {
-    Class gcClass = Desktop.class.getClassLoader().loadClass("groovy.ui.Console");
-    Constructor gccons = gcClass.getConstructor(null);
-    java.lang.reflect.Method setvar = gcClass.getMethod("setVariable", new Class[] { String.class, Object.class} );
-    java.lang.reflect.Method run = gcClass.getMethod("run", null);
-    Object gc = gccons.newInstance(null);
-    setvar.invoke(gc, new Object[] { "Jalview", this});
-    run.invoke(gc, null);
+      throw new Error(
+              "Implementation Error. Cannot create groovyShell without Groovy on the classpath!");
     }
-    catch (Exception ex)
+    try
     {
-      jalview.bin.Cache.log.error("Groovy Shell Creation failed.",ex);
-      JOptionPane.showInternalMessageDialog(Desktop.desktop,
-
-              "Couldn't create the groovy Shell. Check the error log for the details of what went wrong.", "Jalview Groovy Support Failed",
-              JOptionPane.ERROR_MESSAGE);
+      Class gcClass = Desktop.class.getClassLoader().loadClass(
+              "groovy.ui.Console");
+      Constructor gccons = gcClass.getConstructor(null);
+      java.lang.reflect.Method setvar = gcClass.getMethod("setVariable",
+              new Class[]
+              { String.class, Object.class });
+      java.lang.reflect.Method run = gcClass.getMethod("run", null);
+      Object gc = gccons.newInstance(null);
+      setvar.invoke(gc, new Object[]
+      { "Jalview", this });
+      run.invoke(gc, null);
+    } catch (Exception ex)
+    {
+      jalview.bin.Cache.log.error("Groovy Shell Creation failed.", ex);
+      JOptionPane
+              .showInternalMessageDialog(
+                      Desktop.desktop,
+
+                      "Couldn't create the groovy Shell. Check the error log for the details of what went wrong.",
+                      "Jalview Groovy Support Failed",
+                      JOptionPane.ERROR_MESSAGE);
     }
   }
 
   /**
-   *  Progress bars managed by the IProgressIndicator method.
+   * Progress bars managed by the IProgressIndicator method.
    */
   private Hashtable progressBars;
-  /* (non-Javadoc)
+
+  /*
+   * (non-Javadoc)
+   * 
    * @see jalview.gui.IProgressIndicator#setProgressBar(java.lang.String, long)
    */
   public void setProgressBar(String message, long id)
   {
-    if(progressBars == null)
+    if (progressBars == null)
     {
       progressBars = new Hashtable();
     }
 
-    if(progressBars.get( new Long(id) )!=null)
+    if (progressBars.get(new Long(id)) != null)
+    {
+      JProgressBar progressPanel = (JProgressBar) progressBars
+              .remove(new Long(id));
+      removeProgressPanel(progressPanel);
+    }
+    else
     {
-      JProgressBar progressPanel = (JProgressBar)progressBars.remove( new Long(id) );
-       removeProgressPanel(progressPanel);
-    } else {
       progressBars.put(new Long(id), addProgressPanel(message));
     }
   }