X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fjalview%2Fappletgui%2FIdCanvas.java;h=5313b413969ca7815e62e5d3e70d3953f52b5e84;hb=fbbd34a30d809bac64f708900ce8a53d2e79d866;hp=abcbd70becc49ea109d8aeaa117744d2dd7b41df;hpb=97b26ba418dec7a6e926378205d25470bf098633;p=jalview.git diff --git a/src/jalview/appletgui/IdCanvas.java b/src/jalview/appletgui/IdCanvas.java index abcbd70..5313b41 100755 --- a/src/jalview/appletgui/IdCanvas.java +++ b/src/jalview/appletgui/IdCanvas.java @@ -21,6 +21,7 @@ package jalview.appletgui; import jalview.datamodel.SequenceI; +import jalview.viewmodel.ViewportListenerI; import jalview.viewmodel.ViewportRanges; import java.awt.Color; @@ -28,9 +29,10 @@ import java.awt.Font; import java.awt.Graphics; import java.awt.Image; import java.awt.Panel; +import java.beans.PropertyChangeEvent; import java.util.List; -public class IdCanvas extends Panel +public class IdCanvas extends Panel implements ViewportListenerI { protected AlignViewport av; @@ -55,6 +57,7 @@ public class IdCanvas extends Panel setLayout(null); this.av = av; PaintRefresher.Register(this, av.getSequenceSetId()); + av.getRanges().addPropertyChangeListener(this); } public void drawIdString(Graphics gg, boolean hiddenRows, SequenceI s, @@ -218,7 +221,8 @@ public class IdCanvas extends Panel if (av.hasHiddenColumns()) { - maxwidth = av.getColumnSelection().findColumnPosition(maxwidth) - 1; + maxwidth = av.getAlignment().getHiddenColumns() + .findColumnPosition(maxwidth) - 1; } int annotationHeight = 0; @@ -393,4 +397,19 @@ public class IdCanvas extends Panel } return false; } + + @Override + public void propertyChange(PropertyChangeEvent evt) + { + // Respond to viewport range changes (e.g. alignment panel was scrolled) + // Both scrolling and resizing change viewport ranges: scrolling changes + // both start and end points, but resize only changes end values. + // Here we only want to fastpaint on a scroll, with resize using a normal + // paint, so scroll events are identified as changes to the horizontal or + // vertical start value. + if (evt.getPropertyName().equals(ViewportRanges.STARTSEQ)) + { + fastPaint((int) evt.getNewValue() - (int) evt.getOldValue()); + } + } }