sequences are private in SequenceGroup
authoramwaterhouse <Andrew Waterhouse>
Wed, 12 Jul 2006 11:20:59 +0000 (11:20 +0000)
committeramwaterhouse <Andrew Waterhouse>
Wed, 12 Jul 2006 11:20:59 +0000 (11:20 +0000)
37 files changed:
src/jalview/analysis/AlignmentSorter.java
src/jalview/appletgui/APopupMenu.java
src/jalview/appletgui/AlignFrame.java
src/jalview/appletgui/FeatureRenderer.java
src/jalview/appletgui/Finder.java
src/jalview/appletgui/IdCanvas.java
src/jalview/appletgui/PCAPanel.java
src/jalview/appletgui/PairwiseAlignPanel.java
src/jalview/appletgui/RedundancyPanel.java
src/jalview/appletgui/RotatableCanvas.java
src/jalview/appletgui/SeqCanvas.java
src/jalview/appletgui/SeqPanel.java
src/jalview/appletgui/TreeCanvas.java
src/jalview/datamodel/Alignment.java
src/jalview/datamodel/AlignmentI.java
src/jalview/datamodel/HiddenSequences.java
src/jalview/datamodel/Sequence.java
src/jalview/datamodel/SequenceGroup.java
src/jalview/gui/AlignFrame.java
src/jalview/gui/AlignViewport.java
src/jalview/gui/AlignmentPanel.java
src/jalview/gui/AnnotationPanel.java
src/jalview/gui/DasSourceBrowser.java
src/jalview/gui/Finder.java
src/jalview/gui/IdCanvas.java
src/jalview/gui/IdPanel.java
src/jalview/gui/Jalview2XML.java
src/jalview/gui/Jalview2XML_V1.java
src/jalview/gui/PCAPanel.java
src/jalview/gui/PairwiseAlignPanel.java
src/jalview/gui/PopupMenu.java
src/jalview/gui/RedundancyPanel.java
src/jalview/gui/RotatableCanvas.java
src/jalview/gui/ScalePanel.java
src/jalview/gui/SeqCanvas.java
src/jalview/gui/SeqPanel.java
src/jalview/gui/TreeCanvas.java

