+ * In unwrapped mode, only responds to a vertical scroll, as horizontal scroll + * leaves sequence ids unchanged. In wrapped mode, only vertical scroll is + * provided, but it generates a change of "startres" which does require an + * update here. + */ + @Override + public void propertyChange(PropertyChangeEvent evt) + { + String propertyName = evt.getPropertyName(); + switch (propertyName) + { + case ViewportRanges.STARTSEQ: + fastPaint((int) evt.getNewValue() - (int) evt.getOldValue()); + break; + case ViewportRanges.STARTRES: + if (av.getWrapAlignment()) + { + fastPaint((int) evt.getNewValue() - (int) evt.getOldValue()); + } + break; + case ViewportRanges.STARTRESANDSEQ: + fastPaint(((int[]) evt.getNewValue())[1] + - ((int[]) evt.getOldValue())[1]); + break; + case ViewportRanges.MOVE_VIEWPORT: + repaint(); + break; + default: + } + } + + /** + * Clears the flag that allows a 'fast paint' on the next repaint, so + * requiring a full repaint + */ + public void setNoFastPaint() + { + allowFastPaint = false; + } +}