JAL-1385 expose core view model methods in interface
[jalview.git] / src / jalview / gui / AlignFrame.java
index 8396e6a..829b9ab 100755 (executable)
@@ -1,18 +1,18 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.7)
- * Copyright (C) 2011 J Procter, AM Waterhouse, J Engelhardt, LM Lui, G Barton, M Clamp, S Searle
- *
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8)
+ * Copyright (C) 2012 J Procter, AM Waterhouse, LM Lui, J Engelhardt, G Barton, M Clamp, S Searle
+ * 
  * 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
+ * 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.
- *
- * 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
+ *  
+ * 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/>.
  */
 package jalview.gui;
@@ -77,6 +77,7 @@ import jalview.schemes.UserColourScheme;
 import jalview.schemes.ZappoColourScheme;
 import jalview.ws.jws1.Discoverer;
 import jalview.ws.jws2.Jws2Discoverer;
+import jalview.ws.jws2.jabaws2.Jws2Instance;
 import jalview.ws.seqfetcher.DbSourceProxy;
 
 import java.awt.BorderLayout;
@@ -127,7 +128,7 @@ import javax.swing.SwingUtilities;
 
 /**
  * DOCUMENT ME!
- *
+ * 
  * @author $author$
  * @version $Revision$
  */
@@ -159,7 +160,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /**
    * Creates a new AlignFrame object with specific width and height.
-   *
+   * 
    * @param al
    * @param width
    * @param height
@@ -172,7 +173,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
   /**
    * Creates a new AlignFrame object with specific width, height and
    * sequenceSetId
-   *
+   * 
    * @param al
    * @param width
    * @param height
@@ -187,7 +188,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
   /**
    * Creates a new AlignFrame object with specific width, height and
    * sequenceSetId
-   *
+   * 
    * @param al
    * @param width
    * @param height
@@ -202,7 +203,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /**
    * new alignment window with hidden columns
-   *
+   * 
    * @param al
    *          AlignmentI
    * @param hiddenColumns
@@ -221,7 +222,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
   /**
    * Create alignment frame for al with hiddenColumns, a specific width and
    * height, and specific sequenceId
-   *
+   * 
    * @param al
    * @param hiddenColumns
    * @param width
@@ -238,7 +239,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
   /**
    * Create alignment frame for al with hiddenColumns, a specific width and
    * height, and specific sequenceId
-   *
+   * 
    * @param al
    * @param hiddenColumns
    * @param width
@@ -267,7 +268,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /**
    * Make a new AlignFrame from exisiting alignmentPanels
-   *
+   * 
    * @param ap
    *          AlignmentPanel
    * @param av
@@ -335,7 +336,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
   /**
    * Change the filename and format for the alignment, and enable the 'reload'
    * button functionality.
-   *
+   * 
    * @param file
    *          valid filename
    * @param format
@@ -691,7 +692,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
   /**
    * Need to call this method when tabs are selected for multiple views, or when
    * loading from Jalview2XML.java
-   *
+   * 
    * @param av
    *          AlignViewport
    */
@@ -737,13 +738,14 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
     updateEditMenuBar();
   }
+
   // methods for implementing IProgressIndicator
   // need to refactor to a reusable stub class
   Hashtable progressBars, progressBarHandlers;
 
   /*
    * (non-Javadoc)
-   *
+   * 
    * @see jalview.gui.IProgressIndicator#setProgressBar(java.lang.String, long)
    */
   @Override
@@ -827,7 +829,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
   }
 
   /**
-   *
+   * 
    * @return true if any progress bars are still active
    */
   @Override
@@ -880,7 +882,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
         for (int i = 0; i < frames.length; i++)
         {
           if (frames[i] instanceof AlignFrame && frames[i] != this
-                  && ((AlignFrame) frames[i]).fileName!=null && ((AlignFrame) frames[i]).fileName.equals(fileName))
+                  && ((AlignFrame) frames[i]).fileName != null
+                  && ((AlignFrame) frames[i]).fileName.equals(fileName))
           {
             try
             {
@@ -961,7 +964,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /**
    * DOCUMENT ME!
-   *
+   * 
    * @param e
    *          DOCUMENT ME!
    */
@@ -1057,8 +1060,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
         }
       }
       FormatAdapter f = new FormatAdapter();
