X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FAnnotationPanel.java;h=0eec840886106f86d93a69fdb3a3c9a54d3c4606;hb=d3bf4ae12b72df02dee34c95da750ab38a3816b9;hp=01be3b5343881266c7849ed4294fbb32023920d0;hpb=be8b1d254f658181eec3c29dc696114e3ffdd4df;p=jalview.git diff --git a/src/jalview/gui/AnnotationPanel.java b/src/jalview/gui/AnnotationPanel.java index 01be3b5..0eec840 100755 --- a/src/jalview/gui/AnnotationPanel.java +++ b/src/jalview/gui/AnnotationPanel.java @@ -150,6 +150,7 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI, */ public AnnotationPanel(AlignmentPanel ap) { + setName("AnnotationPanel"); ToolTipManager.sharedInstance().registerComponent(this); ToolTipManager.sharedInstance().setInitialDelay(0); ToolTipManager.sharedInstance().setDismissDelay(10000); @@ -355,7 +356,8 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI, @Override public void colourSelected(Color c) { - HiddenColumns hiddenColumns = av.getAlignment().getHiddenColumns(); + HiddenColumns hiddenColumns = av.getAlignment() + .getHiddenColumns(); for (int index : av.getColumnSelection().getSelected()) { if (hiddenColumns.isVisible(index)) @@ -366,10 +368,11 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI, } fAnot[index].colour = c; } - }}; + } + }; }; - JalviewColourChooser.showColourChooser(this, - title, Color.black, listener); + JalviewColourChooser.showColourChooser(this, title, Color.black, + listener); } else // HELIX, SHEET or STEM @@ -711,14 +714,13 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI, } if (dragMode == DragMode.Undefined) - { + { /* * drag is diagonal - defer deciding whether to * treat as up/down or left/right */ - return; - } - + return; + } try { if (dragMode == DragMode.Resize) @@ -734,6 +736,7 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI, int newHeight = Math.max(0, graphAnnotation.graphHeight + deltaY); graphAnnotation.graphHeight = newHeight; adjustPanelHeight(); + setNoFastPaint(); ap.paintAlignment(false, false); } } @@ -986,7 +989,9 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI, } private volatile boolean imageFresh = false; - private Rectangle visibleRect = new Rectangle(), clipBounds = new Rectangle(); + + private Rectangle visibleRect = new Rectangle(), + clipBounds = new Rectangle(); /** * DOCUMENT ME! @@ -997,37 +1002,37 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI, @Override public void paintComponent(Graphics g) { - - // BH: note that this method is generally recommended to - // call super.paintComponent(g). Otherwise, the children of this - // component will not be rendered. That is not needed here - // because AnnotationPanel does not have any children. It is - // just a JPanel contained in a JViewPort. + + // BH: note that this method is generally recommended to + // call super.paintComponent(g). Otherwise, the children of this + // component will not be rendered. That is not needed here + // because AnnotationPanel does not have any children. It is + // just a JPanel contained in a JViewPort. computeVisibleRect(visibleRect); - + g.setColor(Color.white); g.fillRect(0, 0, visibleRect.width, visibleRect.height); ViewportRanges ranges = av.getRanges(); - - - - if (image != null) + + if (allowFastPaint && image != null) { - // BH 2018 optimizing generation of new Rectangle(). - if (fastPaint || (visibleRect.width != (clipBounds = g.getClipBounds(clipBounds)).width) - || (visibleRect.height != clipBounds.height)) + // BH 2018 optimizing generation of new Rectangle(). + if (fastPaint + || (visibleRect.width != (clipBounds = g + .getClipBounds(clipBounds)).width) + || (visibleRect.height != clipBounds.height)) { - g.drawImage(image, 0, 0, this); + g.drawImage(image, 0, 0, this); fastPaint = false; return; } } - - imgWidth = (ranges.getEndRes() - ranges.getStartRes() - + 1) * av.getCharWidth(); - + + imgWidth = (ranges.getEndRes() - ranges.getStartRes() + 1) + * av.getCharWidth(); + if (imgWidth < 1) { fastPaint = false; @@ -1069,13 +1074,14 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI, gg.setColor(Color.white); gg.fillRect(0, 0, imgWidth, image.getHeight()); imageFresh = true; - } else { - gg = (Graphics2D) image.getGraphics(); + } + else + { + gg = (Graphics2D) image.getGraphics(); } - - drawComponent(gg, ranges.getStartRes(), - av.getRanges().getEndRes() + 1); + + drawComponent(gg, ranges.getStartRes(), av.getRanges().getEndRes() + 1); gg.dispose(); imageFresh = false; g.drawImage(image, 0, 0, this); @@ -1101,8 +1107,9 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI, int sr = av.getRanges().getStartRes(); int er = av.getRanges().getEndRes() + 1; int transX = 0; - - if (er == sr + 1) { + + if (er == sr + 1) + { fastPaint = false; return; } @@ -1129,7 +1136,7 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI, gg.translate(-transX, 0); gg.dispose(); - + fastPaint = true; // Call repaint on alignment panel so that repaints from other alignment @@ -1247,6 +1254,8 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI, private int[] bounds = new int[2]; + private boolean allowFastPaint; + @Override public int[] getVisibleVRange() { @@ -1273,7 +1282,7 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI, ap = null; image = null; fadedImage = null; -// gg = null; + // gg = null; _mwl = null; /* @@ -1353,4 +1362,14 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI, } return annotationHeight; } + + /** + * Clears the flag that allows a 'fast paint' on the next repaint, so + * requiring a full repaint + */ + public void setNoFastPaint() + { + allowFastPaint = false; + } + }