JAL-147 extract local variable for ease of debugging
[jalview.git] / src / jalview / viewmodel / ViewportRanges.java
index f290ae7..abbc24c 100644 (file)
@@ -227,9 +227,10 @@ public class ViewportRanges extends ViewportProperties
   public void setStartEndSeq(int start, int end)
   {
     int oldstartseq = this.startSeq;
-    if (start > getVisibleAlignmentHeight() - 1)
+    int visibleHeight = getVisibleAlignmentHeight();
+    if (start > visibleHeight - 1)
     {
-      startSeq = Math.max(getVisibleAlignmentHeight() - 1, 0);
+      startSeq = Math.max(visibleHeight - 1, 0);
     }
     else if (start < 0)
     {
@@ -241,9 +242,9 @@ public class ViewportRanges extends ViewportProperties
     }
 
     int oldendseq = this.endSeq;
-    if (end >= getVisibleAlignmentHeight())
+    if (end >= visibleHeight)
     {
-      endSeq = Math.max(getVisibleAlignmentHeight() - 1, 0);
+      endSeq = Math.max(visibleHeight - 1, 0);
     }
     else if (end < 0)
     {
@@ -577,4 +578,35 @@ public class ViewportRanges extends ViewportProperties
   {
     wrappedMode = wrapped;
   }
+
+  /**
+   * Answers the vertical scroll position (0..) to set, given the visible column
+   * that is at top left. Note that if called with the total visible width of
+   * the alignment, this gives the maximum cursor scroll value.
+   * 
+   * <pre>
+   * Example:
+   *    viewport width 40 columns (0-39, 40-79, 80-119...)
+   *    column 0 returns scroll position 0
+   *    columns 0-40 return scroll position 1
+   *    columns 41-80 return scroll position 2
+   *    etc
+   * </pre>
+   * 
+   * @param topLeftColumn
+   *          (0..)
+   * @return
+   */
+  public int getWrappedScrollPosition(final int topLeftColumn)
+  {
+    int w = getViewportWidth();
+
+    /*
+     * visible whole widths
+     */
+    int scroll = topLeftColumn / w;
+    scroll += topLeftColumn % w > 0 ? 1 : 0;
+
+    return scroll;
+  }
 }