Hidden representatives moved from sequence to viewport
[jalview.git] / src / jalview / appletgui / AlignViewport.java
index ad7113a..88a0b0f 100755 (executable)
@@ -111,6 +111,8 @@ public class AlignViewport
 \r
   String sequenceSetID;\r
 \r
+  Hashtable hiddenRepSequences;\r
+\r
   public AlignViewport(AlignmentI al, JalviewLite applet)\r
   {\r
     this.applet = applet;\r
@@ -951,6 +953,33 @@ public class AlignViewport
     hasHiddenColumns = true;\r
   }\r
 \r
+  public void hideRepSequences(SequenceI repSequence, SequenceGroup sg)\r
+  {\r
+    int sSize = sg.getSize();\r
+    if(sSize < 2)\r
+      return;\r
+\r
+    if(hiddenRepSequences==null)\r
+      hiddenRepSequences = new Hashtable();\r
+\r
+     hiddenRepSequences.put(repSequence, sg);\r
+\r
+    //Hide all sequences except the repSequence\r
+    SequenceI [] seqs = new SequenceI[sSize-1];\r
+    int index = 0;\r
+    for(int i=0; i<sSize; i++)\r
+      if(sg.getSequenceAt(i)!=repSequence)\r
+      {\r
+        if(index==sSize-1)\r
+          return;\r
+\r
+        seqs[index++] = sg.getSequenceAt(i);\r
+      }\r
+\r
+    hideSequence(seqs);\r
+\r
+    }\r
+\r
   public void hideAllSelectedSeqs()\r
   {\r
     if (selectionGroup == null)\r
@@ -997,7 +1026,7 @@ public class AlignViewport
         selectionGroup = new SequenceGroup();\r
         selectionGroup.setEndRes(alignment.getWidth()-1);\r
       }\r
-      Vector tmp = alignment.getHiddenSequences().showAll();\r
+      Vector tmp = alignment.getHiddenSequences().showAll(hiddenRepSequences);\r
       for(int t=0; t<tmp.size(); t++)\r
       {\r
         selectionGroup.addSequence(\r
@@ -1006,7 +1035,8 @@ public class AlignViewport
       }\r
       firePropertyChange("alignment", null, alignment.getSequences());\r
       hasHiddenRows = false;\r
-    }\r
+      hiddenRepSequences = null;\r
+      }\r
   }\r
 \r
   public int adjustForHiddenSeqs(int alignmentIndex)\r
@@ -1047,7 +1077,7 @@ public class AlignViewport
     int start = 0, end = 0;\r
     if(selectedRegionOnly && selectionGroup!=null)\r
     {\r
-      iSize = selectionGroup.getSize(false);\r
+      iSize = selectionGroup.getSize();\r
       seqs = selectionGroup.getSequencesInOrder(alignment);\r
       start = selectionGroup.getStartRes();\r
       end = selectionGroup.getEndRes(); // inclusive for start and end in SeqCigar constructor\r
@@ -1142,7 +1172,7 @@ public class AlignViewport
     int start = 0, end = 0;\r
     if(selectedRegionOnly && selectionGroup!=null)\r
     {\r
-      iSize = selectionGroup.getSize(false);\r
+      iSize = selectionGroup.getSize();\r
       seqs = selectionGroup.getSequencesInOrder(alignment);\r
       start = selectionGroup.getStartRes();\r
       end = selectionGroup.getEndRes()+1;\r
@@ -1310,7 +1340,7 @@ public class AlignViewport
       if(sg.cs!=null && sg.cs instanceof ClustalxColourScheme)\r
       {\r
         ((ClustalxColourScheme)sg.cs).resetClustalX(\r
-            sg.getSequences(true), sg.getWidth());\r
+            sg.getSequences(hiddenRepSequences), sg.getWidth());\r
       }\r
       sg.recalcConservation();\r
     }\r