+
+ /**
+ * 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.
+ * <p>
+ * 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)
+ {
+ // BH just clarifying logic
+ String propertyName = evt.getPropertyName();
+ switch (propertyName) {
+ case ViewportRanges.STARTSEQ:
+ fastPaint((int) evt.getNewValue() - (int) evt.getOldValue());
+ return;
+ case ViewportRanges.STARTRES:
+ if (av.getWrapAlignment())
+ {
+ fastPaint((int) evt.getNewValue() - (int) evt.getOldValue());
+ }
+ return;
+ case ViewportRanges.STARTRESANDSEQ:
+ fastPaint(((int[]) evt.getNewValue())[1]
+ - ((int[]) evt.getOldValue())[1]);
+ return;
+ case ViewportRanges.MOVE_VIEWPORT:
+ repaint();
+ return;
+ case ViewportRanges.ENDRES:
+ case ViewportRanges.ENDSEQ:
+ // ignore ??
+ return;
+ }
+// BH 2019.07.27 was:
+// if (propertyName.equals(ViewportRanges.STARTSEQ)
+// || (av.getWrapAlignment()
+// && propertyName.equals(ViewportRanges.STARTRES)))
+// {
+// fastPaint((int) evt.getNewValue() - (int) evt.getOldValue());
+// }
+// else if (propertyName.equals(ViewportRanges.STARTRESANDSEQ))
+// {
+// fastPaint(((int[]) evt.getNewValue())[1]
+// - ((int[]) evt.getOldValue())[1]);
+// }
+// else if (propertyName.equals(ViewportRanges.MOVE_VIEWPORT))
+// {
+// repaint();
+ // }
+ }