Output annotations
[jalview.git] / src / jalview / appletgui / SeqPanel.java
index 8e70e35..89e2086 100755 (executable)
@@ -138,6 +138,24 @@ public class SeqPanel
    {\r
      seqCanvas.cursorX += dx;\r
      seqCanvas.cursorY += dy;\r
+     if (av.hasHiddenColumns && !av.colSel.isVisible(seqCanvas.cursorX))\r
+     {\r
+       int original = seqCanvas.cursorX - dx;\r
+       int maxWidth = av.alignment.getWidth();\r
+\r
+       while(!av.colSel.isVisible(seqCanvas.cursorX)\r
+             && seqCanvas.cursorX<maxWidth\r
+             && seqCanvas.cursorX>0)\r
+       {\r
+         seqCanvas.cursorX += dx;\r
+       }\r
+\r
+       if(seqCanvas.cursorX>=maxWidth\r
+          || !av.colSel.isVisible(seqCanvas.cursorX) )\r
+       {\r
+         seqCanvas.cursorX = original;\r
+       }\r
+      }\r
      scrollToVisible();\r
    }\r
 \r
@@ -169,13 +187,13 @@ public class SeqPanel
        {\r
          ap.scrollUp(false);\r
        }\r
-       while (seqCanvas.cursorX < av.startRes)\r
+       while (seqCanvas.cursorX < av.colSel.adjustForHiddenColumns(av.startRes))\r
        {\r
 \r
          if (!ap.scrollRight(false))\r
            break;\r
        }\r
-       while (seqCanvas.cursorX > av.endRes)\r
+       while (seqCanvas.cursorX > av.colSel.adjustForHiddenColumns(av.endRes))\r
        {\r
          if (!ap.scrollRight(true))\r
            break;\r
@@ -197,7 +215,7 @@ public class SeqPanel
        SequenceGroup sg = av.selectionGroup;\r
        //Find the top and bottom of this group\r
        int min = av.alignment.getHeight(), max = 0;\r
-       for(int i=0; i<sg.getSize(false); i++)\r
+       for(int i=0; i<sg.getSize(); i++)\r
        {\r
          int index = av.alignment.findIndex( sg.getSequenceAt(i) );\r
          if(index > max)\r
@@ -233,7 +251,7 @@ public class SeqPanel
        else\r
        {\r
          // Now add any sequences between min and max\r
-         sg.getSequences(false).removeAllElements();\r
+         sg.getSequences(null).removeAllElements();\r
          for (int i = min; i < max; i++)\r
          {\r
            sg.addSequence(av.alignment.getSequenceAt(i), false);\r
@@ -712,24 +730,18 @@ public class SeqPanel
     boolean fixedColumns = false;\r
     SequenceGroup sg = av.getSelectionGroup();\r
 \r
+    SequenceI seq = av.alignment.getSequenceAt(startseq);\r
 \r
       if (!groupEditing && av.hasHiddenRows)\r
       {\r
-        if (av.alignment.getSequenceAt(startseq).getHiddenSequences() != null)\r
+        if (av.hiddenRepSequences!=null\r
+            && av.hiddenRepSequences.containsKey(seq))\r
         {\r
+          sg = (SequenceGroup)av.hiddenRepSequences.get(seq);\r
           groupEditing = true;\r
-        }\r
-      }\r
-\r
-      //No group, but the sequence may represent a group\r
-      if (groupEditing\r
-          && sg == null\r
-          && av.alignment.getSequenceAt(startseq).getHiddenSequences() == null)\r
-      {\r
-        groupEditing = false;\r
+          }\r
       }\r
 \r
-      SequenceI seq = av.alignment.getSequenceAt(startseq);\r
       StringBuffer message = new StringBuffer();\r
       if (groupEditing)\r
       {\r
@@ -758,7 +770,7 @@ public class SeqPanel
 \r
       //Are we editing within a selection group?\r
       if (groupEditing\r
-          || (sg != null && sg.getSequences(true).contains(seq)))\r
+          || (sg != null && sg.getSequences(av.hiddenRepSequences).contains(seq)))\r
       {\r
         fixedColumns = true;\r
 \r
@@ -766,9 +778,7 @@ public class SeqPanel
         //but the sequence represents a group\r
         if (sg == null)\r
         {\r
-          sg = new SequenceGroup(null, null, false, false, false, 0,\r
-                                 av.alignment.getWidth()-1);\r
-          sg.addSequence(av.alignment.getSequenceAt(startseq), false);\r
+          sg = (SequenceGroup) av.hiddenRepSequences.get(seq);\r
         }\r
 \r
         fixedLeft = sg.getStartRes();\r
@@ -827,7 +837,7 @@ public class SeqPanel
 \r
       if (groupEditing)\r
       {\r
-        Vector vseqs = sg.getSequences(true);\r
+        Vector vseqs = sg.getSequences(av.hiddenRepSequences);\r
         int g, groupSize = vseqs.size();\r
         SequenceI[] groupSeqs = new SequenceI[groupSize];\r
         for (g = 0; g < groupSeqs.length; g++)\r
@@ -875,7 +885,7 @@ public class SeqPanel
 \r
           if (!blank)\r
           {\r
-            if(sg.getSize(false) == av.alignment.getHeight()  )\r
+            if(sg.getSize() == av.alignment.getHeight()  )\r
             {\r
               if((av.hasHiddenColumns\r
                   && startres<av.getColumnSelection().getHiddenBoundaryRight(startres)))\r
@@ -1127,7 +1137,7 @@ public class SeqPanel
       }\r
     }\r
 \r
-    else if (!stretchGroup.getSequences(false).contains(sequence)\r
+    else if (!stretchGroup.getSequences(null).contains(sequence)\r
              || stretchGroup.getStartRes() > res\r
              || stretchGroup.getEndRes() < res)\r
     {\r
@@ -1227,7 +1237,7 @@ public class SeqPanel
       if (stretchGroup.cs instanceof ClustalxColourScheme)\r
       {\r
         ( (ClustalxColourScheme) stretchGroup.cs).resetClustalX(\r
-            stretchGroup.getSequences(true),\r
+            stretchGroup.getSequences(av.hiddenRepSequences),\r
             stretchGroup.getWidth());\r
       }\r
 \r
@@ -1337,7 +1347,7 @@ public class SeqPanel
 \r
           Sequence nextSeq = (Sequence) av.getAlignment().getSequenceAt(oldSeq);\r
 \r
-          if (stretchGroup.getSequences(false).contains(nextSeq))\r
+          if (stretchGroup.getSequences(null).contains(nextSeq))\r
           {\r
               stretchGroup.deleteSequence(seq, false);\r
           }\r