JAL-1685 further tests
[jalview.git] / src / jalview / controller / AlignViewController.java
index 21cf630..3b54641 100644 (file)
  */
 package jalview.controller;
 
-import java.awt.Color;
-import java.util.ArrayList;
-import java.util.BitSet;
-import java.util.List;
-
 import jalview.analysis.AlignmentSorter;
 import jalview.api.AlignViewControllerGuiI;
 import jalview.api.AlignViewControllerI;
@@ -40,6 +35,11 @@ import jalview.datamodel.SequenceGroup;
 import jalview.datamodel.SequenceI;
 import jalview.util.MessageManager;
 
+import java.awt.Color;
+import java.util.ArrayList;
+import java.util.BitSet;
+import java.util.List;
+
 public class AlignViewController implements AlignViewControllerI
 {
   AlignViewportI viewport = null;
@@ -79,14 +79,26 @@ public class AlignViewController implements AlignViewControllerI
   @Override
   public boolean makeGroupsFromSelection()
   {
-
-    if (viewport.getSelectionGroup() != null)
+    SequenceGroup sg = viewport.getSelectionGroup();
+    ColumnSelection cs = viewport.getColumnSelection();
+    SequenceGroup[] gps = null;
+    if (sg != null
+            && (cs == null || cs.getSelected() == null || cs.size() == 0))
     {
-      SequenceGroup[] gps = jalview.analysis.Grouping.makeGroupsFrom(
+      gps = jalview.analysis.Grouping.makeGroupsFrom(
               viewport.getSequenceSelection(),
               viewport.getAlignmentView(true).getSequenceStrings(
                       viewport.getGapCharacter()), viewport.getAlignment()
                       .getGroups());
+    } else {
+      if (cs!=null) {
+        gps = jalview.analysis.Grouping.makeGroupsFromCols(
+                (sg == null) ? viewport.getAlignment().getSequencesArray()
+                        : sg.getSequences().toArray(new SequenceI[0]), cs,
+                viewport.getAlignment().getGroups());
+      }
+    }
+    if (gps!=null) {
       viewport.getAlignment().deleteAllGroups();
       viewport.clearSequenceColours();
       viewport.setSelectionGroup(null);
@@ -100,7 +112,9 @@ public class AlignViewController implements AlignViewControllerI
                 (int) (Math.random() * 255), (int) (Math.random() * 255));
         col = col.brighter();
         for (SequenceI sq : gps[g].getSequences(null))
+        {
           viewport.setSequenceColour(sq, col);
+        }
       }
       return true;
     }
@@ -300,6 +314,8 @@ public class AlignViewController implements AlignViewControllerI
     }
   }
 
+
+
   @Override
   public void sortAlignmentByFeatureDensity(String[] typ)
   {