X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FAnnotationPanel.java;h=4f984fd1e6a7ea091ceedb36ea5b201f6137a5d3;hb=a6359c6eb746b06030b22135ed20417b971f580f;hp=9ae103ea8a50102c5d6ca7c7a6695252322cc35e;hpb=efc31b4a8d5cee63555586804a2b79c06bdb5a14;p=jalview.git diff --git a/src/jalview/gui/AnnotationPanel.java b/src/jalview/gui/AnnotationPanel.java index 9ae103e..4f984fd 100755 --- a/src/jalview/gui/AnnotationPanel.java +++ b/src/jalview/gui/AnnotationPanel.java @@ -519,29 +519,38 @@ public class AnnotationPanel extends JPanel implements MouseListener, */ public void paintComponent(Graphics g) { - g.setColor(Color.white); - g.fillRect(0, 0, getWidth(), getHeight()); + g.setColor(Color.white); + g.fillRect(0, 0, getWidth(), getHeight()); - if (fastPaint) - { - g.drawImage(image, 0, 0, this); - fastPaint = false; + if (fastPaint) + { + g.drawImage(image, 0, 0, this); + fastPaint = false; + return; + } - return; - } + imgWidth = (av.endRes - av.startRes + 1) * av.charWidth; - imgWidth = (av.endRes - av.startRes + 1) * av.charWidth; + if (image != null && imgWidth == image.getWidth()) + { + //This will be called by a mouse over, tool tip etc + // no need to redraw whole image + g.drawImage(image, 0, 0, this); + fastPaint = false; + return; + } - image = new BufferedImage(imgWidth, ap.annotationPanel.getHeight(), - BufferedImage.TYPE_INT_RGB); - gg = (Graphics2D) image.getGraphics(); - gg.setRenderingHint(RenderingHints.KEY_ANTIALIASING, - RenderingHints.VALUE_ANTIALIAS_ON); + image = new BufferedImage(imgWidth, ap.annotationPanel.getHeight(), + BufferedImage.TYPE_INT_RGB); + gg = (Graphics2D) image.getGraphics(); + gg.setRenderingHint(RenderingHints.KEY_ANTIALIASING, + RenderingHints.VALUE_ANTIALIAS_ON); - gg.setFont(av.getFont()); + gg.setFont(av.getFont()); + fm = gg.getFontMetrics(); - drawComponent(gg, av.startRes, av.endRes + 1); - g.drawImage(image, 0, 0, this); + drawComponent(gg, av.startRes, av.endRes + 1); + g.drawImage(image, 0, 0, this); } /** @@ -583,7 +592,9 @@ public class AnnotationPanel extends JPanel implements MouseListener, gg.translate(-transX, 0); fastPaint = true; + repaint(); + } /** @@ -595,9 +606,6 @@ public class AnnotationPanel extends JPanel implements MouseListener, */ public void drawComponent(Graphics2D g, int startRes, int endRes) { - if(fm==null) - fm = g.getFontMetrics(); - g.setColor(Color.white); g.fillRect(0, 0, (endRes - startRes) * av.charWidth, getHeight()); @@ -688,22 +696,23 @@ public class AnnotationPanel extends JPanel implements MouseListener, if (validRes && (row.annotations[j].displayCharacter.length() > 0)) { + int charOffset = (av.charWidth - fm.charWidth(row.annotations[j].displayCharacter.charAt( 0))) / 2; g.setColor(row.annotations[j].colour); - if (j == 0) + if (j == 0 || row.isGraph) { g.drawString(row.annotations[j].displayCharacter, x+charOffset, - y + iconOffset + 2); + y + iconOffset + 3); } else if (((row.annotations[j - 1] == null) || (row.annotations[j].displayCharacter != row.annotations[j - 1].displayCharacter))) { g.drawString(row.annotations[j].displayCharacter, x+charOffset, - y + iconOffset + 2); + y + iconOffset + 3); } }