X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fviewmodel%2FViewportRanges.java;fp=src%2Fjalview%2Fviewmodel%2FViewportRanges.java;h=9a1e13c4d6ead8cd4ea5c95dd4a375ebe3774e6b;hb=6716ff86e500acc2800936b3f3c7132927a9246b;hp=4bdaa815caec0d0cf561bb353452f178c10aaa45;hpb=5c8c056843d24f3c0259615a05c981012e0f5d70;p=jalview.git diff --git a/src/jalview/viewmodel/ViewportRanges.java b/src/jalview/viewmodel/ViewportRanges.java index 4bdaa81..9a1e13c 100644 --- a/src/jalview/viewmodel/ViewportRanges.java +++ b/src/jalview/viewmodel/ViewportRanges.java @@ -41,6 +41,8 @@ public class ViewportRanges extends ViewportProperties public static final String STARTRESANDSEQ = "startresandseq"; + public static final String MOVE_VIEWPORT = "move_viewport"; + private boolean wrappedMode = false; // start residue of viewport @@ -593,7 +595,7 @@ public class ViewportRanges extends ViewportProperties { scrollUp(false); } - + HiddenColumns hidden = al.getHiddenColumns(); while (x < hidden.adjustForHiddenColumns(startRes)) { @@ -612,6 +614,40 @@ public class ViewportRanges extends ViewportProperties } /** + * 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) + { + // if (x,y) is already visible don't do anything + boolean changedLocation = false; + if (startRes > x || x > endRes || startSeq > y && y > endSeq) + { + int width = getViewportWidth(); + int[] oldresvalues = updateStartEndRes(x, x + width - 1); + + int startseq = y; + int height = getViewportHeight(); + if (startseq + height - 1 > getVisibleAlignmentHeight() - 1) + { + startseq = getVisibleAlignmentHeight() - height; + } + int[] oldseqvalues = updateStartEndSeq(startseq, + startseq + height - 1); + + int[] old = new int[] { oldresvalues[0], oldseqvalues[0] }; + int[] newresseq = new int[] { startRes, startSeq }; + changedLocation = true; + changeSupport.firePropertyChange(MOVE_VIEWPORT, old, newresseq); + } + return changedLocation; + } + + /** * Adjust sequence position for page up. Fires a property change event. */ public void pageUp()