added sequence feature copy constructor.
[jalview.git] / src / jalview / datamodel / ColumnSelection.java
index 60d7aea..e51afd0 100644 (file)
@@ -175,8 +175,9 @@ public class ColumnSelection
    * @param start beginning of edit\r
    * @param left shift in edit (+ve for removal, or -ve for inserts)\r
    */\r
-  public void compensateForEdit(int start, int change)\r
+  public Vector compensateForEdit(int start, int change)\r
   {\r
+    Vector deletedHiddenColumns = null;\r
     for (int i = 0; i < size(); i++)\r
     {\r
       int temp = columnAt(i);\r
@@ -189,20 +190,37 @@ public class ColumnSelection
 \r
     if(hiddenColumns!=null)\r
     {\r
-      for(int i=0; i<hiddenColumns.size(); i++)\r
+      deletedHiddenColumns = new Vector();\r
+      int hSize = hiddenColumns.size();\r
+      for(int i=0; i<hSize; i++)\r
       {\r
         int[] region = (int[]) hiddenColumns.elementAt(i);\r
-        if(region[0] > start)\r
+        if ( region[0]>start && start+change>region[1] )\r
+        {\r
+          deletedHiddenColumns.addElement(\r
+              hiddenColumns.elementAt(i));\r
+\r
+          hiddenColumns.removeElementAt(i);\r
+          i--;\r
+          hSize--;\r
+          continue;\r
+        }\r
+\r
+        if(region[0]>start)\r
         {\r
           region[0] -= change;\r
           region[1] -= change;\r
         }\r
+\r
         if(region[0]<0)\r
           region[0] = 0;\r
-        if(region[1] <0)\r
-          region[1] = 0;\r
+\r
       }\r
+\r
+      this.revealHiddenColumns(0);\r
     }\r
+\r
+    return deletedHiddenColumns;\r
   }\r
   /**\r
    * propagate shift in alignment columns to column selection\r
@@ -582,6 +600,8 @@ public class ColumnSelection
     { removeElement(max);  max ++;  }\r
 \r
     min++; max--;\r
+    if(min>max)\r
+      min = max;\r
 \r
     hideColumns(min, max);\r
   }\r
@@ -717,7 +737,7 @@ public class ColumnSelection
     {\r
       for(i=0; i<iSize; i++)\r
       {\r
-        selection[i] = seqs[i].getSequence(start, end);\r
+        selection[i] = seqs[i].getSequenceAsString(start, end);\r
       }\r
     }\r
 \r