Edit and annotate wrapped alignment
[jalview.git] / src / jalview / gui / AnnotationPanel.java
index 9ae103e..4f984fd 100755 (executable)
@@ -519,29 +519,38 @@ public class AnnotationPanel extends JPanel implements MouseListener,
      */\r
     public void paintComponent(Graphics g)\r
     {\r
-        g.setColor(Color.white);\r
-        g.fillRect(0, 0, getWidth(), getHeight());\r
+      g.setColor(Color.white);\r
+      g.fillRect(0, 0, getWidth(), getHeight());\r
 \r
-        if (fastPaint)\r
-        {\r
-            g.drawImage(image, 0, 0, this);\r
-            fastPaint = false;\r
+      if (fastPaint)\r
+      {\r
+        g.drawImage(image, 0, 0, this);\r
+        fastPaint = false;\r
+        return;\r
+      }\r
 \r
-            return;\r
-        }\r
+      imgWidth = (av.endRes - av.startRes + 1) * av.charWidth;\r
 \r
-        imgWidth = (av.endRes - av.startRes + 1) * av.charWidth;\r
+      if (image != null && imgWidth == image.getWidth())\r
+      {\r
+        //This will be called by a mouse over, tool tip etc\r
+        // no need to redraw whole image\r
+        g.drawImage(image, 0, 0, this);\r
+        fastPaint = false;\r
+        return;\r
+      }\r
 \r
-        image = new BufferedImage(imgWidth, ap.annotationPanel.getHeight(),\r
-                BufferedImage.TYPE_INT_RGB);\r
-        gg = (Graphics2D) image.getGraphics();\r
-        gg.setRenderingHint(RenderingHints.KEY_ANTIALIASING,\r
-            RenderingHints.VALUE_ANTIALIAS_ON);\r
+      image = new BufferedImage(imgWidth, ap.annotationPanel.getHeight(),\r
+                                BufferedImage.TYPE_INT_RGB);\r
+      gg = (Graphics2D) image.getGraphics();\r
+      gg.setRenderingHint(RenderingHints.KEY_ANTIALIASING,\r
+                          RenderingHints.VALUE_ANTIALIAS_ON);\r
 \r
-        gg.setFont(av.getFont());\r
+      gg.setFont(av.getFont());\r
+      fm = gg.getFontMetrics();\r
 \r
-        drawComponent(gg, av.startRes, av.endRes + 1);\r
-        g.drawImage(image, 0, 0, this);\r
+      drawComponent(gg, av.startRes, av.endRes + 1);\r
+      g.drawImage(image, 0, 0, this);\r
     }\r
 \r
     /**\r
@@ -583,7 +592,9 @@ public class AnnotationPanel extends JPanel implements MouseListener,
         gg.translate(-transX, 0);\r
 \r
         fastPaint = true;\r
+\r
         repaint();\r
+\r
     }\r
 \r
     /**\r
@@ -595,9 +606,6 @@ public class AnnotationPanel extends JPanel implements MouseListener,
      */\r
     public void drawComponent(Graphics2D g, int startRes, int endRes)\r
     {\r
-      if(fm==null)\r
-        fm = g.getFontMetrics();\r
-\r
         g.setColor(Color.white);\r
         g.fillRect(0, 0, (endRes - startRes) * av.charWidth, getHeight());\r
 \r
@@ -688,22 +696,23 @@ public class AnnotationPanel extends JPanel implements MouseListener,
                 if (validRes &&\r
                         (row.annotations[j].displayCharacter.length() > 0))\r
                 {\r
+\r
                     int charOffset = (av.charWidth -\r
                         fm.charWidth(row.annotations[j].displayCharacter.charAt(\r
                                 0))) / 2;\r
                     g.setColor(row.annotations[j].colour);\r
 \r
-                    if (j == 0)\r
+                    if (j == 0 || row.isGraph)\r
                     {\r
                         g.drawString(row.annotations[j].displayCharacter, x+charOffset,\r
-                            y + iconOffset + 2);\r
+                            y + iconOffset + 3);\r
                     }\r
                     else if (((row.annotations[j - 1] == null) ||\r
                             (row.annotations[j].displayCharacter != row.annotations[j -\r
                             1].displayCharacter)))\r
                     {\r
                         g.drawString(row.annotations[j].displayCharacter, x+charOffset,\r
-                            y + iconOffset + 2);\r
+                            y + iconOffset + 3);\r
                     }\r
                 }\r
 \r