-      String output = f.formatSequences(
-              format,
+      String output = f.formatSequences(format,
               viewport.getAlignment(), // class cast exceptions will
               // occur in the distant future
               omitHidden, f.getCacheSuffixDefault(format),
@@ -1114,7 +1116,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /**
    * DOCUMENT ME!
-   *
+   * 
    * @param e
    *          DOCUMENT ME!
    */
@@ -1160,7 +1162,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /**
    * DOCUMENT ME!
-   *
+   * 
    * @param e
    *          DOCUMENT ME!
    */
@@ -1179,7 +1181,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /**
    * DOCUMENT ME!
-   *
+   * 
    * @param e
    *          DOCUMENT ME!
    */
@@ -1191,7 +1193,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /**
    * DOCUMENT ME!
-   *
+   * 
    * @param e
    *          DOCUMENT ME!
    */
@@ -1210,7 +1212,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /**
    * DOCUMENT ME!
-   *
+   * 
    * @param e
    *          DOCUMENT ME!
    */
@@ -1262,7 +1264,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
   /**
    * Close the current view or all views in the alignment frame. If the frame
    * only contains one view then the alignment will be removed from memory.
-   *
+   * 
    * @param closeAllTabs
    */
   @Override
@@ -1308,7 +1310,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /**
    * close alignPanel2 and shuffle tabs appropriately.
-   *
+   * 
    * @param alignPanel2
    */
   public void closeView(AlignmentPanel alignPanel2)
@@ -1384,7 +1386,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
   }
 
   /**
-   *
+   * 
    * @return alignment objects for all views
    */
   AlignmentI[] getViewAlignments()
@@ -1409,7 +1411,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /**
    * DOCUMENT ME!
-   *
+   * 
    * @param e
    *          DOCUMENT ME!
    */
@@ -1445,7 +1447,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /**
    * DOCUMENT ME!
-   *
+   * 
    * @param e
    *          DOCUMENT ME!
    */
@@ -1527,7 +1529,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /**
    * DOCUMENT ME!
-   *
+   * 
    * @param up
    *          DOCUMENT ME!
    */
@@ -1539,7 +1541,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
     {
       return;
     }
-    viewport.getAlignment().moveSelectedSequencesByOne(sg, viewport.getHiddenRepSequences(), up);
+    viewport.getAlignment().moveSelectedSequencesByOne(sg,
+            viewport.getHiddenRepSequences(), up);
     alignPanel.paintAlignment(true);
   }
 
@@ -1627,7 +1630,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /**
    * DOCUMENT ME!
-   *
+   * 
    * @param e
    *          DOCUMENT ME!
    */
@@ -1696,7 +1699,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /**
    * DOCUMENT ME!
-   *
+   * 
    * @param e
    *          DOCUMENT ME!
    */
@@ -1708,7 +1711,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /**
    * DOCUMENT ME!
-   *
+   * 
    * @param e
    *          DOCUMENT ME!
    */
@@ -1720,7 +1723,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /**
    * Paste contents of Jalview clipboard
-   *
+   * 
    * @param newAlignment
    *          true to paste to a new alignment, otherwise add to this.
    */
@@ -1781,8 +1784,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
       }
 
       int alwidth = 0;
-      ArrayList<Integer> newGraphGroups=new ArrayList<Integer>();
-      int fgroup=-1;
+      ArrayList<Integer> newGraphGroups = new ArrayList<Integer>();
+      int fgroup = -1;
 
       if (newAlignment)
       {
@@ -1850,13 +1853,14 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
         {
           newDs.clear(); // tidy up
         }
-        if (alignment.getAlignmentAnnotation()!=null)
+        if (alignment.getAlignmentAnnotation() != null)
         {
-          for (AlignmentAnnotation alan:alignment.getAlignmentAnnotation())
+          for (AlignmentAnnotation alan : alignment
+                  .getAlignmentAnnotation())
           {
-            if (alan.graphGroup>fgroup)
+            if (alan.graphGroup > fgroup)
             {
-              fgroup=alan.graphGroup;
+              fgroup = alan.graphGroup;
             }
           }
         }
@@ -1870,17 +1874,20 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
             if (alann[i].sequenceRef == null && !alann[i].autoCalculated)
             {
               AlignmentAnnotation newann = new AlignmentAnnotation(alann[i]);
-              if (newann.graphGroup>-1)
+              if (newann.graphGroup > -1)
               {
-                if (newGraphGroups.size()<=newann.graphGroup || newGraphGroups.get(newann.graphGroup)==null)
+                if (newGraphGroups.size() <= newann.graphGroup
+                        || newGraphGroups.get(newann.graphGroup) == null)
                 {
-                  for (int q=newGraphGroups.size();q<=newann.graphGroup; q++)
+                  for (int q = newGraphGroups.size(); q <= newann.graphGroup; q++)
                   {
                     newGraphGroups.add(q, null);
                   }
-                  newGraphGroups.set(newann.graphGroup,new Integer(++fgroup));
+                  newGraphGroups.set(newann.graphGroup, new Integer(
+                          ++fgroup));
                 }
-                newann.graphGroup = newGraphGroups.get(newann.graphGroup).intValue();
+                newann.graphGroup = newGraphGroups.get(newann.graphGroup)
+                        .intValue();
               }
 
               newann.padAnnotation(alwidth);
@@ -1906,22 +1913,25 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
           for (int a = 0; a < sequences[i].getAnnotation().length; a++)
           {
             annotationAdded = true;
-            newann=sequences[i].getAnnotation()[a];
+            newann = sequences[i].getAnnotation()[a];
             newann.adjustForAlignment();
             newann.padAnnotation(alwidth);
-            if (newann.graphGroup>-1)
+            if (newann.graphGroup > -1)
             {
-              if (newann.graphGroup>-1)
+              if (newann.graphGroup > -1)
               {
-                if (newGraphGroups.size()<=newann.graphGroup || newGraphGroups.get(newann.graphGroup)==null)
+                if (newGraphGroups.size() <= newann.graphGroup
+                        || newGraphGroups.get(newann.graphGroup) == null)
                 {
-                  for (int q=newGraphGroups.size();q<=newann.graphGroup; q++)
+                  for (int q = newGraphGroups.size(); q <= newann.graphGroup; q++)
                   {
                     newGraphGroups.add(q, null);
                   }
-                  newGraphGroups.set(newann.graphGroup,new Integer(++fgroup));
+                  newGraphGroups.set(newann.graphGroup, new Integer(
+                          ++fgroup));
                 }
-                newann.graphGroup = newGraphGroups.get(newann.graphGroup).intValue();
+                newann.graphGroup = newGraphGroups.get(newann.graphGroup)
+                        .intValue();
               }
             }
             alignment.addAnnotation(sequences[i].getAnnotation()[a]); // annotation
@@ -1963,7 +1973,9 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
                   newann.padAnnotation(avwidth);
                   alview[avnum].addAnnotation(newann); // annotation was
                   // duplicated earlier
-                  // TODO JAL-1145 graphGroups are not updated for sequence annotation added to several views. This may cause strangeness
+                  // TODO JAL-1145 graphGroups are not updated for sequence
+                  // annotation added to several views. This may cause
+                  // strangeness
                   alview[avnum].setAnnotationIndex(newann, a);
                 }
               }
@@ -1973,10 +1985,17 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
         }
         viewport.firePropertyChange("alignment", null,
                 alignment.getSequences());
