Wrap alignment with annotations
[jalview.git] / src / jalview / appletgui / IdCanvas.java
index 399506e..30560d7 100755 (executable)
@@ -177,23 +177,51 @@ public class IdCanvas
   {\r
     Color currentColor = Color.white;\r
     Color currentTextColor = Color.black;\r
+    Font italic = new Font(av.getFont().getName(), Font.ITALIC,\r
+                             av.getFont().getSize());\r
 \r
     if (av.getWrapAlignment())\r
     {\r
+      int annotationHeight = 0;\r
+      AnnotationLabels labels = null;\r
 \r
-      int rowSize = av.getEndRes() - av.getStartRes();\r
-      // Draw the rest of the panels\r
-\r
-      for (int ypos = 2 * av.charHeight, row = av.startRes;\r
-           ypos <= getSize().height && row < av.alignment.getWidth();\r
-           ypos += av.chunkHeight, row += rowSize)\r
+      if(av.showAnnotation)\r
       {\r
-        for (int i = starty; i < av.alignment.getHeight(); i++)\r
+        AnnotationPanel ap = new AnnotationPanel(av);\r
+        annotationHeight = ap.adjustPanelHeight();\r
+        labels = new AnnotationLabels(av);\r
+      }\r
+\r
+      int hgap = av.charHeight;\r
+      if (av.scaleAboveWrapped)\r
+        hgap += av.charHeight;\r
+\r
+      int cHeight = av.getAlignment().getHeight() * av.charHeight\r
+          + hgap\r
+          + annotationHeight;\r
+\r
+        int rowSize = av.getEndRes() - av.getStartRes();\r
+\r
+        // Draw the rest of the panels\r
+        for (int ypos = hgap, row = av.startRes;\r
+                (ypos <= getSize().height) && (row < av.alignment.getWidth());\r
+                ypos += cHeight, row += rowSize)\r
         {\r
-          SequenceI s = av.alignment.getSequenceAt(i);\r
-          drawIdString(gg, s, i, 0, ypos);\r
+            for (int i = starty; i < av.alignment.getHeight(); i++)\r
+            {\r
+                SequenceI s = av.alignment.getSequenceAt(i);\r
+                drawIdString(gg, s, i, 0, ypos);\r
+            }\r
+\r
+            if(labels!=null)\r
+            {\r
+              gg.setFont(av.getFont());\r
+              gg.translate(0, ypos+(av.getAlignment().getHeight() * av.charHeight));\r
+              labels.drawComponent(gg, getSize().width);\r
+              gg.translate(0, -ypos-(av.getAlignment().getHeight() * av.charHeight));\r
+              gg.setFont(italic);\r
+            }\r
         }\r
-      }\r
 \r
     }\r
     else\r