checks for new selection before adding a new group
authoramwaterhouse <Andrew Waterhouse>
Fri, 19 Nov 2004 17:21:46 +0000 (17:21 +0000)
committeramwaterhouse <Andrew Waterhouse>
Fri, 19 Nov 2004 17:21:46 +0000 (17:21 +0000)
src/jalview/gui/SeqPanel.java

index b650c9a..3df1dac 100755 (executable)
@@ -303,9 +303,9 @@ public class SeqPanel extends JPanel
     sg.setConservation(c);\r
     ConservationColourScheme ccs = (ConservationColourScheme)sg.cs;\r
     ccs.conserve = c;\r
- //   sg.cs = new ConservationColourScheme(sg);\r
   }\r
 \r
+\r
   public void setColourScheme(ColourSchemeI cs, boolean showConservation)\r
   {\r
     if (av.getSelection().size() == 0)\r
@@ -336,22 +336,27 @@ public class SeqPanel extends JPanel
            sg.setConservation(c);\r
            sg.cs = new ConservationColourScheme(sg);\r
          }\r
-\r
-\r
       }\r
     }\r
     else\r
     {\r
-      SequenceGroup sg = av.alignment.addGroup();\r
-      sg.cs = cs;\r
+      SequenceGroup sg = av.alignment.findGroup((Sequence)av.sel.sequenceAt(0));\r
 \r
-      for (int i=0; i < av.getSelection().size(); i++)\r
+      if( isNewSelection(sg) )\r
       {\r
-        av.alignment.removeFromGroup(av.alignment.findGroup((Sequence)av.sel.sequenceAt(i)),\r
-                                     (Sequence)av.sel.sequenceAt(i));\r
-        av.alignment.addToGroup(sg,(Sequence)av.sel.sequenceAt(i));\r
+        sg = av.getAlignment().addGroup();\r
+        for (int i=0; i < av.getSelection().size(); i++)\r
+        {\r
+          av.alignment.removeFromGroup(av.alignment.findGroup( (Sequence) av.\r
+              sel.sequenceAt(i)),\r
+                                       (Sequence) av.sel.sequenceAt(i));\r
+          av.alignment.addToGroup(sg, (Sequence) av.sel.sequenceAt(i));\r
+        }\r
       }\r
 \r
+\r
+      sg.cs = cs;\r
+\r
       // Selection is made, we only want to change the conservationColour for selected group\r
       if(  showConservation\r
            && !(sg.cs instanceof ConservationColourScheme)\r
@@ -381,6 +386,18 @@ public class SeqPanel extends JPanel
    repaint();\r
   }\r
 \r
+  boolean isNewSelection(SequenceGroup sg)\r
+  {\r
+    if(sg.getSize()!=av.getSelection().size())\r
+      return true;\r
+\r
+    for(int i=0; i<sg.getSize(); i++)\r
+     if( !av.getSelection().contains( sg.getSequenceAt(i) ))\r
+       return true;\r
+\r
+    return false;\r
+  }\r
+\r
 \r
   public ColourSchemeI getColourScheme()\r
   {\r