-        if (alignPanels!=null ) {for (AlignmentPanel ap:((Vector<AlignmentPanel>)alignPanels))
+        if (alignPanels != null)
+        {
+          for (AlignmentPanel ap : ((Vector<AlignmentPanel>) alignPanels))
+          {
+            ap.validateAnnotationDimensions(false);
+          }
+        }
+        else
         {
-          ap.validateAnnotationDimensions(false);
-        }} else { alignPanel.validateAnnotationDimensions(false);}
+          alignPanel.validateAnnotationDimensions(false);
+        }
 
       }
       else
@@ -2036,7 +2055,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /**
    * DOCUMENT ME!
-   *
+   * 
    * @param e
    *          DOCUMENT ME!
    */
@@ -2049,7 +2068,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /**
    * DOCUMENT ME!
-   *
+   * 
    * @param e
    *          DOCUMENT ME!
    */
@@ -2110,7 +2129,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /**
    * DOCUMENT ME!
-   *
+   * 
    * @param e
    *          DOCUMENT ME!
    */
@@ -2127,7 +2146,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /**
    * DOCUMENT ME!
-   *
+   * 
    * @param e
    *          DOCUMENT ME!
    */
@@ -2150,7 +2169,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /**
    * DOCUMENT ME!
-   *
+   * 
    * @param e
    *          DOCUMENT ME!
    */
@@ -2174,7 +2193,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /**
    * DOCUMENT ME!
-   *
+   * 
    * @param e
    *          DOCUMENT ME!
    */
@@ -2210,7 +2229,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /**
    * DOCUMENT ME!
-   *
+   * 
    * @param e
    *          DOCUMENT ME!
    */
@@ -2222,7 +2241,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /**
    * DOCUMENT ME!
-   *
+   * 
    * @param e
    *          DOCUMENT ME!
    */
@@ -2280,7 +2299,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
       addHistoryItem(trimRegion);
 
-      for (SequenceGroup sg :viewport.getAlignment().getGroups())
+      for (SequenceGroup sg : viewport.getAlignment().getGroups())
       {
         if ((trimLeft && !sg.adjustForRemoveLeft(column))
                 || (!trimLeft && !sg.adjustForRemoveRight(column)))
@@ -2296,7 +2315,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /**
    * DOCUMENT ME!
-   *
+   * 
    * @param e
    *          DOCUMENT ME!
    */
@@ -2344,7 +2363,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /**
    * DOCUMENT ME!
-   *
+   * 
    * @param e
    *          DOCUMENT ME!
    */
@@ -2383,7 +2402,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /**
    * DOCUMENT ME!
-   *
+   * 
    * @param e
    *          DOCUMENT ME!
    */
@@ -2407,7 +2426,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /**
    * DOCUMENT ME!
-   *
+   * 
    * @param e
    *          DOCUMENT ME!
    */
@@ -2424,7 +2443,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
   }
 
   /**
-   *
+   * 
    * @param copyAnnotation
    *          if true then duplicate all annnotation, groups and settings
    * @return new alignment panel, already displayed.
@@ -2435,7 +2454,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
   }
 
   /**
-   *
+   * 
    * @param viewTitle
    *          title of newly created view
    * @return new alignment panel, already displayed.
@@ -2446,7 +2465,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
   }
 
   /**
-   *
+   * 
    * @param viewTitle
    *          title of newly created view
    * @param copyAnnotation
@@ -2542,7 +2561,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /**
    * DOCUMENT ME!
-   *
+   * 
    * @param e
    *          DOCUMENT ME!
    */
@@ -2554,7 +2573,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /**
    * DOCUMENT ME!
-   *
+   * 
    * @param e
    *          DOCUMENT ME!
    */
