Hidden representatives moved from sequence to viewport
[jalview.git] / src / jalview / gui / IdCanvas.java
index 0fe986a..168b50d 100755 (executable)
@@ -44,6 +44,8 @@ public class IdCanvas extends JPanel
     boolean fastPaint = false;\r
     java.util.Vector searchResults;\r
     FontMetrics fm;\r
+    AnnotationLabels labels = null;\r
+    AnnotationPanel ap;\r
 \r
     /**\r
      * Creates a new IdCanvas object.\r
@@ -80,7 +82,7 @@ public class IdCanvas extends JPanel
             gg.setColor(Color.white);\r
         }\r
         else if ((av.getSelectionGroup() != null) &&\r
-                av.getSelectionGroup().getSequences(false).contains(s))\r
+                av.getSelectionGroup().getSequences(null).contains(s))\r
         {\r
             gg.setColor(Color.lightGray);\r
             gg.fillRect(0, ((i - starty) * charHeight) + ypos, getWidth(),\r
@@ -239,13 +241,16 @@ public class IdCanvas extends JPanel
             maxwidth = av.getColumnSelection().findColumnPosition(maxwidth) - 1;\r
 \r
           int annotationHeight = 0;\r
-          AnnotationLabels labels = null;\r
+\r
 \r
           if(av.showAnnotation)\r
           {\r
-            AnnotationPanel ap = new AnnotationPanel(av);\r
+            if (ap == null)\r
+              ap = new AnnotationPanel(av);\r
+\r
             annotationHeight = ap.adjustPanelHeight();\r
-            labels = new AnnotationLabels(av);\r
+            if (labels == null)\r
+              labels = new AnnotationLabels(av);\r
           }\r
 \r
           int hgap = av.charHeight;\r
@@ -266,29 +271,30 @@ public class IdCanvas extends JPanel
             {\r
               for (int i = starty; i < alheight; i++)\r
               {\r
+                SequenceI s = av.alignment.getSequenceAt(i);\r
                 if (av.hasHiddenRows)\r
                 {\r
-                  setHiddenFont(i);\r
+                  setHiddenFont(s);\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
+                if(labels!=null && av.showAnnotation)\r
                 {\r
                   gg.translate(0, ypos+(alheight * av.charHeight));\r
                   labels.drawComponent(gg, getWidth());\r
                   gg.translate(0, -ypos-(alheight * av.charHeight));\r
                 }\r
-\r
-\r
             }\r
         }\r
         else\r
         {\r
+          //No need to hang on to labels if we're not wrapped\r
+          labels = null;\r
+\r
           //Now draw the id strings\r
           int panelWidth = getWidth();\r
           int xPos = 0;\r
@@ -304,7 +310,7 @@ public class IdCanvas extends JPanel
 \r
               if (av.hasHiddenRows)\r
               {\r
-                setHiddenFont(i);\r
+                setHiddenFont(sequence);\r
               }\r
 \r
                 // Selected sequence colours\r
@@ -315,7 +321,7 @@ public class IdCanvas extends JPanel
                   currentTextColor = Color.white;\r
                 }\r
                 else if ( (av.getSelectionGroup() != null) &&\r
-                         av.getSelectionGroup().getSequences(false).contains(\r
+                         av.getSelectionGroup().getSequences(null).contains(\r
                              sequence))\r
                 {\r
                   currentColor = Color.lightGray;\r
@@ -413,7 +419,7 @@ public class IdCanvas extends JPanel
         }\r
     }\r
 \r
-    void setHiddenFont(int i)\r
+    void setHiddenFont(SequenceI seq)\r
     {\r
       Font italic = new Font(av.getFont().getName(), Font.ITALIC,\r
                              av.getFont().getSize());\r
@@ -421,8 +427,8 @@ public class IdCanvas extends JPanel
                            av.getFont().getSize());\r
 \r
 \r
-      if (av.alignment.getSequenceAt(i)!=null\r
-          && av.alignment.getSequenceAt(i).getHiddenSequences() != null)\r
+      if (av.hiddenRepSequences!=null &&\r
+          av.hiddenRepSequences.containsKey(seq))\r
         gg.setFont(bold);\r
       else\r
         gg.setFont(italic);\r