Column selection changed
authoramwaterhouse <Andrew Waterhouse>
Wed, 15 Jun 2005 15:01:37 +0000 (15:01 +0000)
committeramwaterhouse <Andrew Waterhouse>
Wed, 15 Jun 2005 15:01:37 +0000 (15:01 +0000)
src/jalview/gui/ScalePanel.java

index 551f262..73a9e6e 100755 (executable)
@@ -33,6 +33,9 @@ public class ScalePanel
   AlignmentPanel ap;\r
   boolean stretchingGroup = false;\r
 \r
+  int min, max; //used by mouseDragged to see if user\r
+  // wants to delete columns\r
+\r
   public ScalePanel(AlignViewport av, AlignmentPanel ap)\r
   {\r
     this.av = av;\r
@@ -65,14 +68,17 @@ public class ScalePanel
     int res = (x / av.getCharWidth()) + av.getStartRes();\r
     SequenceGroup sg = null;\r
 \r
+    min=res;\r
+    max=res;\r
+\r
     if (av.getColumnSelection().contains(res))\r
     {\r
       av.getColumnSelection().removeElement(res);\r
+      ap.annotationPanel.removeEditableColumn(res);\r
     }\r
     else\r
     {\r
       av.getColumnSelection().addElement(res);\r
-\r
       sg = new SequenceGroup();\r
 \r
       for (int i = 0; i < av.alignment.getSequences().size(); i++)\r
@@ -83,7 +89,6 @@ public class ScalePanel
       sg.setStartRes(res);\r
       sg.setEndRes(res);\r
 \r
-      ap.annotationPanel.addEditableColumn(res);\r
     }\r
 \r
     av.setSelectionGroup(sg);\r
@@ -92,17 +97,22 @@ public class ScalePanel
 \r
   public void doMouseReleased(MouseEvent evt)\r
   {\r
-    if (!stretchingGroup)\r
-    {\r
-      return;\r
-    }\r
-\r
     int x = evt.getX();\r
     int res = (x / av.getCharWidth()) + av.getStartRes();\r
 \r
-    if (!av.getColumnSelection().contains(res))\r
+    if(av.getColumnSelection()!=null)\r
     {\r
-      av.getColumnSelection().addElement(res);\r
+      for(int i=0; i<av.getColumnSelection().size(); i++)\r
+      {\r
+        ap.annotationPanel.addEditableColumn(\r
+            av.getColumnSelection().columnAt(i));\r
+      }\r
+    }\r
+\r
+    if (!stretchingGroup)\r
+    {\r
+      ap.repaint();\r
+      return;\r
     }\r
 \r
     SequenceGroup sg = av.getSelectionGroup();\r
@@ -125,11 +135,21 @@ public class ScalePanel
     int x = evt.getX();\r
     int res = (x / av.getCharWidth()) + av.getStartRes();\r
 \r
+    if(res < min)\r
+      min = res;\r
+    if(res>max)\r
+      max = res;\r
+\r
     SequenceGroup sg = av.getSelectionGroup();\r
 \r
     if (sg != null)\r
     {\r
       stretchingGroup = true;\r
+      if (!av.getColumnSelection().contains(res))\r
+      {\r
+        av.getColumnSelection().addElement(res);\r
+      }\r
+\r
 \r
       if (res > sg.getStartRes())\r
       {\r
@@ -140,7 +160,16 @@ public class ScalePanel
         sg.setStartRes(res);\r
       }\r
 \r
-      ap.annotationPanel.addEditableColumn(res);\r
+      for(int i=min; i<=max; i++)\r
+      {\r
+        if (i < sg.getStartRes() || i > sg.getEndRes())\r
+         {\r
+           av.getColumnSelection().removeElement(i);\r
+           ap.annotationPanel.removeEditableColumn(res);\r
+         }\r
+        else\r
+          av.getColumnSelection().addElement(i);\r
+      }\r
       ap.repaint();\r
     }\r
   }\r