@@ -2584,7 +2603,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /*
    * (non-Javadoc)
-   *
+   * 
    * @see jalview.jbgui.GAlignFrame#followHighlight_actionPerformed()
    */
   @Override
@@ -2599,7 +2618,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /**
    * DOCUMENT ME!
-   *
+   * 
    * @param e
    *          DOCUMENT ME!
    */
@@ -2612,7 +2631,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /**
    * DOCUMENT ME!
-   *
+   * 
    * @param e
    *          DOCUMENT ME!
    */
@@ -2648,7 +2667,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /**
    * called by key handler and the hide all/show all menu items
-   *
+   * 
    * @param toggleSeqs
    * @param toggleCols
    */
@@ -2718,7 +2737,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /*
    * (non-Javadoc)
-   *
+   * 
    * @see
    * jalview.jbgui.GAlignFrame#hideAllButSelection_actionPerformed(java.awt.
    * event.ActionEvent)
@@ -2731,7 +2750,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /*
    * (non-Javadoc)
-   *
+   * 
    * @see
    * jalview.jbgui.GAlignFrame#hideAllSelection_actionPerformed(java.awt.event
    * .ActionEvent)
@@ -2748,7 +2767,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /*
    * (non-Javadoc)
-   *
+   * 
    * @see
    * jalview.jbgui.GAlignFrame#showAllhidden_actionPerformed(java.awt.event.
    * ActionEvent)
@@ -2777,7 +2796,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /**
    * DOCUMENT ME!
-   *
+   * 
    * @param e
    *          DOCUMENT ME!
    */
@@ -2790,7 +2809,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /**
    * DOCUMENT ME!
-   *
+   * 
    * @param e
    *          DOCUMENT ME!
    */
@@ -2803,7 +2822,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /**
    * DOCUMENT ME!
-   *
+   * 
    * @param e
    *          DOCUMENT ME!
    */
@@ -2816,7 +2835,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /**
    * DOCUMENT ME!
-   *
+   * 
    * @param e
    *          DOCUMENT ME!
    */
@@ -2829,7 +2848,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /**
    * DOCUMENT ME!
-   *
+   * 
    * @param e
    *          DOCUMENT ME!
    */
@@ -2842,7 +2861,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /**
    * DOCUMENT ME!
-   *
+   * 
    * @param e
    *          DOCUMENT ME!
    */
@@ -2874,7 +2893,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /**
    * Set or clear 'Show Sequence Features'
-   *
+   * 
    * @param evt
    *          DOCUMENT ME!
    */
@@ -2891,7 +2910,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /**
    * Set or clear 'Show Sequence Features'
-   *
+   * 
    * @param evt
    *          DOCUMENT ME!
    */
@@ -2915,7 +2934,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /**
    * DOCUMENT ME!
-   *
+   * 
    * @param e
    *          DOCUMENT ME!
    */
@@ -2943,7 +2962,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /**
    * DOCUMENT ME!
-   *
+   * 
    * @param e
    *          DOCUMENT ME!
    */
@@ -2983,7 +3002,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /**
    * DOCUMENT ME!
-   *
+   * 
    * @param e
    *          DOCUMENT ME!
    */
@@ -2995,19 +3014,20 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /**
    * DOCUMENT ME!
-   *
+   * 
    * @param e
    *          DOCUMENT ME!
    */
   @Override
   public void clustalColour_actionPerformed(ActionEvent e)
   {
-    changeColour(new ClustalxColourScheme(viewport.getAlignment(), viewport.getHiddenRepSequences()));
+    changeColour(new ClustalxColourScheme(viewport.getAlignment(),
+            viewport.getHiddenRepSequences()));
   }
 
   /**
    * DOCUMENT ME!
-   *
+   * 
    * @param e
    *          DOCUMENT ME!
    */
@@ -3019,7 +3039,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /**
    * DOCUMENT ME!
-   *
+   * 
    * @param e
    *          DOCUMENT ME!
    */
@@ -3031,7 +3051,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /**
    * DOCUMENT ME!
-   *
+   * 
    * @param e
    *          DOCUMENT ME!
    */
@@ -3043,7 +3063,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /**
    * DOCUMENT ME!
-   *
+   * 
    * @param e
    *          DOCUMENT ME!
    */
@@ -3055,7 +3075,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /**
    * DOCUMENT ME!
-   *
+   * 
    * @param e
    *          DOCUMENT ME!
    */
@@ -3067,7 +3087,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /**
    * DOCUMENT ME!
-   *
+   * 
    * @param e
    *          DOCUMENT ME!
    */
@@ -3079,7 +3099,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /**
    * DOCUMENT ME!
-   *
+   * 
    * @param e
    *          DOCUMENT ME!
    */
@@ -3091,7 +3111,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /**
    * DOCUMENT ME!
-   *
+   * 
    * @param e
    *          DOCUMENT ME!
    */
@@ -3127,7 +3147,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /**
    * DOCUMENT ME!
-   *
+   * 
    * @param e
    *          DOCUMENT ME!
    */
