+
+ /**
+ * Set the viewport location so that a position is visible
+ *
+ * @param x
+ * column to be visible
+ * @param y
+ * row to be visible
+ */
+ public boolean setViewportLocation(int x, int y)
+ {
+ boolean changedLocation = false;
+
+ int vis_x = al.getHiddenColumns().findColumnPosition(x);
+ int vis_y = al.getHiddenSequences().findIndexWithoutHiddenSeqs(y);
+
+ // if (vis_x,vis_y) is already visible don't do anything
+ if (startRes > vis_x || vis_x > endRes
+ || startSeq > vis_y && vis_y > endSeq)
+ {
+ int[] old = new int[] { startRes, startSeq };
+ int[] newresseq;
+ if (wrappedMode)
+ {
+ int newstartres = calcWrappedStartResidue(vis_x);
+ setStartRes(newstartres);
+ newresseq = new int[] { startRes, startSeq };
+ }
+ else
+ {
+ int width = getViewportWidth();
+ updateStartEndRes(vis_x, vis_x + width - 1);
+
+ int startseq = vis_y;
+ int height = getViewportHeight();
+ if (startseq + height - 1 > getVisibleAlignmentHeight() - 1)
+ {
+ startseq = getVisibleAlignmentHeight() - height;
+ }
+ updateStartEndSeq(startseq,
+ startseq + height - 1);
+
+ // int[] old = new int[] { oldresvalues[0], oldseqvalues[0] };
+ newresseq = new int[] { startRes, startSeq };
+ }
+ changedLocation = true;
+ changeSupport.firePropertyChange(MOVE_VIEWPORT, old, newresseq);
+ }
+ return changedLocation;
+ }
+