If seq has a dataset, dont clear it
[jalview.git] / src / jalview / gui / ColumnSelection.java
index 26dba83..94e2642 100755 (executable)
@@ -171,6 +171,23 @@ public class ColumnSelection
                 selected.setElementAt(new Integer(temp - change), i);\r
             }\r
         }\r
+\r
+        if(hiddenColumns!=null)\r
+        {\r
+          for(int i=0; i<hiddenColumns.size(); i++)\r
+          {\r
+            int[] region = (int[]) hiddenColumns.elementAt(i);\r
+            if(region[0] > start)\r
+            {\r
+              region[0] -= change;\r
+              region[1] -= change;\r
+            }\r
+            if(region[0]<0)\r
+              region[0] = 0;\r
+            if(region[1] <0)\r
+             region[1] = 0;\r
+          }\r
+        }\r
     }\r
 \r
     /**\r
@@ -267,7 +284,7 @@ public class ColumnSelection
      * In otherwords, the next hidden column.\r
      * @param index int\r
      */\r
-    public int getHiddenRegionBoundary(int alPos)\r
+    public int getHiddenBoundaryRight(int alPos)\r
     {\r
       if (hiddenColumns != null)\r
       {\r
@@ -286,9 +303,35 @@ public class ColumnSelection
       return alPos;\r
 \r
     }\r
+    /**\r
+     * THis method returns the rightmost limit of a\r
+     * region of an alignment with hidden columns.\r
+     * In otherwords, the next hidden column.\r
+     * @param index int\r
+     */\r
+    public int getHiddenBoundaryLeft(int alPos)\r
+    {\r
+      if (hiddenColumns != null)\r
+      {\r
+        int index = hiddenColumns.size()-1;\r
+        do\r
+        {\r
+          int[] region = (int[]) hiddenColumns.elementAt(index);\r
+          if(alPos > region[1])\r
+            return region[1];\r
 \r
+          index--;\r
+        }\r
+        while(index >-1);\r
+      }\r
+\r
+      return alPos;\r
+\r
+    }\r
 \r
-    public void hideColumns(int res, AlignViewport av)\r
+\r
+\r
+    public void hideColumns(int res)\r
     {\r
       if(hiddenColumns==null)\r
         hiddenColumns = new Vector();\r
@@ -318,13 +361,21 @@ public class ColumnSelection
       if(!added)\r
         hiddenColumns.addElement(new int[]{min, max});\r
 \r
-\r
-      av.setSelectionGroup(null);\r
-      av.hasHiddenColumns = true;\r
     }\r
 \r
     public void revealAllHiddenColumns(AlignViewport av)\r
     {\r
+      if(hiddenColumns!=null)\r
+      {\r
+        for (int i = 0; i < hiddenColumns.size(); i++)\r
+        {\r
+          int[] region = (int[]) hiddenColumns.elementAt(i);\r
+          for (int j = region[0]; j < region[1]; j++)\r
+          {\r
+            addElement(j);\r
+          }\r
+        }\r
+      }\r
       av.hasHiddenColumns = false;\r
       hiddenColumns = null;\r
     }\r
@@ -336,6 +387,11 @@ public class ColumnSelection
         int [] region = (int[])hiddenColumns.elementAt(i);\r
         if( res == region[0])\r
         {\r
+          for (int j = region[0]; j < region[1]; j++)\r
+          {\r
+            addElement(j);\r
+          }\r
+\r
           hiddenColumns.remove(region);\r
           break;\r
         }\r