Highlight hidden columns after revealing
[jalview.git] / src / jalview / gui / ColumnSelection.java
index 26dba83..eb6cafe 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,6 +303,31 @@ 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
 \r
     public void hideColumns(int res, AlignViewport av)\r
@@ -325,6 +367,14 @@ public class ColumnSelection
 \r
     public void revealAllHiddenColumns(AlignViewport av)\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
       av.hasHiddenColumns = false;\r
       hiddenColumns = null;\r
     }\r
@@ -336,6 +386,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