index 20101dc..c2814b8 100755 (executable)
@@ -184,7 +184,7 @@ public class AlignmentSorter
             {\r
                 SequenceGroup sg2 = (SequenceGroup) groups.elementAt(j);\r
 \r
-                if (sg.getSize() > sg2.getSize())\r
+                if (sg.getSize(false) > sg2.getSize(false))\r
                 {\r
                     groups.insertElementAt(sg, j);\r
 \r
index 1c9b3cd..3401cc4 100755 (executable)
@@ -82,7 +82,7 @@ public class APopupMenu
 \r
     SequenceGroup sg = ap.av.getSelectionGroup();\r
 \r
-    if (sg != null && sg.getSize()>0)\r
+    if (sg != null && sg.getSize(false)>0)\r
     {\r
       showText.setState(sg.getDisplayText());\r
       showColourText.setState(sg.getColourText());\r
@@ -209,12 +209,14 @@ public class APopupMenu
       SequenceGroup sg = ap.av.getSelectionGroup();\r
       if (sg != null)\r
       {\r
-        for (int g = 0; g < sg.getSize(); g++)\r
+        for (int g = 0; g < sg.getSize(true); g++)\r
         {\r
           if (source == toggleCase)\r
-            sg.getSequenceAt(g).toggleCase(sg.getStartRes(), sg.getEndRes() + 1);\r
+           ((SequenceI) sg.getSequences(true).elementAt(g))\r
+          .toggleCase(sg.getStartRes(), sg.getEndRes() + 1);\r
           else\r
-            sg.getSequenceAt(g).changeCase(source == toUpper, sg.getStartRes(),\r
+            ((SequenceI) sg.getSequences(true).elementAt(g))\r
+                .changeCase(source == toUpper, sg.getStartRes(),\r
                                            sg.getEndRes() + 1);\r
         }\r
         ap.seqPanel.seqCanvas.repaint();\r
@@ -333,7 +335,7 @@ public class APopupMenu
   protected void clustalColour_actionPerformed()\r
   {\r
     SequenceGroup sg = getGroup();\r
-    sg.cs = new ClustalxColourScheme(sg.sequences, ap.av.alignment.getWidth());\r
+    sg.cs = new ClustalxColourScheme(sg.getSequences(true), ap.av.alignment.getWidth());\r
     refresh();\r
   }\r
 \r
@@ -393,7 +395,7 @@ public class APopupMenu
 \r
     if (abovePIDColour.getState())\r
     {\r
-      sg.cs.setConsensus(AAFrequency.calculate(sg.sequences, 0,\r
+      sg.cs.setConsensus(AAFrequency.calculate(sg.getSequences(true), 0,\r
                                                ap.av.alignment.getWidth()));\r
       int threshold = SliderPanel.setPIDSliderSource(ap, sg.cs,\r
           getGroup().getName());\r
@@ -421,7 +423,7 @@ public class APopupMenu
   {\r
     SequenceGroup sg = getGroup();\r
     sg.cs = new PIDColourScheme();\r
-    sg.cs.setConsensus(AAFrequency.calculate(sg.sequences, 0,\r
+    sg.cs.setConsensus(AAFrequency.calculate(sg.getSequences(true), 0,\r
                                              ap.av.alignment.getWidth()));\r
     refresh();\r
   }\r
@@ -432,7 +434,7 @@ public class APopupMenu
 \r
     sg.cs = new Blosum62ColourScheme();\r
 \r
-    sg.cs.setConsensus(AAFrequency.calculate(sg.sequences, 0,\r
+    sg.cs.setConsensus(AAFrequency.calculate(sg.getSequences(true), 0,\r
                                              ap.av.alignment.getWidth()));\r
 \r
     refresh();\r
@@ -455,7 +457,7 @@ public class APopupMenu
 \r
       Conservation c = new Conservation("Group",\r
                                         ResidueProperties.propHash, 3,\r
-                                        sg.sequences, 0,\r
+                                        sg.getSequences(true), 0,\r
                                         ap.av.alignment.getWidth());\r
 \r
       c.calculate();\r
index 93f48ee..495469c 100755 (executable)
@@ -647,13 +647,13 @@ public void itemStateChanged(ItemEvent evt)
       for (int i = 1; i < viewport.alignment.getHeight(); i++)\r
       {\r
         SequenceI seq = viewport.alignment.getSequenceAt(i);\r
-        if (!sg.sequences.contains(seq))\r
+        if (!sg.getSequences(false).contains(seq))\r
         {\r
           continue;\r
         }\r
 \r
         SequenceI temp = viewport.alignment.getSequenceAt(i - 1);\r
-        if (sg.sequences.contains(temp))\r
+        if (sg.getSequences(false).contains(temp))\r
         {\r
           continue;\r
         }\r
@@ -667,13 +667,13 @@ public void itemStateChanged(ItemEvent evt)
       for (int i = viewport.alignment.getHeight() - 2; i > -1; i--)\r
       {\r
         SequenceI seq = viewport.alignment.getSequenceAt(i);\r
-        if (!sg.sequences.contains(seq))\r
+        if (!sg.getSequences(true).contains(seq))\r
         {\r
           continue;\r
         }\r
 \r
         SequenceI temp = viewport.alignment.getSequenceAt(i + 1);\r
-        if (sg.sequences.contains(temp))\r
+        if (sg.getSequences(true).contains(temp))\r
         {\r
           continue;\r
         }\r
@@ -697,7 +697,7 @@ public void itemStateChanged(ItemEvent evt)
     SequenceGroup sg = viewport.getSelectionGroup();\r
     copiedSequences = new StringBuffer();\r
     Hashtable orderedSeqs = new Hashtable();\r
-    for (int i = 0; i < sg.getSize(); i++)\r
+    for (int i = 0; i < sg.getSize(false); i++)\r
     {\r
       SequenceI seq = sg.getSequenceAt(i);\r
       int index = viewport.alignment.findIndex(seq);\r
@@ -707,7 +707,7 @@ public void itemStateChanged(ItemEvent evt)
     int index = 0, startRes, endRes;\r
     char ch;\r
 \r
-    for (int i = 0; i < sg.getSize(); i++)\r
+    for (int i = 0; i < sg.getSize(false); i++)\r
     {\r
         SequenceI seq = null;\r
 \r
@@ -853,10 +853,10 @@ public void itemStateChanged(ItemEvent evt)
 \r
     SequenceGroup sg = viewport.getSelectionGroup();\r
     boolean allSequences = false;\r
-    if(sg.sequences.size()==viewport.alignment.getHeight())\r
+    if(sg.getSize(false)==viewport.alignment.getHeight())\r
           allSequences = true;\r
 \r
-    for (int i = 0; i < sg.sequences.size(); i++)\r
+    for (int i = 0; i < sg.getSize(false); i++)\r
     {\r
       SequenceI seq = sg.getSequenceAt(i);\r
       int index = viewport.getAlignment().findIndex(seq);\r
@@ -1037,10 +1037,10 @@ public void itemStateChanged(ItemEvent evt)
     int start=0, end = viewport.alignment.getWidth();\r
 \r
     if (viewport.getSelectionGroup() != null\r
-        && viewport.getSelectionGroup().sequences != null\r
-        && viewport.getSelectionGroup().sequences.size()>0)\r
+        && viewport.getSelectionGroup().getSequences(false) != null\r
+        && viewport.getSelectionGroup().getSize(false)>0)\r
     {\r
-      seqs = viewport.getSelectionGroup().sequences;\r
+      seqs = viewport.getSelectionGroup().getSequences(true);\r
       start = viewport.getSelectionGroup().getStartRes();\r
       end = viewport.getSelectionGroup().getEndRes()+1;\r
     }\r
@@ -1146,7 +1146,8 @@ public void itemStateChanged(ItemEvent evt)
       SequenceGroup sg = (SequenceGroup)viewport.alignment.getGroups().elementAt(s);\r
       if(sg.cs!=null && sg.cs instanceof ClustalxColourScheme)\r
       {\r
-        ((ClustalxColourScheme)sg.cs).resetClustalX(sg.sequences, sg.getWidth());\r
+        ((ClustalxColourScheme)sg.cs).resetClustalX(\r
+            sg.getSequences(true), sg.getWidth());\r
       }\r
       sg.recalcConservation();\r
     }\r
@@ -1382,7 +1383,7 @@ public void itemStateChanged(ItemEvent evt)
         }\r
         if (cs instanceof ClustalxColourScheme)\r
         {\r
-          sg.cs = new ClustalxColourScheme(sg.sequences, sg.getWidth());\r
+          sg.cs = new ClustalxColourScheme(sg.getSequences(true), sg.getWidth());\r
         }\r
         else\r
         {\r
@@ -1402,7 +1403,7 @@ public void itemStateChanged(ItemEvent evt)
             || cs instanceof Blosum62ColourScheme)\r
         {\r
           sg.cs.setThreshold(threshold, viewport.getIgnoreGapsConsensus());\r
-          sg.cs.setConsensus(AAFrequency.calculate(sg.sequences, 0, sg.getWidth()));\r
+          sg.cs.setConsensus(AAFrequency.calculate(sg.getSequences(true), 0, sg.getWidth()));\r
         }\r
         else\r
           sg.cs.setThreshold(0, viewport.getIgnoreGapsConsensus());\r
@@ -1411,7 +1412,7 @@ public void itemStateChanged(ItemEvent evt)
         {\r
           Conservation c = new Conservation("Group",\r
                                             ResidueProperties.propHash, 3,\r
-                                            sg.sequences, 0,\r
+                                            sg.getSequences(true), 0,\r
                                             viewport.alignment.getWidth() - 1);\r
           c.calculate();\r
           c.verdict(false, viewport.ConsPercGaps);\r
@@ -1529,7 +1530,7 @@ public void itemStateChanged(ItemEvent evt)
 \r
   public void pairwiseAlignmentMenuItem_actionPerformed()\r
   {\r
-    if (viewport.getSelectionGroup().getSize() > 1)\r
+    if (viewport.getSelectionGroup().getSize(false) > 1)\r
     {\r
       Frame frame = new Frame();\r
       frame.add(new PairwiseAlignPanel(alignPanel));\r
@@ -1559,8 +1560,8 @@ public void itemStateChanged(ItemEvent evt)
     }\r
 \r
     if ( (viewport.getSelectionGroup() != null &&\r
-          viewport.getSelectionGroup().getSize() < 4 &&\r
-          viewport.getSelectionGroup().getSize() > 0)\r
+          viewport.getSelectionGroup().getSize(false) < 4 &&\r
+          viewport.getSelectionGroup().getSize(false) > 0)\r
         || viewport.getAlignment().getHeight() < 4)\r
     {\r
       return;\r
@@ -1620,9 +1621,11 @@ public void itemStateChanged(ItemEvent evt)
 \r
     final TreePanel tp;\r
     if (viewport.getSelectionGroup() != null &&\r
-        viewport.getSelectionGroup().getSize() > 3)\r
+        viewport.getSelectionGroup().getSize(false) > 3)\r
     {\r
-      tp = new TreePanel(viewport, viewport.getSelectionGroup().sequences, type,\r
+      tp = new TreePanel(viewport,\r
+                         viewport.getSelectionGroup().getSequences(false),\r
+                         type,\r
                          pwType,\r
                          0, viewport.alignment.getWidth());\r
     }\r
index 0f9f393..551dea7 100755 (executable)
@@ -400,10 +400,10 @@ public class FeatureRenderer
   {\r
     void setTransparency(Graphics g, float value)\r
     {\r
-      Graphics2D g2 = (Graphics2D) g;\r
-      g2.setComposite(\r
-          AlphaComposite.getInstance(\r
-              AlphaComposite.SRC_OVER, value));\r
+  //    Graphics2D g2 = (Graphics2D) g;\r
+   //   g2.setComposite(\r
+    //      AlphaComposite.getInstance(\r
+    //          AlphaComposite.SRC_OVER, value));\r
     }\r
   }\r
 \r
index 570241d..47b756d 100755 (executable)
@@ -143,7 +143,7 @@ public class Finder extends Panel implements ActionListener
       int res = Integer.parseInt(searchString);\r
       found = true;\r
 \r
-      if (av.getSelectionGroup() == null || av.getSelectionGroup().getSize() < 1)\r
+      if (av.getSelectionGroup() == null || av.getSelectionGroup().getSize(false) < 1)\r
       {\r
         seq = (Sequence) av.getAlignment().getSequenceAt(0);\r
       }\r
@@ -166,7 +166,7 @@ public class Finder extends Panel implements ActionListener
     SequenceGroup selection = av.getSelectionGroup();\r
     if (selection != null)\r
     {\r
-      if (selection.getSize() < 1 ||\r
+      if (selection.getSize(false) < 1 ||\r
           (selection.getEndRes() - selection.getStartRes() < 2))\r
       {\r
         selection = null;\r
@@ -178,7 +178,7 @@ public class Finder extends Panel implements ActionListener
 \r
       seq = (Sequence) av.alignment.getSequenceAt(seqIndex);\r
 \r
-      if (selection != null && !selection.sequences.contains(seq))\r
+      if (selection != null && !selection.getSequences(false).contains(seq))\r
       {\r
         seqIndex++;\r
         resIndex = 0;\r
index 44ba2e0..f7f1b20 100755 (executable)
@@ -59,7 +59,7 @@ public class IdCanvas
       gg.setColor(Color.white);\r
     }\r
     else if (av.getSelectionGroup() != null &&\r
-             av.getSelectionGroup().sequences.contains(s))\r
+             av.getSelectionGroup().getSequences(false).contains(s))\r
     {\r
       gg.setColor(Color.lightGray);\r
       gg.fillRect(0, ((i - starty) * charHeight) + ypos,\r
@@ -234,7 +234,7 @@ public class IdCanvas
         }\r
         else if (av.getSelectionGroup() != null\r
                  &&\r
-                 av.getSelectionGroup().sequences.contains(av.alignment.\r
+                 av.getSelectionGroup().getSequences(false).contains(av.alignment.\r
             getSequenceAt(i)))\r
         {\r
           currentColor = Color.lightGray;\r
index a75de06..849a0a9 100755 (executable)
@@ -57,10 +57,10 @@ public class PCAPanel
     }\r
 \r
     this.av = av;\r
-    if (av.getSelectionGroup()!=null && av.getSelectionGroup().getSize() > 3)\r
+    if (av.getSelectionGroup()!=null && av.getSelectionGroup().getSize(false) > 3)\r
     {\r
-      seqs = new Sequence[av.getSelectionGroup().getSize()];\r
-      for (int i = 0; i < av.getSelectionGroup().getSize(); i++)\r
+      seqs = new Sequence[av.getSelectionGroup().getSize(false)];\r
+      for (int i = 0; i < av.getSelectionGroup().getSize(false); i++)\r
       {\r
         seqs[i] = av.getSelectionGroup().getSequenceAt(i);\r
       }\r
index 0dd3253..d0b0c98 100755 (executable)
@@ -47,7 +47,7 @@ public class PairwiseAlignPanel
     float scores[][] = new float[ap.av.alignment.getHeight()][ap.av.alignment.\r
         getHeight()];\r
     double totscore = 0;\r
-    int count = ap.av.getSelectionGroup().getSize();\r
+    int count = ap.av.getSelectionGroup().getSize(false);\r
 \r
     int acount = 0;\r
     Sequence seq;\r
index 2732612..c71fe29 100755 (executable)
@@ -101,10 +101,10 @@ public class RedundancyPanel extends SliderPanel implements Runnable, WindowList
       originalSequences = new Vector();\r
       originalColours = new Hashtable();\r
 \r
-      if ( (sg != null) && (sg.getSize() >= 1))\r
+      if ( (sg != null) && (sg.getSize(false) >= 1))\r
       {\r
-         height = sg.getSize();\r
-        for (int i = 0; i < sg.getSize(); i++)\r
+         height = sg.getSize(false);\r
+        for (int i = 0; i < sg.getSize(false); i++)\r
         {\r
           sel.addElement(sg.getSequenceAt(i));\r
         }\r
index 370de5f..f6cbddd 100755 (executable)
@@ -382,7 +382,7 @@ public class RotatableCanvas
 \r
       if (av.getSelectionGroup() != null)\r
       {\r
-        if (av.getSelectionGroup().sequences.contains( ( (SequencePoint) points.\r
+        if (av.getSelectionGroup().getSequences(false).contains( ( (SequencePoint) points.\r
             elementAt(i)).sequence))\r
         {\r
           g.setColor(Color.gray);\r
@@ -577,7 +577,7 @@ public class RotatableCanvas
       {\r
         if (av != null)\r
         {\r
-          if (!av.getSelectionGroup().sequences.contains(sp.sequence))\r
+          if (!av.getSelectionGroup().getSequences(false).contains(sp.sequence))\r
           {\r
             av.getSelectionGroup().addSequence(sp.sequence, true);\r
           }\r
index 02c9990..0df4322 100755 (executable)
@@ -519,12 +519,12 @@ public class SeqCanvas
               }\r
 \r
               if ( (sx <= (endRes-startRes)*av.charWidth) &&\r
-                      group.sequences.contains(av.alignment.getSequenceAt(\r
+                      group.getSequences(false).contains(av.alignment.getSequenceAt(\r
                               i)))\r
               {\r
                 if ( (bottom == -1) &&\r
                     (i >= alHeight ||\r
-                     !group.sequences.contains(\r
+                     !group.getSequences(false).contains(\r
                          av.alignment.getSequenceAt(i + 1))))\r
                 {\r
                     bottom = sy + av.charHeight;\r
@@ -533,7 +533,7 @@ public class SeqCanvas
                   if (!inGroup)\r
                   {\r
                       if (((top == -1) && (i == 0)) ||\r
-                              !group.sequences.contains(\r
+                              !group.getSequences(false).contains(\r
                                   av.alignment.getSequenceAt(i - 1)))\r
                       {\r
                           top = sy;\r
index 5ff10ce..6869964 100755 (executable)
@@ -187,7 +187,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(); i++)\r
+       for(int i=0; i<sg.getSize(false); i++)\r
        {\r
          int index = av.alignment.findIndex( sg.getSequenceAt(i) );\r
          if(index > max)\r
@@ -223,7 +223,7 @@ public class SeqPanel
        else\r
        {\r
          // Now add any sequences between min and max\r
-         sg.sequences.removeAllElements();\r
+         sg.getSequences(false).removeAllElements();\r
          for (int i = min; i < max; i++)\r
          {\r
            sg.addSequence(av.alignment.getSequenceAt(i), false);\r
@@ -720,7 +720,7 @@ public class SeqPanel
 \r
         //Are we editing within a selection group?\r
         if (groupEditing\r
-            || (sg != null && sg.sequences.contains(seq)))\r
+            || (sg != null && sg.getSequences(false).contains(seq)))\r
         {\r
           fixedColumns = true;\r
 \r
@@ -771,7 +771,7 @@ public class SeqPanel
                  fixedRight--)\r
             {\r
               blank = true;\r
-              for (int s = 0; s < sg.getSize(); s++)\r
+              for (int s = 0; s < sg.getSize(false); s++)\r
               {\r
                 seq = sg.getSequenceAt(s);\r
                 for (int j = 0; j < startres - lastres; j++)\r
@@ -790,7 +790,7 @@ public class SeqPanel
 \r
             if (!blank)\r
             {\r
-              if(sg.getSize() == av.alignment.getHeight())\r
+              if(sg.getSize(false) == av.alignment.getHeight())\r
               {\r
                 //We can still insert gaps if the selectionGroup\r
                 //contains all the sequences\r
@@ -812,7 +812,7 @@ public class SeqPanel
             /// Are we able to delete?\r
             // ie are all columns blank?\r
 \r
-            for (int s = 0; s < sg.getSize(); s++)\r
+            for (int s = 0; s < sg.getSize(false); s++)\r
             {\r
               seq = sg.getSequenceAt(s);\r
 \r
@@ -835,7 +835,7 @@ public class SeqPanel
           }\r
 \r
 \r
-          for (int i = 0; i < sg.getSize(); i++)\r
+          for (int i = 0; i < sg.getSize(false); i++)\r
           {\r
             seq = sg.getSequenceAt(i);\r
 \r
@@ -1058,7 +1058,7 @@ public class SeqPanel
       }\r
     }\r
 \r
-    else if (!stretchGroup.sequences.contains(sequence)\r
+    else if (!stretchGroup.getSequences(false).contains(sequence)\r
              || stretchGroup.getStartRes() > res\r
              || stretchGroup.getEndRes() < res)\r
     {\r
@@ -1171,8 +1171,8 @@ public class SeqPanel
     {\r
       if (stretchGroup.cs instanceof ClustalxColourScheme)\r
       {\r
-        ( (ClustalxColourScheme) stretchGroup.cs).resetClustalX(stretchGroup.\r
-            sequences,\r
+        ( (ClustalxColourScheme) stretchGroup.cs).resetClustalX(\r
+            stretchGroup.getSequences(true),\r
             stretchGroup.getWidth());\r
       }\r
 \r
@@ -1275,7 +1275,7 @@ public class SeqPanel
 \r
           Sequence nextSeq = (Sequence) av.getAlignment().getSequenceAt(oldSeq);\r
 \r
-          if (stretchGroup.sequences.contains(nextSeq))\r
+          if (stretchGroup.getSequences(false).contains(nextSeq))\r
           {\r
               stretchGroup.deleteSequence(seq, false);\r
           }\r
index e3f6c3c..af1d752 100755 (executable)
@@ -188,7 +188,7 @@ public class TreeCanvas
       // Colour selected leaves differently\r
       SequenceGroup selected = av.getSelectionGroup();\r
       if (selected != null &&\r
-          selected.sequences.contains( (SequenceI) node.element()))\r
+          selected.getSequences(false).contains( (SequenceI) node.element()))\r
       {\r
         g.setColor(Color.gray);\r
 \r
@@ -523,7 +523,8 @@ public class TreeCanvas
             {\r
             Conservation c = new Conservation("Group",\r
                                               ResidueProperties.propHash, 3,\r
-                                              sg.sequences, sg.getStartRes(),\r
+                                              sg.getSequences(false),\r
+                                              sg.getStartRes(),\r
                                               sg.getEndRes());\r
 \r
             c.calculate();\r
index daae7c5..070b927 100755 (executable)
@@ -279,19 +279,13 @@ public class Alignment implements AlignmentI
 \r
 \r
     /**    */\r
-    public SequenceGroup findGroup(int i)\r
-    {\r
-        return findGroup(getSequenceAt(i));\r
-    }\r
-\r
-    /**    */\r
     public SequenceGroup findGroup(SequenceI s)\r
     {\r
         for (int i = 0; i < this.groups.size(); i++)\r
         {\r
             SequenceGroup sg = (SequenceGroup) groups.elementAt(i);\r
 \r
-            if (sg.sequences.contains(s))\r
+            if (sg.getSequences(false).contains(s))\r
             {\r
                 return sg;\r
             }\r
@@ -315,14 +309,14 @@ public class Alignment implements AlignmentI
         for (int i = 0; i < gSize; i++)\r
         {\r
             SequenceGroup sg = (SequenceGroup) groups.elementAt(i);\r
-            if(sg==null || sg.sequences==null)\r
+            if(sg==null || sg.getSequences(false)==null)\r
             {\r
               this.deleteGroup(sg);\r
               gSize--;\r
               continue;\r
             }\r
 \r
-            if (sg.sequences.contains(s))\r
+            if (sg.getSequences(false).contains(s))\r
             {\r
                 temp.addElement(sg);\r
             }\r
index 19b5b1c..dbf3c35 100755 (executable)
@@ -162,15 +162,6 @@ public interface AlignmentI
     public void removeGaps();\r
 \r
 \r
-    /**\r
-     * Finds group that sequence at index i in alignment is part of.\r
-     *\r
-     * @param i Index in alignment.\r
-     *\r
-     * @return First group found for sequence at position i. WARNING :\r
-     * Sequences may be members of several groups. This method is incomplete.\r
-     */\r
-    public SequenceGroup findGroup(int i);\r
 \r
     /**\r
      * Finds group that given sequence is part of.\r
index 3a5946c..8436120 100755 (executable)
@@ -49,12 +49,22 @@ public class HiddenSequences
     alignment.deleteSequence(sequence);\r
   }\r
 \r
+  public void showAll()\r
+  {\r
+   for(int i=0; i<alignment.getHeight()+hiddenSequences.size(); i++)\r
+     showSequence(i);\r
+  }\r
+\r
   public void showSequence(int alignmentIndex)\r
   {\r
     SequenceI repSequence = alignment.getSequenceAt(alignmentIndex);\r
-    if(repSequence.getHiddenSequences()==null && alignmentIndex>0)\r
+    if(repSequence!=null\r
+       && repSequence.getHiddenSequences()==null\r
+       && alignmentIndex>0)\r
       repSequence = alignment.getSequenceAt(alignmentIndex-1);\r
-    if(repSequence.getHiddenSequences()==null)\r
+\r
+    if(repSequence!=null\r
+       && repSequence.getHiddenSequences()==null)\r
       repSequence = null;\r
 \r
     int start = adjustForHiddenSeqs(alignmentIndex-1);\r
index 0dec805..50b1e2b 100755 (executable)
@@ -624,11 +624,10 @@ public class Sequence implements SequenceI
     public void showHiddenSequence(SequenceI seq)\r
     {\r
       hiddenSequences.deleteSequence(seq, false);\r
-      if (hiddenSequences.getSize() < 1)\r
+      if (hiddenSequences.getSize(false) < 1)\r
       {\r
         hiddenSequences = null;\r
       }\r
-\r
     }\r
 \r
     public void changeCase(boolean toUpper, int start, int end)\r
index 6de42b9..ecdf2bc 100755 (executable)
@@ -41,9 +41,7 @@ public class SequenceGroup
     boolean displayBoxes;\r
     boolean displayText;\r
     boolean colourText;\r
-\r
-    /** DOCUMENT ME!! */\r
-    public Vector sequences = new Vector();\r
+    private Vector sequences = new Vector();\r
     int width = -1;\r
 \r
     /** DOCUMENT ME!! */\r
@@ -115,6 +113,33 @@ public class SequenceGroup
         endRes = end;\r
     }\r
 \r
+    public Vector getSequences(boolean includeHidden)\r
+    {\r
+      if(!includeHidden)\r
+        return sequences;\r
+      else\r
+      {\r
+        Vector allSequences = new Vector();\r
+        SequenceI seq;\r
+        for (int i = 0; i < sequences.size(); i++)\r
+        {\r
+          seq = (SequenceI) sequences.elementAt(i);\r
+          allSequences.addElement(seq);\r
+          if (seq.getHiddenSequences() != null)\r
+          {\r
+            for (int h = 0; h < seq.getHiddenSequences().getSize(false); h++)\r
+            {\r
+              allSequences.addElement(\r
+                  seq.getHiddenSequences().getSequenceAt(h)\r
+                  );\r
+            }\r
+          }\r
+        }\r
+\r
+        return allSequences;\r
+      }\r
+    }\r
+\r
     /**\r
      * DOCUMENT ME!\r
      *\r
@@ -344,9 +369,24 @@ public class SequenceGroup
      *\r
      * @return DOCUMENT ME!\r
      */\r
-    public int getSize()\r
+    public int getSize(boolean includeHidden)\r
     {\r
+      if(!includeHidden)\r
         return sequences.size();\r
+      else\r
+      {\r
+        int total = sequences.size();\r
+        SequenceI seq;\r
+        for (int i = 0; i < sequences.size(); i++)\r
+        {\r
+          seq = (SequenceI) sequences.elementAt(i);\r
+          if (seq.getHiddenSequences() != null)\r
+          {\r
+            total += seq.getHiddenSequences().getSize(false);\r
+          }\r
+        }\r
+        return total;\r
+      }\r
     }\r
 \r
     /**\r
index 4678c51..e59ee59 100755 (executable)
@@ -204,11 +204,6 @@ public class AlignFrame
       alignPanel.seqPanel.seqCanvas.fr.featuresAdded();\r
       alignPanel.repaint();\r
     }\r
-    else\r
-    {\r
-      System.out.println("No Features found for " +\r
-                         evt.getDasSource().getNickname());\r
-    }\r
   }\r
 \r
   Hashtable progressBars;\r
@@ -595,14 +590,14 @@ public class AlignFrame
       {\r
         SequenceI seq = viewport.alignment.getSequenceAt(i);\r
 \r
-        if (!sg.sequences.contains(seq))\r
+        if (!sg.getSequences(false).contains(seq))\r
         {\r
           continue;\r
         }\r
 \r
         SequenceI temp = viewport.alignment.getSequenceAt(i - 1);\r
 \r
-        if (sg.sequences.contains(temp))\r
+        if (sg.getSequences(false).contains(temp))\r
         {\r
           continue;\r
         }\r
@@ -617,14 +612,14 @@ public class AlignFrame
       {\r
         SequenceI seq = viewport.alignment.getSequenceAt(i);\r
 \r
-        if (!sg.sequences.contains(seq))\r
+        if (!sg.getSequences(false).contains(seq))\r
         {\r
           continue;\r
         }\r
 \r
         SequenceI temp = viewport.alignment.getSequenceAt(i + 1);\r
 \r
-        if (sg.sequences.contains(temp))\r
+        if (sg.getSequences(false).contains(temp))\r
         {\r
           continue;\r
         }\r
@@ -656,9 +651,9 @@ public class AlignFrame
     Clipboard c = Toolkit.getDefaultToolkit().getSystemClipboard();\r
 \r
     Hashtable orderedSeqs = new Hashtable();\r
-    SequenceI[] seqs = new SequenceI[sg.getSize()];\r
+    SequenceI[] seqs = new SequenceI[sg.getSize(false)];\r
 \r
-    for (int i = 0; i < sg.getSize(); i++)\r
+    for (int i = 0; i < sg.getSize(false); i++)\r
     {\r
       SequenceI seq = sg.getSequenceAt(i);\r
       int index = viewport.alignment.findIndex(seq);\r
@@ -668,7 +663,7 @@ public class AlignFrame
     int index = 0, startRes, endRes;\r
     char ch;\r
 \r
-    for (int i = 0; i < sg.getSize(); i++)\r
+    for (int i = 0; i < sg.getSize(false); i++)\r
     {\r
       SequenceI seq = null;\r
 \r
@@ -942,7 +937,7 @@ public class AlignFrame
                                    HistoryItem.HIDE));\r
 \r
 \r
-    for (int i = 0; i < sg.sequences.size(); i++)\r
+    for (int i = 0; i < sg.getSize(false); i++)\r
     {\r
       SequenceI seq = sg.getSequenceAt(i);\r
       int index = viewport.getAlignment().findIndex(seq);\r
@@ -950,7 +945,7 @@ public class AlignFrame
       seq.deleteChars(sg.getStartRes(), sg.getEndRes() + 1);\r
 \r
       // If the cut affects all sequences, remove highlighted columns\r
-      if (sg.sequences.size() == viewport.alignment.getHeight())\r
+      if (sg.getSize(false) == viewport.alignment.getHeight())\r
       {\r
         viewport.getColumnSelection().removeElements(sg.getStartRes(),\r
             sg.getEndRes() + 1);\r
@@ -1035,6 +1030,7 @@ public class AlignFrame
     viewport.setSelectionGroup(null);\r
     alignPanel.seqPanel.seqCanvas.highlightSearchResults(null);\r
     alignPanel.idPanel.idCanvas.searchResults = null;\r
+    alignPanel.repaint();\r
     PaintRefresher.Refresh(null, viewport.alignment);\r
   }\r
 \r
@@ -1187,10 +1183,10 @@ public class AlignFrame
     int end = viewport.alignment.getWidth();\r
 \r
     if (viewport.getSelectionGroup() != null\r
-        && viewport.getSelectionGroup().sequences != null\r
-        && viewport.getSelectionGroup().sequences.size() > 0)\r
+        && viewport.getSelectionGroup().getSequences(true) != null\r
+        && viewport.getSelectionGroup().getSize(true) > 0)\r
     {\r
-      seqs = viewport.getSelectionGroup().sequences;\r
+      seqs = viewport.getSelectionGroup().getSequences(true);\r
       start = viewport.getSelectionGroup().getStartRes();\r
       end = viewport.getSelectionGroup().getEndRes()+1;\r
     }\r
@@ -1302,7 +1298,8 @@ public class AlignFrame
       SequenceGroup sg = (SequenceGroup)viewport.alignment.getGroups().elementAt(s);\r
       if(sg.cs!=null && sg.cs instanceof ClustalxColourScheme)\r
       {\r
-        ((ClustalxColourScheme)sg.cs).resetClustalX(sg.sequences, sg.getWidth());\r
+        ((ClustalxColourScheme)sg.cs).resetClustalX(\r
+            sg.getSequences(true), sg.getWidth());\r
       }\r
       sg.recalcConservation();\r
     }\r
@@ -1467,12 +1464,20 @@ public class AlignFrame
     new DBRefFetcher(viewport.alignment, this);\r
   }\r
 \r
-  public void fetchSeqFeatures_actionPerformed(ActionEvent e)\r
+  public void defaultDASSource_actionPerformed(ActionEvent e)\r
   {\r
-      new DasSequenceFeatureFetcher(viewport.alignment,\r
-                                    this);\r
-      viewport.setShowSequenceFeatures(true);\r
-      showSeqFeatures.setSelected(true);\r
+    new DasSequenceFeatureFetcher(viewport.alignment, this);\r
+    viewport.setShowSequenceFeatures(true);\r
+    showSeqFeatures.setSelected(true);\r
+  }\r
+\r
+  public void modifyDASSource_actionPerformed(ActionEvent e)\r
+  {\r
+    DasSourceBrowser dsb = new DasSourceBrowser();\r
+    JInternalFrame frame = new JInternalFrame();\r
+    frame.setContentPane(dsb);\r
+    Desktop.addInternalFrame(frame, "Modify DAS Source",\r
+        600,370);\r
   }\r
 \r
 \r
@@ -1725,7 +1730,8 @@ public class AlignFrame
 \r
         if (cs instanceof ClustalxColourScheme)\r
         {\r
-          sg.cs = new ClustalxColourScheme(sg.sequences, sg.getWidth());\r
+          sg.cs = new ClustalxColourScheme(\r
+              sg.getSequences(true), sg.getWidth());\r
         }\r
         else if (cs instanceof UserColourScheme)\r
         {\r
@@ -1749,9 +1755,10 @@ public class AlignFrame
          sg.cs.setThreshold(threshold,\r
                 viewport.getIgnoreGapsConsensus());\r
 \r
-          sg.cs.setConsensus(AAFrequency.calculate(sg.sequences, 0,\r
-              sg.getWidth()));\r
-        }\r
+         sg.cs.setConsensus(AAFrequency.calculate(\r
+             sg.getSequences(true), 0,\r
+             sg.getWidth()));\r
+       }\r
         else\r
           sg.cs.setThreshold(0, viewport.getIgnoreGapsConsensus());\r
 \r
@@ -1760,7 +1767,7 @@ public class AlignFrame
         {\r
           Conservation c = new Conservation("Group",\r
                                             ResidueProperties.propHash, 3,\r
-                                            sg.sequences, 0,\r
+                                            sg.getSequences(true), 0,\r
                                             viewport.alignment.getWidth() - 1);\r
           c.calculate();\r
           c.verdict(false, viewport.ConsPercGaps);\r
@@ -2011,7 +2018,7 @@ public class AlignFrame
   public void pairwiseAlignmentMenuItem_actionPerformed(ActionEvent e)\r
   {\r
     if ( (viewport.getSelectionGroup() == null) ||\r
-        (viewport.getSelectionGroup().getSize() < 2))\r
+        (viewport.getSelectionGroup().getSize(false) < 2))\r
     {\r
       JOptionPane.showInternalMessageDialog(this,\r
                                             "You must select at least 2 sequences.",\r
@@ -2034,8 +2041,8 @@ public class AlignFrame
   public void PCAMenuItem_actionPerformed(ActionEvent e)\r
   {\r
     if ( ( (viewport.getSelectionGroup() != null) &&\r
-          (viewport.getSelectionGroup().getSize() < 4) &&\r
-          (viewport.getSelectionGroup().getSize() > 0)) ||\r
+          (viewport.getSelectionGroup().getSize(false) < 4) &&\r
+          (viewport.getSelectionGroup().getSize(false) > 0)) ||\r
         (viewport.getAlignment().getHeight() < 4))\r
     {\r
       JOptionPane.showInternalMessageDialog(this,\r
@@ -2113,15 +2120,15 @@ public class AlignFrame
     TreePanel tp;\r
 \r
     if ( (viewport.getSelectionGroup() != null) &&\r
-        (viewport.getSelectionGroup().getSize() > 3))\r
+        (viewport.getSelectionGroup().getSize(false) > 3))\r
     {\r
       int s = 0;\r
       SequenceGroup sg = viewport.getSelectionGroup();\r
 \r
       /* Decide if the selection is a column region */\r
-      while (s < sg.sequences.size())\r
+      while (s < sg.getSize(false))\r
       {\r
-        if ( ( (SequenceI) sg.sequences.elementAt(s++)).getLength() <\r
+        if ( ( (SequenceI) sg.getSequences(false).elementAt(s++)).getLength() <\r
             sg.getEndRes())\r
         {\r
           JOptionPane.showMessageDialog(Desktop.desktop,\r
@@ -2137,7 +2144,8 @@ public class AlignFrame
 \r
       title = title + " on region";\r
       tp = new TreePanel(viewport,\r
-                         viewport.getSelectionGroup().sequences, type, pwType,\r
+                         viewport.getSelectionGroup().getSequences(false),\r
+                         type, pwType,\r
                          sg.getStartRes(), sg.getEndRes());\r
     }\r
     else\r
@@ -2252,12 +2260,12 @@ public class AlignFrame
     SequenceI[] msa = null;\r
 \r
     if ( (viewport.getSelectionGroup() != null) &&\r
-        (viewport.getSelectionGroup().getSize() > 1))\r
+        (viewport.getSelectionGroup().getSize(false) > 1))\r
     {\r
       // JBPNote UGLY! To prettify, make SequenceGroup and Alignment conform to some common interface!\r
       SequenceGroup seqs = viewport.getSelectionGroup();\r
       int sz;\r
-      msa = new SequenceI[sz = seqs.getSize()];\r
+      msa = new SequenceI[sz = seqs.getSize(false)];\r
 \r
       for (int i = 0; i < sz; i++)\r
       {\r
@@ -2293,19 +2301,19 @@ public class AlignFrame
     SequenceI[] msa = null;\r
 \r
     if ( (viewport.getSelectionGroup() != null) &&\r
-        (viewport.getSelectionGroup().getSize() > 0))\r
+        (viewport.getSelectionGroup().getSize(false) > 0))\r
     {\r
       // JBPNote UGLY! To prettify, make SequenceGroup and Alignment conform to some common interface!\r
       SequenceGroup seqs = viewport.getSelectionGroup();\r
 \r
-      if ( (seqs.getSize() == 1) || !viewport.alignment.isAligned())\r
+      if ( (seqs.getSize(false) == 1) || !viewport.alignment.isAligned())\r
       {\r
         seq = (SequenceI) seqs.getSequenceAt(0);\r
       }\r
       else\r
       {\r
         int sz;\r
-        msa = new SequenceI[sz = seqs.getSize()];\r
+        msa = new SequenceI[sz = seqs.getSize(false)];\r
 \r
         for (int i = 0; i < sz; i++)\r
         {\r
index d4ba5ea..edbfde5 100755 (executable)
@@ -1133,6 +1133,12 @@ public class AlignViewport
         hasHiddenRows = false;\r
     }\r
 \r
+    public void showAllHiddenSeqs()\r
+    {\r
+      alignment.getHiddenSequences().showAll();\r
+      hasHiddenRows = false;\r
+    }\r
+\r
     public int adjustForHiddenSeqs(int alignmentIndex)\r
     {\r
       return alignment.getHiddenSequences().adjustForHiddenSeqs(alignmentIndex);\r
index 3e38254..2451a96 100755 (executable)
@@ -113,8 +113,7 @@ public class AlignmentPanel extends GAlignmentPanel
         switch (evt.getKeyCode())\r
         {\r
           case 27: // escape key\r
-            av.setSelectionGroup(null);\r
-            repaint();\r
+            alignFrame.deselectAllSequenceMenuItem_actionPerformed(null);\r
 \r
             break;\r
 \r
@@ -698,8 +697,14 @@ public class AlignmentPanel extends GAlignmentPanel
 \r
     if (av.getWrapAlignment())\r
     {\r
-      int max = av.alignment.getWidth() /\r
-          seqPanel.seqCanvas.getWrappedCanvasWidth(seqPanel.seqCanvas.getWidth()) +1;\r
+      int maxwidth = av.alignment.getWidth();\r
+\r
+      if (av.hasHiddenColumns)\r
+        maxwidth = av.getColumnSelection().findColumnPosition(maxwidth) - 1;\r
+\r
+      int max = maxwidth /\r
+          seqPanel.seqCanvas.getWrappedCanvasWidth(seqPanel.seqCanvas.getWidth()) +\r
+          1;\r
 \r
 \r
       vscroll.setMaximum(max);\r
@@ -839,7 +844,7 @@ public class AlignmentPanel extends GAlignmentPanel
     for (int i = startSeq; i < endSeq; i++)\r
     {\r
       if ( (av.getSelectionGroup() != null) &&\r
-          av.getSelectionGroup().sequences.contains(\r
+          av.getSelectionGroup().getSequences(false).contains(\r
               av.getAlignment().getSequenceAt(i)))\r
       {\r
         currentColor = Color.gray;\r
@@ -918,10 +923,15 @@ public class AlignmentPanel extends GAlignmentPanel
 \r
     int idWidth = calculateIdWidth().width + 4;\r
 \r
+    int maxwidth = av.alignment.getWidth();\r
+    if (av.hasHiddenColumns)\r
+      maxwidth = av.getColumnSelection().findColumnPosition(maxwidth) - 1;\r
+\r
+\r
     int resWidth = seqPanel.seqCanvas.getWrappedCanvasWidth(pwidth -\r
         idWidth);\r
 \r
-    int totalHeight = cHeight * (av.alignment.getWidth() / resWidth + 1);\r
+    int totalHeight = cHeight * (maxwidth / resWidth + 1);\r
 \r
     pg.setColor(Color.white);\r
     pg.fillRect(0, 0, pwidth, pheight);\r
@@ -986,8 +996,12 @@ public class AlignmentPanel extends GAlignmentPanel
 \r
   void makeAlignmentImage(int type, File file)\r
   {\r
+    int maxwidth = av.alignment.getWidth();\r
+    if (av.hasHiddenColumns)\r
+      maxwidth = av.getColumnSelection().findColumnPosition(maxwidth);\r
+\r
     int height = ( (av.alignment.getHeight() + 1) * av.charHeight) + 30;\r
-    int width = idPanel.getWidth() + (av.alignment.getWidth() * av.charWidth);\r
+    int width = idPanel.getWidth() + (maxwidth * av.charWidth);\r
     if (idPanel.getWidth() == 0)\r
     {\r
       width += calculateIdWidth().getWidth() + 4;\r
@@ -1002,7 +1016,6 @@ public class AlignmentPanel extends GAlignmentPanel
         width = alignFrame.getWidth() - 22;\r
       }\r
       else\r
-\r
         width = seqPanel.getWidth() + idPanel.getWidth();\r
 \r
     }\r
@@ -1235,7 +1248,12 @@ public class AlignmentPanel extends GAlignmentPanel
         + hgap\r
         + annotationHeight;\r
 \r
-    int height = ( (av.alignment.getWidth() / chunkWidth) + 1) * cHeight;\r
+    int maxwidth = av.alignment.getWidth();\r
+    if (av.hasHiddenColumns)\r
+      maxwidth = av.getColumnSelection().findColumnPosition(maxwidth) - 1;\r
+\r
+\r
+    int height = ( (maxwidth / chunkWidth) + 1) * cHeight;\r
 \r
     return height;\r
   }\r
index bf1372e..b0027a8 100755 (executable)
@@ -671,8 +671,8 @@ public class AnnotationPanel extends JPanel implements MouseListener,
 \r
         AlignmentAnnotation[] aa = av.alignment.getAlignmentAnnotation();\r
 \r
-        int x = 0;\r
-        int y = 0;\r
+        int x = 0, y = 0;\r
+        int column=0;\r
         char lastSS;\r
         int lastSSX;\r
         int iconOffset = av.charHeight / 2;\r
@@ -694,7 +694,6 @@ public class AnnotationPanel extends JPanel implements MouseListener,
             lastSS = ' ';\r
             lastSSX = 0;\r
 \r
-\r
             if (row.graph>0)\r
             {\r
                 if(row.graphGroup>-1 && graphGroupDrawn[ row.graphGroup ] )\r
@@ -718,18 +717,20 @@ public class AnnotationPanel extends JPanel implements MouseListener,
                 iconOffset = 0;\r
             }\r
 \r
-            int column = startRes;\r
-\r
-            while (column < endRes)\r
+            x = 0;\r
+            while (x < endRes-startRes)\r
             {\r
               if (av.hasHiddenColumns)\r
               {\r
-                column = av.getColumnSelection().adjustForHiddenColumns(column);\r
+                column = av.getColumnSelection().adjustForHiddenColumns(startRes+x);\r
                 if (column > row.annotations.length-1)\r
                 {\r
                   break;\r
                 }\r
               }\r
+              else\r
+                column = startRes+x;\r
+\r
 \r
                 if ((row.annotations.length <= column) ||\r
                         (row.annotations[column] == null))\r
@@ -741,7 +742,6 @@ public class AnnotationPanel extends JPanel implements MouseListener,
                     validRes = true;\r
                 }\r
 \r
-                x = (column - startRes) * av.charWidth;\r
 \r
                 if (activeRow == i)\r
                 {\r
@@ -755,7 +755,7 @@ public class AnnotationPanel extends JPanel implements MouseListener,
 \r
                             if (v == column)\r
                             {\r
-                                g.fillRect((column - startRes) * av.charWidth, y,\r
+                                g.fillRect(x * av.charWidth, y,\r
                                     av.charWidth, row.height);\r
                             }\r
                         }\r
@@ -773,7 +773,8 @@ public class AnnotationPanel extends JPanel implements MouseListener,
 \r
                     if (column == 0 || row.graph>0)\r
                     {\r
-                        g.drawString(row.annotations[column].displayCharacter, x+charOffset,\r
+                        g.drawString(row.annotations[column].displayCharacter,\r
+                                     x*av.charWidth+charOffset,\r
                             y + iconOffset + 3);\r
                     }\r
                     else if (\r
@@ -784,8 +785,9 @@ public class AnnotationPanel extends JPanel implements MouseListener,
                   (row.annotations[column].displayCharacter.length() <2 &&\r
                    row.annotations[column].secondaryStructure==' ')))\r
                     {\r
-                        g.drawString(row.annotations[column].displayCharacter, x+charOffset,\r
-                            y + iconOffset + 3);\r
+                        g.drawString(row.annotations[column].displayCharacter,\r
+                                     x*av.charWidth+charOffset,\r
+                                     y + iconOffset + 3);\r
                     }\r
                 }\r
 \r
@@ -803,13 +805,13 @@ public class AnnotationPanel extends JPanel implements MouseListener,
                               //Off by 1 offset when drawing rects and ovals\r
                               //to offscreen image on the MAC\r
                               g.fillRoundRect(lastSSX, y + 4 + iconOffset,\r
-                                              x - lastSSX, 7, 8, 8);\r
+                                              x*av.charWidth - lastSSX, 7, 8, 8);\r
                               break;\r
                             }\r
 \r
                             int sCol = (lastSSX / av.charWidth) + startRes;\r
                             int x1 = lastSSX;\r
-                            int x2 = x;\r
+                            int x2 = x*av.charWidth;\r
 \r
                            if(sCol==0 ||\r
                               row.annotations[sCol-1]==null ||\r
@@ -822,7 +824,10 @@ public class AnnotationPanel extends JPanel implements MouseListener,
                             if(row.annotations[column]==null ||\r
                                row.annotations[column].secondaryStructure!='H')\r
                             {\r
-                              g.fillArc(x-av.charWidth, y+4+iconOffset, av.charWidth, 7, 270,180);\r
+                              g.fillArc(x*av.charWidth-av.charWidth,\r
+                                        y+4+iconOffset,\r
+                                        av.charWidth,\r
+                                        7, 270,180);\r
                               x2 -= av.charWidth/2;\r
                             }\r
 \r
@@ -832,8 +837,10 @@ public class AnnotationPanel extends JPanel implements MouseListener,
                         case 'E':\r
                             g.setColor(SHEET_COLOUR);\r
                             g.fillRect(lastSSX, y + 4 + iconOffset,\r
-                                x - lastSSX - 4, 7);\r
-                            g.fillPolygon(new int[] { x - 5, x - 5, x },\r
+                                x*av.charWidth - lastSSX - 4, 7);\r
+                            g.fillPolygon(new int[] { x*av.charWidth - 5,\r
+                                          x*av.charWidth - 5,\r
+                                          x*av.charWidth },\r
                                 new int[]\r
                                 {\r
                                     y + iconOffset, y + 14 + iconOffset,\r
@@ -846,7 +853,7 @@ public class AnnotationPanel extends JPanel implements MouseListener,
                         default:\r
                             g.setColor(Color.gray);\r
                             g.fillRect(lastSSX, y + 6 + iconOffset,\r
-                                x - lastSSX, 2);\r
+                                x*av.charWidth - lastSSX, 2);\r
 \r
                             break;\r
                         }\r
@@ -860,17 +867,17 @@ public class AnnotationPanel extends JPanel implements MouseListener,
                             lastSS = ' ';\r
                         }\r
 \r
-                        lastSSX = x;\r
+                        lastSSX = x*av.charWidth;\r
                     }\r
                 }\r
-\r
                 column++;\r
+                x++;\r
             }\r
 \r
             if(column>=row.annotations.length)\r
               column = row.annotations.length-1;\r
 \r
-            x += av.charWidth;\r
+            x ++;\r
 \r
             if (row.hasIcons)\r
             {\r
@@ -883,7 +890,7 @@ public class AnnotationPanel extends JPanel implements MouseListener,
                     //Off by 1 offset when drawing rects and ovals\r
                     //to offscreen image on the MAC\r
                     g.fillRoundRect(lastSSX, y + 4 + iconOffset,\r
-                                    x - lastSSX, 7, 8, 8);\r
+                                    x*av.charWidth - lastSSX, 7, 8, 8);\r
                     break;\r
                   }\r
 \r
@@ -918,9 +925,11 @@ public class AnnotationPanel extends JPanel implements MouseListener,
                         || row.annotations[endRes].secondaryStructure != 'E')\r
                     {\r
                       g.fillRect(lastSSX, y + 4 + iconOffset,\r
-                                 x - lastSSX - 4, 7);\r
+                                 x*av.charWidth - lastSSX - 4, 7);\r
                       g.fillPolygon(new int[]\r
-                                    {x - 5, x - 5, x},\r
+                                    {x*av.charWidth - 5,\r
+                                    x*av.charWidth - 5,\r
+                                    x*av.charWidth},\r
                                     new int[]\r
                                     {\r
                                     y + iconOffset, y + 14 + iconOffset,\r
@@ -929,7 +938,7 @@ public class AnnotationPanel extends JPanel implements MouseListener,
                     }\r
                     else\r
                       g.fillRect(lastSSX, y + 4 + iconOffset,\r
-                                 x - lastSSX, 7);\r
+                                 x*av.charWidth - lastSSX, 7);\r
 \r
                     break;\r
 \r
@@ -937,7 +946,8 @@ public class AnnotationPanel extends JPanel implements MouseListener,
                 default:\r
                     g.setColor(Color.gray);\r
                     if(!av.wrapAlignment || endRes==av.endRes)\r
-                      g.fillRect(lastSSX, y + 6 + iconOffset, x - lastSSX, 2);\r
+                      g.fillRect(lastSSX, y + 6 + iconOffset,\r
+                                 x*av.charWidth - lastSSX, 2);\r
 \r
                     break;\r
                 }\r
@@ -1033,24 +1043,25 @@ public class AnnotationPanel extends JPanel implements MouseListener,
 \r
       eRes = Math.min(eRes, aa.annotations.length);\r
 \r
-      int column = sRes;\r
+      int column;\r
       int aaMax = aa.annotations.length-1;\r
 \r
-      while( column < eRes )\r
+      while( x < eRes - sRes )\r
       {\r
+        column = sRes + x;\r
         if(av.hasHiddenColumns)\r
         {\r
           column = av.getColumnSelection().adjustForHiddenColumns(column);\r
-          if(column > aaMax)\r
-          {\r
-            break;\r
-          }\r
+        }\r
+\r
+        if (column > aaMax)\r
+        {\r
+          break;\r
         }\r
 \r
         if(aa.annotations[column]==null || aa.annotations[column-1]==null)\r
         {\r
-          x+=av.charWidth;\r
-          column ++;\r
+          x++;\r
           continue;\r
         }\r
 \r
@@ -1059,12 +1070,10 @@ public class AnnotationPanel extends JPanel implements MouseListener,
           y1 = y - (int) (((aa.annotations[column-1].value-min) / range) * graphHeight);\r
           y2 = y - (int) (((aa.annotations[column].value-min) / range) * graphHeight);\r
 \r
-          g.drawLine(x-av.charWidth/2, y1, x+av.charWidth/2, y2);\r
-          x += av.charWidth;\r
-\r
-          column++;\r
-\r
+          g.drawLine(x*av.charWidth-av.charWidth/2, y1, x*av.charWidth+av.charWidth/2, y2);\r
+          x ++;\r
        }\r
+\r
        if(aa.threshold!=null)\r
        {\r
            g.setColor(aa.threshold.colour);\r
@@ -1090,12 +1099,10 @@ public class AnnotationPanel extends JPanel implements MouseListener,
 \r
       eRes = Math.min(eRes, aa.annotations.length);\r
 \r
-      int x=0, y1, y2;\r
+      int x=0, y1=y, y2=y;\r
 \r
       float range = max - min;\r
 \r
-      y1 = y2 = y;\r
-\r
       if(min<0)\r
         y2 = y - (int)((0-min / (range))*aa.graphHeight);\r
 \r
@@ -1103,25 +1110,25 @@ public class AnnotationPanel extends JPanel implements MouseListener,
 \r
       g.drawLine(x,y2,(eRes-sRes)*av.charWidth,y2);\r
 \r
-\r
-      int column = sRes;\r
+      int column;\r
       int aaMax = aa.annotations.length-1;\r
 \r
-      while( column < eRes )\r
+      while( x < eRes-sRes )\r
       {\r
+        column = sRes + x;\r
         if(av.hasHiddenColumns)\r
         {\r
           column = av.getColumnSelection().adjustForHiddenColumns(column);\r
-          if(column > aaMax)\r
-          {\r
+        }\r
+\r
+        if(column > aaMax)\r
+        {\r
             break;\r
-          }\r
         }\r
 \r
         if (aa.annotations[column] == null)\r
         {\r
-          x += av.charWidth;\r
-          column ++;\r
+          x ++;\r
           continue;\r
         }\r
 \r
@@ -1129,12 +1136,11 @@ public class AnnotationPanel extends JPanel implements MouseListener,
           y1 = y - (int) (((aa.annotations[column].value-min) / (range)) * aa.graphHeight);\r
 \r
           if(y1-y2>0)\r
-            g.fillRect(x, y2, av.charWidth, y1-y2 );\r
+            g.fillRect(x*av.charWidth, y2, av.charWidth, y1-y2 );\r
           else\r
-            g.fillRect(x, y1, av.charWidth, y2-y1 );\r
+            g.fillRect(x*av.charWidth, y1, av.charWidth, y2-y1 );\r
 \r
-          x += av.charWidth;\r
-          column ++;\r
+          x ++ ;\r
 \r
       }\r
       if(aa.threshold!=null)\r
@@ -1155,6 +1161,7 @@ public class AnnotationPanel extends JPanel implements MouseListener,
     // used by overview window\r
     public void drawGraph(Graphics g, AlignmentAnnotation aa, int width, int y, int sRes, int eRes)\r
     {\r
+      eRes = Math.min(eRes, aa.annotations.length);\r
       g.setColor(Color.white);\r
       g.fillRect(0, 0, width, y);\r
       g.setColor(new Color(0, 0, 180));\r
index 0f4cf5f..afacb41 100755 (executable)
@@ -51,9 +51,9 @@ public class DasSourceBrowser extends GDasSourceBrowser
     displayFullDetails(null);\r
     table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
 \r
-    capabilities.addListSelectionListener(this);\r
-    coords1.addListSelectionListener(this);\r
-    coords2.addListSelectionListener(this);\r
+    filter1.addListSelectionListener(this);\r
+    filter2.addListSelectionListener(this);\r
+    filter3.addListSelectionListener(this);\r
 \r
     //Ask to be notified of selection changes.\r
     ListSelectionModel rowSM = table.getSelectionModel();\r
@@ -273,49 +273,53 @@ public class DasSourceBrowser extends GDasSourceBrowser
 \r
   private void setCapabilities(DasSource[] sources)\r
   {\r
-    Vector vcapabilities = new Vector();\r
-    Vector vcoords = new Vector();\r
-    Vector vcoords2 = new Vector();\r
+    Vector authority = new Vector();\r
+    Vector type = new Vector();\r
+    Vector label = new Vector();\r
 \r
-    vcapabilities.addElement("All");\r
-    vcoords.addElement("All");\r
-    vcoords2.addElement("All");\r
+    authority.addElement("Any");\r
+    type.addElement("Any");\r
+    label.addElement("Any");\r
+    label.addElement("NOT IMPLEMENTED YET");\r
+    filter3.setEnabled(false);\r
 \r
     for (int i = 0; i < sources.length; i++)\r
     {\r
       DasSource ds = sources[i];\r
-      String[] scap = ds.getCapabilities();\r
-      for (int s = 0; s < scap.length; s++)\r
-      {\r
-        if (!vcapabilities.contains(scap[s]))\r
-        {\r
-          vcapabilities.addElement(scap[s]);\r
-        }\r
-      }\r
 \r
       DasCoordinateSystem[] dcs = ds.getCoordinateSystem();\r
 \r
       for (int j = 0; j < dcs.length; j++)\r
       {\r
-        if (!vcoords.contains(dcs[j].getCategory()))\r
-          vcoords.addElement(dcs[j].getCategory());\r
+        if (!type.contains(dcs[j].getCategory()))\r
+          type.addElement(dcs[j].getCategory());\r
+\r
+        if (!authority.contains(dcs[j].getName()))\r
+          authority.addElement(dcs[j].getName());\r
+      }\r
 \r
-        if (!vcoords2.contains(dcs[j].getName()))\r
-          vcoords2.addElement(dcs[j].getName());\r
+      String[] slabels = ds.getLabels();\r
+      for (int s = 0; s < slabels.length; s++)\r
+      {\r
+        if (!label.contains(slabels[s]))\r
+        {\r
+          label.addElement(slabels[s]);\r
+        }\r
       }\r
+\r
     }\r
 \r
-    capabilities.setListData(vcapabilities);\r
-    coords1.setListData(vcoords);\r
-    coords2.setListData(vcoords2);\r
+    filter1.setListData(authority);\r
+    filter2.setListData(type);\r
+    filter3.setListData(label);\r
 \r
     javax.swing.SwingUtilities.invokeLater(new Runnable()\r
     {\r
       public void run()\r
       {\r
-        capabilities.setSelectedIndex(0);\r
-        coords1.setSelectedIndex(0);\r
-        coords2.setSelectedIndex(0);\r
+        filter1.setSelectedIndex(0);\r
+        filter2.setSelectedIndex(0);\r
+        filter3.setSelectedIndex(0);\r
       }\r
     });\r
   }\r
@@ -553,7 +557,7 @@ public class DasSourceBrowser extends GDasSourceBrowser
     {\r
       ds = dasSources[i];\r
 \r
-      if (!selectedInList(capabilities, ds.getCapabilities()))\r
+      if (!selectedInList(filter3, ds.getLabels()))\r
       {\r
         continue;\r
       }\r
@@ -561,10 +565,10 @@ public class DasSourceBrowser extends GDasSourceBrowser
       DasCoordinateSystem[] dcs = ds.getCoordinateSystem();\r
       for (int j = 0; j < dcs.length; j++)\r
       {\r
-        if (selectedInList(coords1, new String[]\r
-                           {dcs[j].getCategory()})\r
-            && selectedInList(coords2, new String[]\r
-                              {dcs[j].getName()}))\r
+        if (selectedInList(filter1, new String[]\r
+                           {dcs[j].getName()})\r
+            && selectedInList(filter2, new String[]\r
+                              {dcs[j].getCategory()}))\r
         {\r
           names.add(ds.getNickname());\r
           selected.add(new Boolean(\r
@@ -590,7 +594,7 @@ public class DasSourceBrowser extends GDasSourceBrowser
     Object[] selection = list.getSelectedValues();\r
     for (int i = 0; i < selection.length; i++)\r
     {\r
-      if (selection[i].equals("All"))\r
+      if (selection[i].equals("Any"))\r
         return true;\r
 \r
       for (int j = 0; j < items.length; j++)\r
index 49a9656..e0ceeef 100755 (executable)
@@ -173,7 +173,7 @@ public class Finder extends GFinder
         {\r
             int res = Integer.parseInt(searchString);\r
             found = true;\r
-            if (av.getSelectionGroup() == null || av.getSelectionGroup().getSize() < 1)\r
+            if (av.getSelectionGroup() == null || av.getSelectionGroup().getSize(false) < 1)\r
             {\r
               seq = (Sequence) av.getAlignment().getSequenceAt(0);\r
             }\r
@@ -196,7 +196,7 @@ public class Finder extends GFinder
 \r
         if (selection != null)\r
         {\r
-            if ((selection.getSize() < 1) ||\r
+            if ((selection.getSize(false) < 1) ||\r
                     ((selection.getEndRes() - selection.getStartRes()) < 2))\r
             {\r
                 selection = null;\r
@@ -207,7 +207,7 @@ public class Finder extends GFinder
         {\r
             seq = (Sequence) av.alignment.getSequenceAt(seqIndex);\r
 \r
-            if ((selection != null) && !selection.sequences.contains(seq))\r
+            if ((selection != null) && !selection.getSequences(false).contains(seq))\r
             {\r
                 seqIndex++;\r
                 resIndex = 0;\r
index 214f218..a05c6c0 100755 (executable)
@@ -78,7 +78,7 @@ public class IdCanvas extends JPanel
             gg.setColor(Color.white);\r
         }\r
         else if ((av.getSelectionGroup() != null) &&\r
-                av.getSelectionGroup().sequences.contains(s))\r
+                av.getSelectionGroup().getSequences(false).contains(s))\r
         {\r
             gg.setColor(Color.lightGray);\r
             gg.fillRect(0, ((i - starty) * charHeight) + ypos, getWidth(),\r
@@ -201,6 +201,7 @@ public class IdCanvas extends JPanel
     {\r
       Font italic = new Font(av.getFont().getName(), Font.ITALIC,\r
                              av.getFont().getSize());\r
+\r
       gg.setFont(italic);\r
 \r
       if (av.antiAlias)\r
@@ -212,6 +213,12 @@ public class IdCanvas extends JPanel
 \r
         if (av.getWrapAlignment())\r
         {\r
+          int maxwidth = av.alignment.getWidth();\r
+          int alheight = av.alignment.getHeight();\r
+\r
+          if (av.hasHiddenColumns)\r
+            maxwidth = av.getColumnSelection().findColumnPosition(maxwidth) - 1;\r
+\r
           int annotationHeight = 0;\r
           AnnotationLabels labels = null;\r
 \r
@@ -226,78 +233,67 @@ public class IdCanvas extends JPanel
           if (av.scaleAboveWrapped)\r
             hgap += av.charHeight;\r
 \r
-          int cHeight = av.getAlignment().getHeight() * av.charHeight\r
+          int cHeight = alheight * av.charHeight\r
               + hgap\r
               + annotationHeight;\r
 \r
-            int rowSize = av.getEndRes() - av.getStartRes();\r
+          int rowSize = av.getEndRes() - av.getStartRes();\r
+\r
 \r
             // Draw the rest of the panels\r
             for (int ypos = hgap, row = av.startRes;\r
-                    (ypos <= getHeight()) && (row < av.alignment.getWidth());\r
+                    (ypos <= getHeight()) && (row < maxwidth);\r
                     ypos += cHeight, row += rowSize)\r
             {\r
-                for (int i = starty; i < av.alignment.getHeight(); i++)\r
+              for (int i = starty; i < alheight; i++)\r
+              {\r
+                if (av.hasHiddenRows)\r
                 {\r
-\r
-                    SequenceI s = av.alignment.getSequenceAt(i);\r
-                    gg.setFont(italic);\r
-                    drawIdString(gg, s, i, 0, ypos);\r
+                  setHiddenFont(i, starty);\r
                 }\r
+                else\r
+                  gg.setFont(italic);\r
+\r
+                SequenceI s = av.alignment.getSequenceAt(i);\r
+                drawIdString(gg, s, i, 0, ypos);\r
+              }\r
 \r
                 if(labels!=null)\r
                 {\r
-                  gg.translate(0, ypos+(av.getAlignment().getHeight() * av.charHeight));\r
+                  gg.translate(0, ypos+(alheight * av.charHeight));\r
                   labels.drawComponent(gg, getWidth());\r
-                  gg.translate(0, -ypos-(av.getAlignment().getHeight() * av.charHeight));\r
-\r
+                  gg.translate(0, -ypos-(alheight * av.charHeight));\r
                 }\r
             }\r
         }\r
         else\r
         {\r
             //Now draw the id strings\r
-            int tmp, hiddenIndex = starty;\r
-            boolean markHidden = false;\r
             for (int i = starty; i < endy; i++)\r
             {\r
               if (av.hasHiddenRows)\r
               {\r
-                tmp = av.adjustForHiddenSeqs(i);\r
-                if(hiddenIndex != tmp)\r
-                {\r
-                    hiddenIndex = tmp;\r
-                    markHidden = true;\r
-                }\r
-                else\r
-                  markHidden = false;\r
-\r
-                hiddenIndex++;\r
+                setHiddenFont(i, starty);\r
               }\r
 \r
-              if(av.hasHiddenRows && av.alignment.getSequenceAt(i).getHiddenSequences()!=null)\r
-              {\r
-                currentTextColor = Color.blue;\r
-              }\r
-              else\r
                 // Selected sequence colours\r
-                if ((searchResults != null) &&\r
-                        searchResults.contains(av.alignment.getSequenceAt(i)))\r
+                if ( (searchResults != null) &&\r
+                    searchResults.contains(av.alignment.getSequenceAt(i)))\r
                 {\r
-                    currentColor = Color.black;\r
-                    currentTextColor = Color.white;\r
+                  currentColor = Color.black;\r
+                  currentTextColor = Color.white;\r
                 }\r
-                else if ((av.getSelectionGroup() != null) &&\r
-                        av.getSelectionGroup().sequences.contains(\r
-                            av.alignment.getSequenceAt(i)))\r
+                else if ( (av.getSelectionGroup() != null) &&\r
+                         av.getSelectionGroup().getSequences(false).contains(\r
+                             av.alignment.getSequenceAt(i)))\r
                 {\r
-                    currentColor = Color.lightGray;\r
-                    currentTextColor = Color.black;\r
+                  currentColor = Color.lightGray;\r
+                  currentTextColor = Color.black;\r
                 }\r
                 else\r
                 {\r
-                    currentColor = av.alignment.getSequenceAt(i).getColor();\r
-                    currentTextColor = Color.black;\r
+                  currentColor = av.alignment.getSequenceAt(i).getColor();\r
+                  currentTextColor = Color.black;\r
                 }\r
 \r
                 gg.setColor(currentColor);\r
@@ -305,22 +301,6 @@ public class IdCanvas extends JPanel
                 gg.fillRect(0, (i - starty) * av.charHeight, getWidth(),\r
                             av.charHeight);\r
 \r
-                if (markHidden)\r
-                {\r
-                  gg.setColor(Color.blue);\r
-               //   gg.drawLine(0, (i-starty)*av.charHeight, getWidth(),(i-starty)*av.charHeight);\r
-                  gg.fillPolygon(new int[] { getWidth() - av.charHeight,\r
-                                         getWidth() - av.charHeight,\r
-                                         getWidth() },\r
-                                new int[]\r
-                                {\r
-                                    (i-starty)*av.charHeight -av.charHeight/4,\r
-                                    (i-starty)*av.charHeight +av.charHeight/4,\r
-                                    (i-starty)*av.charHeight\r
-                                }, 3);\r
-\r
-                }\r
-\r
                 gg.setColor(currentTextColor);\r
 \r
                 String string = av.alignment.getSequenceAt(i).getDisplayId( av.getShowJVSuffix());\r
@@ -330,12 +310,37 @@ public class IdCanvas extends JPanel
                     (av.charHeight / 5));\r
             }\r
 \r
-            // add a border\r
-         //   gg.setColor(Color.cyan);\r
-          //  gg.fillRect(getWidth() - 4, 0, 4, getHeight());\r
         }\r
     }\r
 \r
+    void setHiddenFont(int i, int starty)\r
+    {\r
+      Font italic = new Font(av.getFont().getName(), Font.ITALIC,\r
+                             av.getFont().getSize());\r
+      Font bold = new Font(av.getFont().getName(), Font.BOLD,\r
+                           av.getFont().getSize());\r
+\r
+      int tmp, hiddenIndex = starty;\r
+      tmp = av.adjustForHiddenSeqs(i);\r
+\r
+      if (av.adjustForHiddenSeqs(i - 1) == tmp - 1)\r
+      {\r
+        hiddenIndex = tmp;\r
+      }\r
+\r
+      if (hiddenIndex != tmp)\r
+      {\r
+        hiddenIndex = tmp;\r
+      }\r
+\r
+      hiddenIndex++;\r
+\r
+      if (av.alignment.getSequenceAt(i).getHiddenSequences() != null)\r
+        gg.setFont(bold);\r
+      else\r
+        gg.setFont(italic);\r
+    }\r
+\r
     /**\r
      * DOCUMENT ME!\r
      *\r
index 0322bdd..d1dc11d 100755 (executable)
@@ -106,28 +106,6 @@ public class IdPanel extends JPanel implements MouseListener,
         tip.append("</html>");\r
         setToolTipText(tip.toString());\r
       }\r
-\r
-      if(av.hasHiddenRows)\r
-      {\r
-        if(av.adjustForHiddenSeqs(seq) -\r
-           av.adjustForHiddenSeqs(seq-1)>1)\r
-        {\r
-          JPopupMenu pop = new JPopupMenu();\r
-          JMenuItem item = new JMenuItem("Reveal");\r
-          item.addActionListener(new ActionListener()\r
-          {\r
-            public void actionPerformed(ActionEvent e)\r
-            {\r
-              av.showSequence(seq);\r
-              alignPanel.repaint();\r
-              if(alignPanel.overviewPanel!=null)\r
-                alignPanel.overviewPanel.updateOverviewImage();\r
-            }\r
-          });\r
-          pop.add(item);\r
-          pop.show(this, e.getX(), e.getY());\r
-        }\r
-      }\r
     }\r
 \r
 \r
index f79a158..ca6e9f4 100755 (executable)
@@ -429,7 +429,7 @@ public class Jalview2XML
                 groups[i].setDisplayText(sg.getDisplayText());\r
                 groups[i].setColourText(sg.getColourText());\r
 \r
-                for (int s = 0; s < sg.getSize(); s++)\r
+                for (int s = 0; s < sg.getSize(false); s++)\r
                 {\r
                     jalview.datamodel.Sequence seq = (jalview.datamodel.Sequence) sg.getSequenceAt(s);\r
                     int index = seqids.indexOf(seq);\r
@@ -915,7 +915,7 @@ public class Jalview2XML
                 if (groups[i].getConsThreshold() != 0)\r
                 {\r
                     jalview.analysis.Conservation c = new jalview.analysis.Conservation("All",\r
-                            ResidueProperties.propHash, 3, sg.sequences, 0,\r
+                            ResidueProperties.propHash, 3, sg.getSequences(false), 0,\r
                             sg.getWidth() - 1);\r
                     c.calculate();\r
                     c.verdict(false, 25);\r
index d84b8db..1ccf7e6 100755 (executable)
@@ -318,7 +318,7 @@ public class Jalview2XML_V1
                 if (groups[i].getConsThreshold() != 0)\r
                 {\r
                     jalview.analysis.Conservation c = new jalview.analysis.Conservation("All",\r
-                            ResidueProperties.propHash, 3, sg.sequences, 0,\r
+                            ResidueProperties.propHash, 3, sg.getSequences(false), 0,\r
                             sg.getWidth() - 1);\r
                     c.calculate();\r
                     c.verdict(false, 25);\r
index e680dde..64253b4 100755 (executable)
@@ -59,11 +59,11 @@ public class PCAPanel extends GPCAPanel implements Runnable
         boolean sameLength = true;\r
 \r
         if ((av.getSelectionGroup() != null) &&\r
-                (av.getSelectionGroup().getSize() > 3))\r
+                (av.getSelectionGroup().getSize(false) > 3))\r
         {\r
-            seqs = new Sequence[av.getSelectionGroup().getSize()];\r
+            seqs = new Sequence[av.getSelectionGroup().getSize(false)];\r
             int length = av.getSelectionGroup().getSequenceAt(0).getLength();\r
-            for (int i = 0; i < av.getSelectionGroup().getSize(); i++)\r
+            for (int i = 0; i < av.getSelectionGroup().getSize(false); i++)\r
             {\r
                 seqs[i] = av.getSelectionGroup().getSequenceAt(i);\r
                 if(seqs[i].getLength()!=length)\r
index 76c75cb..5e719f2 100755 (executable)
@@ -52,7 +52,7 @@ public class PairwiseAlignPanel extends GPairwiseAlignPanel
 \r
         Vector selsubset = new Vector();\r
 \r
-        for (int i = 0, j = av.getSelectionGroup().getSize(); i < j; i++)\r
+        for (int i = 0, j = av.getSelectionGroup().getSize(false); i < j; i++)\r
         {\r
             if (av.getAlignment().getSequences().contains(av.getSelectionGroup()\r
                                                                 .getSequenceAt(i)))\r
index 480b195..34ffd4c 100755 (executable)
@@ -143,7 +143,7 @@ public class PopupMenu extends JPopupMenu
             }\r
           }\r
 \r
-       /*   menuItem = new JMenuItem("Hide Sequences");\r
+          menuItem = new JMenuItem("Hide Sequences");\r
           menuItem.addActionListener(new java.awt.event.ActionListener()\r
               {\r
                 public void actionPerformed(ActionEvent e)\r
@@ -153,7 +153,8 @@ public class PopupMenu extends JPopupMenu
               });\r
           sequenceMenu.add(menuItem);\r
 \r
-          if(ap.av.getSelectionGroup() !=null && ap.av.getSelectionGroup().getSize()>1)\r
+          if(ap.av.getSelectionGroup() !=null\r
+             && ap.av.getSelectionGroup().getSize(false)>1)\r
           {\r
             menuItem = new JMenuItem("Represent Group with " + seq.getName());\r
             menuItem.addActionListener(new java.awt.event.ActionListener()\r
@@ -164,7 +165,46 @@ public class PopupMenu extends JPopupMenu
               }\r
             });\r
             sequenceMenu.add(menuItem);\r
-          }*/\r
+          }\r
+\r
+          if (ap.av.hasHiddenRows)\r
+          {\r
+            final int index = ap.av.alignment.findIndex(seq);\r
+\r
+            if (ap.av.adjustForHiddenSeqs(index) -\r
+                ap.av.adjustForHiddenSeqs(index - 1) > 1)\r
+            {\r
+              menuItem = new JMenuItem("Reveal");\r
+              menuItem.addActionListener(new ActionListener()\r
+              {\r
+                public void actionPerformed(ActionEvent e)\r
+                {\r
+                  ap.av.showSequence(index);\r
+                  ap.repaint();\r
+                  if (ap.overviewPanel != null)\r
+                    ap.overviewPanel.updateOverviewImage();\r
+                }\r
+              });\r
+              sequenceMenu.add(menuItem);\r
+            }\r
+\r
+            menuItem = new JMenuItem("Reveal All");\r
+            menuItem.addActionListener(new ActionListener()\r
+                {\r
+                  public void actionPerformed(ActionEvent e)\r
+                  {\r
+                    ap.av.showAllHiddenSeqs();\r
+                    ap.repaint();\r
+                    if (ap.overviewPanel != null)\r
+                      ap.overviewPanel.updateOverviewImage();\r
+                      }\r
+                });\r
+\r
+            sequenceMenu.add(menuItem);\r
+\r
+\r
+\r
+          }\r
 \r
 \r
         }\r
@@ -607,7 +647,7 @@ public class PopupMenu extends JPopupMenu
     protected void clustalColour_actionPerformed(ActionEvent e)\r
     {\r
         SequenceGroup sg = getGroup();\r
-        sg.cs = new ClustalxColourScheme(sg.sequences,\r
+        sg.cs = new ClustalxColourScheme(sg.getSequences(true),\r
                 ap.av.alignment.getWidth());\r
         refresh();\r
     }\r
@@ -713,7 +753,8 @@ public class PopupMenu extends JPopupMenu
 \r
         if (abovePIDColour.isSelected())\r
         {\r
-            sg.cs.setConsensus(AAFrequency.calculate(sg.sequences, 0,\r
+            sg.cs.setConsensus(AAFrequency.calculate(\r
+                    sg.getSequences(true), 0,\r
                     ap.av.alignment.getWidth()));\r
 \r
             int threshold = SliderPanel.setPIDSliderSource(ap, sg.cs,\r
@@ -759,7 +800,7 @@ public class PopupMenu extends JPopupMenu
     {\r
         SequenceGroup sg = getGroup();\r
         sg.cs = new PIDColourScheme();\r
-        sg.cs.setConsensus(AAFrequency.calculate(sg.sequences, 0,\r
+        sg.cs.setConsensus(AAFrequency.calculate(sg.getSequences(true), 0,\r
                 ap.av.alignment.getWidth()));\r
         refresh();\r
     }\r
@@ -775,7 +816,7 @@ public class PopupMenu extends JPopupMenu
 \r
         sg.cs = new Blosum62ColourScheme();\r
 \r
-        sg.cs.setConsensus(AAFrequency.calculate(sg.sequences, 0,\r
+        sg.cs.setConsensus(AAFrequency.calculate(sg.getSequences(true), 0,\r
                 ap.av.alignment.getWidth()));\r
 \r
         refresh();\r
@@ -806,7 +847,8 @@ public class PopupMenu extends JPopupMenu
         if (conservationMenuItem.isSelected())\r
         {\r
             Conservation c = new Conservation("Group",\r
-                    ResidueProperties.propHash, 3, sg.sequences, 0,\r
+                    ResidueProperties.propHash, 3,\r
+                    sg.getSequences(true), 0,\r
                     ap.av.alignment.getWidth());\r
 \r
             c.calculate();\r
@@ -861,9 +903,9 @@ public class PopupMenu extends JPopupMenu
         SequenceGroup sg = getGroup();\r
         StringBuffer sb = new StringBuffer();\r
 \r
-        for (int i = 0; i < sg.sequences.size(); i++)\r
+        for (int i = 0; i < sg.getSize(false); i++)\r
         {\r
-            Sequence tmp = (Sequence) sg.sequences.get(i);\r
+            Sequence tmp = (Sequence) sg.getSequences(false).elementAt(i);\r
             sb.append(tmp.getSequence(sg.getStartRes(), sg.getEndRes() + 1));\r
             sb.append("\n");\r
         }\r
@@ -1030,14 +1072,14 @@ public class PopupMenu extends JPopupMenu
     void hideSequences(boolean representGroup)\r
     {\r
       SequenceGroup sg = ap.av.getSelectionGroup();\r
-      if(sg==null || sg.getSize()<1)\r
+      if(sg==null || sg.getSize(false)<1)\r
       {\r
         ap.av.hideSequence(sequence);\r
         return;\r
       }\r
 \r
         int index = 0;\r
-        while(index < sg.sequences.size())\r
+        while(index < sg.getSize(false))\r
         {\r
           if(representGroup && sg.getSequenceAt(index)!=sequence)\r
           {\r
@@ -1071,9 +1113,10 @@ public class PopupMenu extends JPopupMenu
     if(sg==null)\r
       return;\r
 \r
-    for(int g=0; g<sg.getSize(); g++)\r
+    for(int g=0; g<sg.getSize(true); g++)\r
     {\r
-      sg.getSequenceAt(g).changeCase(true, sg.getStartRes(), sg.getEndRes()+1);\r
+    ( (SequenceI)sg.getSequences(true).elementAt(g))\r
+        .changeCase(true, sg.getStartRes(), sg.getEndRes()+1);\r
     }\r
     ap.repaint();\r
   }\r
@@ -1084,9 +1127,10 @@ public class PopupMenu extends JPopupMenu
     if(sg==null)\r
       return;\r
 \r
-    for(int g=0; g<sg.getSize(); g++)\r
+    for(int g=0; g<sg.getSize(true); g++)\r
     {\r
-      sg.getSequenceAt(g).changeCase(false, sg.getStartRes(), sg.getEndRes()+1);\r
+       ( (SequenceI)sg.getSequences(true).elementAt(g))\r
+           .changeCase(false, sg.getStartRes(), sg.getEndRes()+1);\r
     }\r
     ap.repaint();\r
   }\r
@@ -1097,9 +1141,10 @@ public class PopupMenu extends JPopupMenu
     if (sg == null)\r
       return;\r
 \r
-    for (int g = 0; g < sg.getSize(); g++)\r
+    for (int g = 0; g < sg.getSize(true); g++)\r
     {\r
-      sg.getSequenceAt(g).toggleCase(sg.getStartRes(), sg.getEndRes() + 1);\r
+      ( (SequenceI)sg.getSequences(true).elementAt(g))\r
+          .toggleCase(sg.getStartRes(), sg.getEndRes() + 1);\r
     }\r
 \r
     ap.repaint();\r
index 5dd2fc4..78d8424 100755 (executable)
@@ -122,10 +122,10 @@ public class RedundancyPanel extends GSliderPanel implements Runnable
         originalSequences = new Vector();\r
         originalColours = new Hashtable();\r
 \r
-        if ( (sg != null) && (sg.getSize() >= 1))\r
+        if ( (sg != null) && (sg.getSize(false) >= 1))\r
         {\r
-           height = sg.getSize();\r
-          for (int i = 0; i < sg.getSize(); i++)\r
+           height = sg.getSize(false);\r
+          for (int i = 0; i < sg.getSize(false); i++)\r
           {\r
             sel.addElement(sg.getSequenceAt(i));\r
           }\r
index 724b9fb..8af3d65 100755 (executable)
@@ -411,7 +411,7 @@ public class RotatableCanvas extends JPanel implements MouseListener,
 \r
             if (av.getSelectionGroup() != null)\r
             {\r
-                if (av.getSelectionGroup().sequences.contains(\r
+                if (av.getSelectionGroup().getSequences(false).contains(\r
                             ((SequencePoint) points.elementAt(i)).sequence))\r
                 {\r
                     g.setColor(Color.gray);\r
@@ -669,8 +669,6 @@ public class RotatableCanvas extends JPanel implements MouseListener,
      */\r
     public void rectSelect(int x1, int y1, int x2, int y2)\r
     {\r
-        boolean changedSel = false;\r
-\r
         for (int i = 0; i < npoint; i++)\r
         {\r
             SequencePoint sp = (SequencePoint) points.elementAt(i);\r
@@ -683,9 +681,8 @@ public class RotatableCanvas extends JPanel implements MouseListener,
             {\r
                 if (av != null)\r
                 {\r
-                    if (!av.getSelectionGroup().sequences.contains(sp.sequence))\r
+                    if (!av.getSelectionGroup().getSequences(false).contains(sp.sequence))\r
                     {\r
-                        changedSel = true;\r
                         av.getSelectionGroup().addSequence(sp.sequence, true);\r
                     }\r
                 }\r
index 9add747..b3d7cda 100755 (executable)
@@ -73,7 +73,7 @@ public class ScalePanel extends JPanel implements MouseMotionListener, MouseList
         min = res;\r
         max = res;\r
 \r
-      /*  if(reveal != null && SwingUtilities.isRightMouseButton(evt))\r
+        if(reveal != null && SwingUtilities.isRightMouseButton(evt))\r
           {\r
             JPopupMenu pop = new JPopupMenu();\r
             JMenuItem item = new JMenuItem("Reveal");\r
@@ -110,10 +110,10 @@ public class ScalePanel extends JPanel implements MouseMotionListener, MouseList
             pop.show(this, evt.getX(), evt.getY());\r
 \r
           }\r
-        else*/\r
+        else\r
       if (av.getColumnSelection().contains(res))\r
         {\r
-        /*  if( SwingUtilities.isRightMouseButton(evt))\r
+          if( SwingUtilities.isRightMouseButton(evt))\r
           {\r
             JPopupMenu pop = new JPopupMenu();\r
             JMenuItem item = new JMenuItem("Hide Columns");\r
@@ -131,7 +131,7 @@ public class ScalePanel extends JPanel implements MouseMotionListener, MouseList
             pop.show(this, evt.getX(), evt.getY());\r
 \r
           }\r
-          else*/\r
+          else\r
           {\r
             av.getColumnSelection().removeElement(res);\r
             av.setSelectionGroup(null);\r
index 15c15c3..c4de7cd 100755 (executable)
@@ -133,9 +133,16 @@ public class SeqCanvas extends JComponent
         ypos += av.charHeight;\r
 \r
         if(av.hasHiddenColumns)\r
-                startx = av.getColumnSelection().adjustForHiddenColumns(startx);\r
+        {\r
+          startx = av.getColumnSelection().adjustForHiddenColumns(startx);\r
+          endx = av.getColumnSelection().adjustForHiddenColumns(endx);\r
+        }\r
 \r
-        // EAST SCALE\r
+        int maxwidth = av.alignment.getWidth();\r
+        if (av.hasHiddenColumns)\r
+            maxwidth = av.getColumnSelection().findColumnPosition(maxwidth) - 1;\r
+\r
+        // WEST SCALE\r
         for (int i = 0; i < av.alignment.getHeight(); i++)\r
         {\r
             SequenceI seq = av.alignment.getSequenceAt(i);\r
@@ -404,7 +411,6 @@ public class SeqCanvas extends JComponent
     public void drawWrappedPanel(Graphics g, int canvasWidth, int canvasHeight,\r
         int startRes)\r
     {\r
-\r
         AlignmentI al = av.getAlignment();\r
 \r
         FontMetrics fm = getFontMetrics(av.getFont());\r
@@ -435,14 +441,18 @@ public class SeqCanvas extends JComponent
 \r
         int endx;\r
         int ypos = hgap;\r
+        int maxwidth = av.alignment.getWidth();\r
+\r
+        if(av.hasHiddenColumns)\r
+          maxwidth = av.getColumnSelection().findColumnPosition(maxwidth)-1;\r
 \r
-        while ((ypos <= canvasHeight) && (startRes < av.alignment.getWidth()))\r
+        while ((ypos <= canvasHeight) && (startRes < maxwidth))\r
         {\r
           endx = startRes + cWidth -1;\r
 \r
-          if (endx > al.getWidth())\r
+          if (endx > maxwidth)\r
           {\r
-            endx = al.getWidth();\r
+            endx = maxwidth;\r
           }\r
 \r
             g.setFont(av.getFont());\r
@@ -689,11 +699,11 @@ public class SeqCanvas extends JComponent
                     }\r
 \r
                     if ( (sx <= (endRes-startRes)*av.charWidth) &&\r
-                            group.sequences.contains(av.alignment.getSequenceAt(\r
-                                    i)))\r
+                            group.getSequences(false).\r
+                            contains(av.alignment.getSequenceAt(i)))\r
                     {\r
                         if ((bottom == -1) &&\r
-                                !group.sequences.contains(\r
+                                !group.getSequences(false).contains(\r
                                     av.alignment.getSequenceAt(i + 1)))\r
                         {\r
                             bottom = sy + av.charHeight;\r
@@ -702,7 +712,7 @@ public class SeqCanvas extends JComponent
                         if (!inGroup)\r
                         {\r
                             if (((top == -1) && (i == 0)) ||\r
-                                    !group.sequences.contains(\r
+                                    !group.getSequences(false).contains(\r
                                         av.alignment.getSequenceAt(i - 1)))\r
                             {\r
                                 top = sy;\r
index af1302e..4135cb0 100755 (executable)
@@ -308,7 +308,7 @@ public class SeqPanel extends JPanel implements MouseListener,
         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(); i++)\r
+        for(int i=0; i<sg.getSize(false); i++)\r
         {\r
           int index = av.alignment.findIndex( sg.getSequenceAt(i) );\r
           if(index > max)\r
@@ -344,7 +344,7 @@ public class SeqPanel extends JPanel implements MouseListener,
         else\r
         {\r
           // Now add any sequences between min and max\r
-          sg.sequences.clear();\r
+          sg.getSequences(false).clear();\r
           for (int i = min; i < max; i++)\r
           {\r
             sg.addSequence(av.alignment.getSequenceAt(i), false);\r
@@ -425,7 +425,6 @@ public class SeqPanel extends JPanel implements MouseListener,
 \r
        editOccurred();\r
 \r
-       endEditing();\r
        ap.repaint();\r
     }\r
 \r
@@ -729,25 +728,29 @@ public class SeqPanel extends JPanel implements MouseListener,
       boolean fixedColumns = false;\r
       SequenceGroup sg = av.getSelectionGroup();\r
 \r
-      if(groupEditing && sg==null)\r
-        return;\r
 \r
         if (!groupEditing && av.hasHiddenRows)\r
         {\r
-          //This needs to check all the sequences in a group edit,m\r
-          // not just the startseq\r
           if (av.alignment.getSequenceAt(startseq).getHiddenSequences() != null)\r
           {\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
         SequenceI seq = av.alignment.getSequenceAt(startseq);\r
         StringBuffer message = new StringBuffer();\r
         if (groupEditing)\r
            message.append("Edit group:");\r
         else\r
-            message.append("Edit sequence: "+seq.getName());\r
+           message.append("Edit sequence: "+seq.getName());\r
 \r
        if(insertGap)\r
          message.append(" insert ");\r
@@ -760,10 +763,19 @@ public class SeqPanel extends JPanel implements MouseListener,
 \r
         //Are we editing within a selection group?\r
         if (groupEditing\r
-            || (sg != null && sg.sequences.contains(seq)))\r
+            || (sg != null && sg.getSequences(true).contains(seq)))\r
         {\r
           fixedColumns = true;\r
 \r
+          //sg might be null as the user may only see 1 sequence,\r
+          //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
+          }\r
+\r
           fixedLeft = sg.getStartRes();\r
           fixedRight = sg.getEndRes();\r
 \r
@@ -789,64 +801,48 @@ public class SeqPanel extends JPanel implements MouseListener,
         }\r
 \r
 \r
-\r
-        if(av.hasHiddenColumns)\r
-        {\r
-          fixedColumns = true;\r
-          int y1 = av.getColumnSelection().getHiddenBoundaryLeft(startres);\r
-          int y2 = av.getColumnSelection().getHiddenBoundaryRight(startres);\r
-\r
-          if(    ( insertGap && startres>y1 && lastres<y1)\r
-              || (!insertGap && startres<y2 && lastres>y2) )\r
-          {\r
-            endEditing();\r
-            return;\r
-          }\r
-\r
-          if(fixedRight<y2 && fixedRight==-1 && y2!=startres)\r
-            fixedRight = y2 -1;\r
-          if(y1>fixedLeft && fixedLeft==-1)\r
-            fixedLeft = y1;\r
-        }\r
-\r
-        if (groupEditing)\r
+        if(av.hasHiddenColumns )\r
         {\r
+            fixedColumns = true;\r
+            int y1 = av.getColumnSelection().getHiddenBoundaryLeft(startres);\r
+            int y2 = av.getColumnSelection().getHiddenBoundaryRight(startres);\r
 \r
-          /*if (av.hasHiddenRows)\r
-          {\r
-            //sg might be null as the user may only see 1 sequence\r
-            if (sg == null)\r
+            if ( (insertGap && startres > y1 && lastres < y1)\r
+                || (!insertGap && startres < y2 && lastres > y2))\r
             {\r
-              sg = new SequenceGroup();\r
-              sg.addSequence(av.alignment.getSequenceAt(startseq), false);\r
+              endEditing();\r
+              return;\r
             }\r
 \r
-            SequenceGroup tmp = new SequenceGroup();\r
-\r
-            //Do any of the sequences have hidden associates?\r
-            for (int s = 0; s < sg.getSize(); s++)\r
+            //System.out.print(y1+" "+y2+" "+fixedLeft+" "+fixedRight+"~~");\r
+            //Selection spans a hidden region\r
+            if(fixedLeft<y1 && (fixedRight>y2 || fixedRight==-1))\r
             {\r
-              seq = sg.getSequenceAt(s);\r
-              tmp.addSequence(seq, false);\r
-              if (seq.getHiddenSequences() != null)\r
+              if(startres>=y2)\r
               {\r
-                for (int h = 0; h < seq.getHiddenSequences().getSize(); h++)\r
-                  tmp.addSequence(seq.getHiddenSequences().getSequenceAt(h),\r
-                                  false);\r
+                System.out.println("left of line");\r
+                fixedLeft = y2;\r
               }\r
+              else\r
+             {\r
+               System.out.println("right of line");\r
+               fixedRight = y2 - 1;\r
+             }\r
             }\r
-\r
-            sg = tmp;\r
-          }*/\r
-          // int blankColumn = -1;\r
+        }\r
 \r
 \r
+        if (groupEditing)\r
+        {\r
           // drag to right\r
           if (insertGap)\r
           {\r
               //If the user has selected the whole sequence, and is dragging to\r
               // the right, we can still extend the alignment and selectionGroup\r
-              if(sg.getStartRes() == 0 && sg.getEndRes() + 1 == av.alignment.getWidth())\r
+              if(   sg.getStartRes() == 0\r
+                    && sg.getEndRes() == fixedRight\r
+                    && sg.getEndRes() == av.alignment.getWidth()-1\r
+                 )\r
               {\r
                 sg.setEndRes(av.alignment.getWidth() + startres - lastres);\r
                 fixedRight = sg.getEndRes();\r
@@ -861,9 +857,9 @@ public class SeqPanel extends JPanel implements MouseListener,
                  fixedRight--)\r
             {\r
               blank = true;\r
-              for (int s = 0; s < sg.getSize(); s++)\r
+              for (int s = 0; s < sg.getSize(true); s++)\r
               {\r
-                seq = sg.getSequenceAt(s);\r
+                seq = (SequenceI)sg.getSequences(true).elementAt(s);\r
                 for (int j = 0; j < startres - lastres; j++)\r
                 {\r
                   if (!jalview.util.Comparison.isGap(\r
@@ -880,7 +876,7 @@ public class SeqPanel extends JPanel implements MouseListener,
 \r
             if (!blank)\r
             {\r
-              if(sg.getSize() == av.alignment.getHeight())\r
+              if(sg.getSize(false) == av.alignment.getHeight())\r
               {\r
                 //We can still insert gaps if the selectionGroup\r
                 //contains all the sequences\r
@@ -902,9 +898,9 @@ public class SeqPanel extends JPanel implements MouseListener,
             /// Are we able to delete?\r
             // ie are all columns blank?\r
 \r
-            for (int s = 0; s < sg.getSize(); s++)\r
+            for (int s = 0; s < sg.getSize(true); s++)\r
             {\r
-              seq = sg.getSequenceAt(s);\r
+              seq = (SequenceI)sg.getSequences(true).elementAt(s);\r
 \r
               for (int j = startres; j < lastres; j++)\r
               {\r
@@ -925,9 +921,9 @@ public class SeqPanel extends JPanel implements MouseListener,
           }\r
 \r
 \r
-          for (int i = 0; i < sg.getSize(); i++)\r
+          for (int i = 0; i < sg.getSize(true); i++)\r
           {\r
-            seq = sg.getSequenceAt(i);\r
+            seq = (SequenceI) sg.getSequences(true).elementAt(i);\r
 \r
             if (insertGap)\r
             {\r
@@ -968,17 +964,19 @@ public class SeqPanel extends JPanel implements MouseListener,
             {\r
               if (fixedColumns && fixedRight != -1)\r
               {\r
-                if (sg.getStartRes() == 0\r
-                    && sg.getEndRes() + 1 == av.alignment.getWidth()\r
+                /*if (sg!=null &&\r
+                    sg.getStartRes() == 0\r
+                    && sg.getEndRes()  == fixedRight\r
                     && !jalview.util.Comparison.isGap(seq.getCharAt(fixedRight)))\r
                 {\r
+                  System.out.println("still here");\r
                   //Single sequence edit, whole sequence selected,\r
                   //extend the selection group\r
                   sg.setEndRes(av.alignment.getWidth() -1 + startres - lastres);\r
                   fixedColumns = false;\r
                   insertChar(j, seq);\r
                 }\r
-                else\r
+                else*/\r
                   insertChar(j, seq, fixedRight);\r
               }\r
               else\r
@@ -1219,7 +1217,7 @@ public class SeqPanel extends JPanel implements MouseListener,
                 stretchGroup = null;\r
             }\r
         }\r
-        else if (!stretchGroup.sequences.contains(sequence) ||\r
+        else if (!stretchGroup.getSequences(false).contains(sequence) ||\r
                 (stretchGroup.getStartRes() > res) ||\r
                 (stretchGroup.getEndRes() < res))\r
         {\r
@@ -1257,7 +1255,7 @@ public class SeqPanel extends JPanel implements MouseListener,
         {\r
           Vector allFeatures = getAllFeaturesAtRes(sequence.getDatasetSequence(),\r
                                                   sequence.findPosition(res));\r
-          Vector links = new Vector();;\r
+          Vector links = new Vector();\r
             for (int i = 0; i < allFeatures.size(); i++)\r
             {\r
               SequenceFeature sf = (SequenceFeature) allFeatures.elementAt(i);\r
@@ -1270,9 +1268,9 @@ public class SeqPanel extends JPanel implements MouseListener,
               }\r
             }\r
 \r
+            jalview.gui.PopupMenu pop = new jalview.gui.PopupMenu(ap, null, links);\r
+            pop.show(this, evt.getX(), evt.getY());\r
 \r
-          jalview.gui.PopupMenu pop = new jalview.gui.PopupMenu(ap, null, links);\r
-          pop.show(this, evt.getX(), evt.getY());\r
         }\r
         else if (stretchGroup == null)\r
         {\r
@@ -1332,8 +1330,8 @@ public class SeqPanel extends JPanel implements MouseListener,
         {\r
           if (stretchGroup.cs instanceof ClustalxColourScheme)\r
           {\r
-            ( (ClustalxColourScheme) stretchGroup.cs).resetClustalX(stretchGroup.\r
-                sequences,\r
+            ( (ClustalxColourScheme) stretchGroup.cs).resetClustalX(\r
+                stretchGroup.getSequences(true),\r
                 stretchGroup.getWidth());\r
           }\r
 \r
@@ -1439,7 +1437,7 @@ public class SeqPanel extends JPanel implements MouseListener,
 \r
             Sequence nextSeq = (Sequence) av.getAlignment().getSequenceAt(oldSeq);\r
 \r
-            if (stretchGroup.sequences.contains(nextSeq))\r
+            if (stretchGroup.getSequences(false).contains(nextSeq))\r
             {\r
                 stretchGroup.deleteSequence(seq, false);\r
             }\r
index 944aa73..1628f58 100755 (executable)
@@ -228,7 +228,7 @@ public class TreeCanvas extends JPanel implements MouseListener, Runnable,
             SequenceGroup selected = av.getSelectionGroup();\r
 \r
             if ((selected != null) &&\r
-                    selected.sequences.contains((SequenceI) node.element()))\r
+                    selected.getSequences(false).contains((SequenceI) node.element()))\r
             {\r
                 g.setColor(Color.gray);\r
 \r
@@ -758,7 +758,8 @@ public class TreeCanvas extends JPanel implements MouseListener, Runnable,
                        && av.getGlobalColourScheme().conservationApplied())\r
                     {\r
                         Conservation c = new Conservation("Group",\r
-                                ResidueProperties.propHash, 3, sg.sequences,\r
+                                ResidueProperties.propHash, 3,\r
+                                sg.getSequences(false),\r
                                 sg.getStartRes(), sg.getEndRes());\r
 \r
                         c.calculate();\r