@@ -3139,7 +3159,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /**
    * DOCUMENT ME!
-   *
+   * 
    * @param cs
    *          DOCUMENT ME!
    */
@@ -3193,8 +3213,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
     if (viewport.getColourAppliesToAllGroups())
     {
 
-
-      for (SequenceGroup sg:viewport.getAlignment().getGroups())
+      for (SequenceGroup sg : viewport.getAlignment().getGroups())
       {
         if (cs == null)
         {
@@ -3204,8 +3223,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
         if (cs instanceof ClustalxColourScheme)
         {
-          sg.cs = new ClustalxColourScheme(sg, viewport
-                  .getHiddenRepSequences());
+          sg.cs = new ClustalxColourScheme(sg,
+                  viewport.getHiddenRepSequences());
         }
         else if (cs instanceof UserColourScheme)
         {
@@ -3263,7 +3282,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /**
    * DOCUMENT ME!
-   *
+   * 
    * @param e
    *          DOCUMENT ME!
    */
@@ -3281,7 +3300,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /**
    * DOCUMENT ME!
-   *
+   * 
    * @param e
    *          DOCUMENT ME!
    */
@@ -3299,7 +3318,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /**
    * DOCUMENT ME!
-   *
+   * 
    * @param e
    *          DOCUMENT ME!
    */
@@ -3318,7 +3337,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /**
    * DOCUMENT ME!
-   *
+   * 
    * @param e
    *          DOCUMENT ME!
    */
@@ -3337,7 +3356,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /**
    * DOCUMENT ME!
-   *
+   * 
    * @param e
    *          DOCUMENT ME!
    */
@@ -3433,7 +3452,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /**
    * DOCUMENT ME!
-   *
+   * 
    * @param e
    *          DOCUMENT ME!
    */
@@ -3445,7 +3464,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /**
    * DOCUMENT ME!
-   *
+   * 
    * @param e
    *          DOCUMENT ME!
    */
@@ -3457,7 +3476,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /**
    * DOCUMENT ME!
-   *
+   * 
    * @param e
    *          DOCUMENT ME!
    */
@@ -3474,7 +3493,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /**
    * DOCUMENT ME!
-   *
+   * 
    * @param e
    *          DOCUMENT ME!
    */
@@ -3490,7 +3509,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /**
    * DOCUMENT ME!
-   *
+   * 
    * @param e
    *          DOCUMENT ME!
    */
@@ -3506,7 +3525,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /**
    * DOCUMENT ME!
-   *
+   * 
    * @param e
    *          DOCUMENT ME!
    */
@@ -3523,7 +3542,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /**
    * DOCUMENT ME!
-   *
+   * 
    * @param e
    *          DOCUMENT ME!
    */
@@ -3535,7 +3554,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /**
    * DOCUMENT ME!
-   *
+   * 
    * @param e
    *          DOCUMENT ME!
    */
@@ -3559,7 +3578,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /**
    * DOCUMENT ME!
-   *
+   * 
    * @param e
    *          DOCUMENT ME!
    */
@@ -3608,7 +3627,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /**
    * DOCUMENT ME!
-   *
+   * 
    * @param e
    *          DOCUMENT ME!
    */
@@ -3620,7 +3639,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /**
    * DOCUMENT ME!
-   *
+   * 
    * @param e
    *          DOCUMENT ME!
    */
@@ -3632,7 +3651,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /**
    * DOCUMENT ME!
-   *
+   * 
    * @param e
    *          DOCUMENT ME!
    */
@@ -3644,7 +3663,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /**
    * DOCUMENT ME!
-   *
+   * 
    * @param e
    *          DOCUMENT ME!
    */
@@ -3656,7 +3675,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /**
    * DOCUMENT ME!
-   *
+   * 
    * @param type
    *          DOCUMENT ME!
    * @param pwType
@@ -3668,7 +3687,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
   {
     TreePanel tp;
 
-    if (viewport.getSelectionGroup() != null)
+    if (viewport.getSelectionGroup() != null
+            && viewport.getSelectionGroup().getSize() > 0)
     {
       if (viewport.getSelectionGroup().getSize() < 3)
       {
@@ -3683,10 +3703,9 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
       SequenceGroup sg = viewport.getSelectionGroup();
 
       /* Decide if the selection is a column region */
-      for (SequenceI _s:sg.getSequences())
+      for (SequenceI _s : sg.getSequences())
       {
-        if (_s.getLength() < sg
-                .getEndRes())
+        if (_s.getLength() < sg.getEndRes())
         {
           JOptionPane
                   .showMessageDialog(
@@ -3743,7 +3762,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /**
    * DOCUMENT ME!
-   *
+   * 
    * @param title
    *          DOCUMENT ME!
    * @param order
@@ -3775,7 +3794,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /**
    * Add a new sort by annotation score menu item
-   *
+   * 
    * @param sort
    *          the menu to add the option to
    * @param scoreLabel
@@ -3812,7 +3831,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
    * search the alignment and rebuild the sort by annotation score submenu the
    * last alignment annotation vector hash is stored to minimize cost of
    * rebuilding in subsequence calls.
-   *
+   * 
    */
   @Override
   public void buildSortByAnnotationScoresMenu()
@@ -3828,7 +3847,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
       // almost certainly a quicker way to do this - but we keep it simple
       Hashtable scoreSorts = new Hashtable();
       AlignmentAnnotation aann[];
-      for (SequenceI sqa:viewport.getAlignment().getSequences())
+      for (SequenceI sqa : viewport.getAlignment().getSequences())
       {
         aann = sqa.getAnnotation();
         for (int i = 0; aann != null && i < aann.length; i++)
@@ -3859,7 +3878,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
    * call. Listeners are added to remove the menu item when the treePanel is
    * closed, and adjust the tree leaf to sequence mapping when the alignment is
    * modified.
-   *
+   * 
    * @param treePanel
    *          Displayed tree window.
    * @param title
@@ -3928,7 +3947,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
   /**
    * Work out whether the whole set of sequences or just the selected set will
    * be submitted for multiple alignment.
-   *
+   * 
    */
   public jalview.datamodel.AlignmentView gatherSequencesForAlignment()
   {
@@ -3943,7 +3962,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
       /*
        * SequenceGroup seqs = viewport.getSelectionGroup(); int sz; msa = new
        * SequenceI[sz = seqs.getSize(false)];
-       *
+       * 
        * for (int i = 0; i < sz; i++) { msa[i] = (SequenceI)
        * seqs.getSequenceAt(i); }
        */
@@ -3953,9 +3972,9 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
     {
       /*
        * Vector seqs = viewport.getAlignment().getSequences();
-       *
+       * 
        * if (seqs.size() > 1) { msa = new SequenceI[seqs.size()];
-       *
+       * 
        * for (int i = 0; i < seqs.size(); i++) { msa[i] = (SequenceI)
        * seqs.elementAt(i); } }
        */
@@ -4001,7 +4020,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /**
    * DOCUMENT ME!
-   *
+   * 
    * @param e
    *          DOCUMENT ME!
    */
@@ -4067,7 +4086,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
   /**
    * Add a treeviewer for the tree extracted from a newick file object to the
    * current alignment view
-   *
+   * 
    * @param nf
    *          the tree
    * @param title
@@ -4118,7 +4137,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /**
    * Generates menu items and listener event actions for web service clients
-   *
+   * 
    */
   public void BuildWebServiceMenu()
   {
@@ -4140,6 +4159,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
       @Override
       public void run()
       {
+        final List<JMenuItem> legacyItems=new ArrayList<JMenuItem>();
         try
         {
           System.err.println("Building ws menu again "
@@ -4171,28 +4191,10 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
             // TODO: refactor to allow list of AbstractName/Handler bindings to
             // be
             // stored or retrieved from elsewhere
-            Vector msaws = null; // (Vector) Discoverer.services.get("MsaWS");
+            // No MSAWS used any more:
+            // Vector msaws = null; // (Vector) Discoverer.services.get("MsaWS");
             Vector secstrpr = (Vector) Discoverer.services
                     .get("SecStrPred");
-            Vector seqsrch = null; // (Vector)
-                                   // Discoverer.services.get("SeqSearch");
-            // TODO: move GUI generation code onto service implementation - so a
-            // client instance attaches itself to the GUI with method call like
-            // jalview.ws.MsaWSClient.bind(servicehandle, Desktop.instance,
-            // alignframe)
-            if (msaws != null)
-            {
-              // Add any Multiple Sequence Alignment Services
-              for (int i = 0, j = msaws.size(); i < j; i++)
-              {
-                final ext.vamsas.ServiceHandle sh = (ext.vamsas.ServiceHandle) msaws
-                        .get(i);
-                jalview.ws.WSMenuEntryProviderI impl = jalview.ws.jws1.Discoverer
-                        .getServiceClient(sh);
-                impl.attachWSMenuEntry(msawsmenu, me);
-
-              }
-            }
             if (secstrpr != null)
             {
               // Add any secondary structure prediction services
@@ -4202,35 +4204,23 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
                         .get(i);
                 jalview.ws.WSMenuEntryProviderI impl = jalview.ws.jws1.Discoverer
                         .getServiceClient(sh);
+                int p=secstrmenu.getItemCount();
                 impl.attachWSMenuEntry(secstrmenu, me);
-              }
-            }
-            if (seqsrch != null)
-            {
-              // Add any sequence search services
-              for (int i = 0, j = seqsrch.size(); i < j; i++)
-              {
-                final ext.vamsas.ServiceHandle sh = (ext.vamsas.ServiceHandle) seqsrch
-                        .elementAt(i);
-                jalview.ws.WSMenuEntryProviderI impl = jalview.ws.jws1.Discoverer
-                        .getServiceClient(sh);
-                impl.attachWSMenuEntry(seqsrchmenu, me);
+                int q=secstrmenu.getItemCount();
+                for (int litm=p;litm<q; litm++)
+                {
+                  legacyItems.add(secstrmenu.getItem(litm));
+                }
               }
             }
           }
-
+          
           // Add all submenus in the order they should appear on the web
           // services menu
           wsmenu.add(msawsmenu);
           wsmenu.add(secstrmenu);
           wsmenu.add(dismenu);
           wsmenu.add(analymenu);
-          // final ArrayList<JMenu> submens=new ArrayList<JMenu>();
-          // submens.add(msawsmenu);
-          // submens.add(secstrmenu);
-          // submens.add(dismenu);
-          // submens.add(analymenu);
-
           // No search services yet
           // wsmenu.add(seqsrchmenu);
 
@@ -4255,6 +4245,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
                   webService.add(me.webServiceNoServices);
                 }
                 // TODO: move into separate menu builder class.
+                boolean new_sspred=false;
                 if (Cache.getDefault("SHOW_JWS2_SERVICES", true))
                 {
                   Jws2Discoverer jws2servs = Jws2Discoverer.getDiscoverer();
@@ -4263,6 +4254,16 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
                     if (jws2servs.hasServices())
                     {
                       jws2servs.attachWSMenuEntry(webService, me);
+                      for (Jws2Instance sv:jws2servs.getServices()) {
+                        if (sv.description.toLowerCase().contains("jpred"))
+                        {
+                          for (JMenuItem jmi:legacyItems)
+                          {
+                            jmi.setVisible(false);
+                          }
+                        }
+                      }
+                      
                     }
                     if (jws2servs.isRunning())
                     {
@@ -4273,7 +4274,6 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
                     }
                   }
                 }
-
                 build_urlServiceMenu(me.webService);
                 build_fetchdbmenu(webService);
                 for (JMenu item : wsmenu)
@@ -4289,7 +4289,9 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
                 }
               } catch (Exception e)
               {
-                Cache.log.debug("Exception during web service menu building process.",e);
+                Cache.log
+                        .debug("Exception during web service menu building process.",
+                                e);
               }
               ;
             }
@@ -4307,7 +4309,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /**
    * construct any groupURL type service menu entries.
-   *
+   * 
    * @param webService
    */
   private void build_urlServiceMenu(JMenu webService)
@@ -4317,12 +4319,12 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
     /*
      * JMenuItem testAlView = new JMenuItem("Test AlignmentView"); final
      * AlignFrame af = this; testAlView.addActionListener(new ActionListener() {
-     *
+     * 
      * @Override public void actionPerformed(ActionEvent e) {
      * jalview.datamodel.AlignmentView
      * .testSelectionViews(af.viewport.getAlignment(),
      * af.viewport.getColumnSelection(), af.viewport.selectionGroup); }
-     *
+     * 
      * }); webService.add(testAlView);
      */
     // TODO: refactor to RestClient discoverer and merge menu entries for
@@ -4349,12 +4351,12 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
    * public void vamsasStore_actionPerformed(ActionEvent e) { JalviewFileChooser
    * chooser = new JalviewFileChooser(jalview.bin.Cache.
    * getProperty("LAST_DIRECTORY"));
-   *
+   * 
    * chooser.setFileView(new JalviewFileView()); chooser.setDialogTitle("Export
    * to Vamsas file"); chooser.setToolTipText("Export");
-   *
+   * 
    * int value = chooser.showSaveDialog(this);
-   *
+   * 
    * if (value == JalviewFileChooser.APPROVE_OPTION) {
    * jalview.io.VamsasDatastore vs = new jalview.io.VamsasDatastore(viewport);
    * //vs.store(chooser.getSelectedFile().getAbsolutePath() ); vs.storeJalview(
@@ -4362,7 +4364,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
    */
   /**
    * prototype of an automatically enabled/disabled analysis function
-   *
+   * 
    */
   protected void setShowProductsEnabled()
   {
@@ -4382,7 +4384,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
   /**
    * search selection for sequence xRef products and build the show products
    * menu.
-   *
+   * 
    * @param selection
    * @param dataset
    * @return true if showProducts menu should be enabled.
@@ -4583,7 +4585,13 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
     } catch (Exception ex)
     {
       al = null;
-      jalview.bin.Cache.log.debug("Exception during translation.", ex);
+      jalview.bin.Cache.log.error("Exception during translation. Please report this !", ex);
+      JOptionPane
+      .showMessageDialog(
+              Desktop.desktop,
+              "Unfortunately, something went wrong when translating your sequences.\nPlease take a look in the Jalview java console\nand submit a bug report including the stacktrace.",
+              "Implementation error: Translation Failed", JOptionPane.ERROR_MESSAGE);
+      return;
     }
     if (al == null)
     {
@@ -4603,7 +4611,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /**
    * Try to load a features file onto the alignment.
-   *
+   * 
    * @param file
    *          contents or path to retrieve file
    * @param type
@@ -4852,7 +4860,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
    * it's and Annotation file, then a JNet file, and finally a features file. If
    * all are false then the user may have dropped an alignment file onto this
    * AlignFrame.
-   *
+   * 
    * @param file
    *          either a filename or a URL string.
    */
@@ -4893,11 +4901,15 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
             }
             else
             {
-              // some problem - if no warning its probable that the ID matching process didn't work
-              JOptionPane.showMessageDialog(Desktop.desktop,
-                      tcf.getWarningMessage()==null ? "Check that the file matches sequence IDs in the alignment." : tcf.getWarningMessage(),
-                      "Problem reading T-COFFEE score file",
-                      JOptionPane.WARNING_MESSAGE);
+              // some problem - if no warning its probable that the ID matching
+              // process didn't work
+              JOptionPane
+                      .showMessageDialog(
+                              Desktop.desktop,
+                              tcf.getWarningMessage() == null ? "Check that the file matches sequence IDs in the alignment."
+                                      : tcf.getWarningMessage(),
+                              "Problem reading T-COFFEE score file",
+                              JOptionPane.WARNING_MESSAGE);
             }
           }
           else
@@ -4906,7 +4918,9 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
           }
         } catch (Exception x)
         {
-          Cache.log.debug("Exception when processing data source as T-COFFEE score file",x);
+          Cache.log
+                  .debug("Exception when processing data source as T-COFFEE score file",
+                          x);
           tcf = null;
         }
         if (tcf == null)
@@ -4930,7 +4944,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
           {
             /*
              * if (format.equalsIgnoreCase("PDB")) {
-             *
+             * 
              * String pdbfn = ""; // try to match up filename with sequence id
              * try { if (protocol == jalview.io.FormatAdapter.FILE) { File fl =
              * new File(file); pdbfn = fl.getName(); } else if (protocol ==
@@ -4975,13 +4989,22 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
     } catch (Exception ex)
     {
       ex.printStackTrace();
-    }
-    catch (OutOfMemoryError oom)
+    } catch (OutOfMemoryError oom)
     {
-      try {
+      try
+      {
         System.gc();
-      } catch (Exception x){};
-      new OOMWarning("loading data "+(protocol!=null ? (protocol.equals(FormatAdapter.PASTE) ? "from clipboard." : "using "+protocol+" from "+file) : ".")+(format!=null ? "(parsing as '"+format+"' file)" :""), oom, Desktop.desktop);
+      } catch (Exception x)
+      {
+      }
+      ;
+      new OOMWarning(
+              "loading data "
+                      + (protocol != null ? (protocol.equals(FormatAdapter.PASTE) ? "from clipboard."
+                              : "using " + protocol + " from " + file)
+                              : ".")
+                      + (format != null ? "(parsing as '" + format
+                              + "' file)" : ""), oom, Desktop.desktop);
     }
   }
 
@@ -5039,7 +5062,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /*
    * (non-Javadoc)
-   *
+   * 
    * @see
    * jalview.jbgui.GAlignFrame#showDbRefs_actionPerformed(java.awt.event.ActionEvent
    * )
@@ -5052,7 +5075,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /*
    * (non-Javadoc)
-   *
+   * 
    * @seejalview.jbgui.GAlignFrame#showNpFeats_actionPerformed(java.awt.event.
    * ActionEvent)
    */
@@ -5065,7 +5088,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
   /**
    * find the viewport amongst the tabs in this alignment frame and close that
    * tab
-   *
+   * 
    * @param av
    */
   public boolean closeView(AlignViewport av)
@@ -5338,7 +5361,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /*
    * (non-Javadoc)
-   *
+   * 
    * @see
    * jalview.jbgui.GAlignFrame#showUnconservedMenuItem_actionPerformed(java.
    * awt.event.ActionEvent)
@@ -5352,7 +5375,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /*
    * (non-Javadoc)
-   *
+   * 
    * @see
    * jalview.jbgui.GAlignFrame#showGroupConsensus_actionPerformed(java.awt.event
    * .ActionEvent)
@@ -5367,7 +5390,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /*
    * (non-Javadoc)
-   *
+   * 
    * @see
    * jalview.jbgui.GAlignFrame#showGroupConservation_actionPerformed(java.awt
    * .event.ActionEvent)
@@ -5381,7 +5404,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /*
    * (non-Javadoc)
-   *
+   * 
    * @see
    * jalview.jbgui.GAlignFrame#showConsensusHistogram_actionPerformed(java.awt
    * .event.ActionEvent)
@@ -5395,7 +5418,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /*
    * (non-Javadoc)
-   *
+   * 
    * @see
    * jalview.jbgui.GAlignFrame#showConsensusProfile_actionPerformed(java.awt
    * .event.ActionEvent)
@@ -5424,7 +5447,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /*
    * (non-Javadoc)
-   *
+   * 
    * @see
    * jalview.jbgui.GAlignFrame#makeGrpsFromSelection_actionPerformed(java.awt
    * .event.ActionEvent)
@@ -5451,10 +5474,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
         Color col = new Color((int) (Math.random() * 255),
                 (int) (Math.random() * 255), (int) (Math.random() * 255));
         col = col.brighter();
-        for (SequenceI s:gps[g].getSequences())
-          viewport.setSequenceColour(
-                s, col)
-          ;
+        for (SequenceI s : gps[g].getSequences())
+          viewport.setSequenceColour(s, col);
       }
       PaintRefresher.Refresh(this, viewport.getSequenceSetId());
       alignPanel.updateAnnotation();
@@ -5464,7 +5485,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   /**
    * make the given alignmentPanel the currently selected tab
-   *
+   * 
    * @param alignmentPanel
    */
   public void setDisplayedView(AlignmentPanel alignmentPanel)