JAL-2491 Cursor scrolling
authorkiramt <k.mourao@dundee.ac.uk>
Wed, 10 May 2017 10:45:44 +0000 (11:45 +0100)
committerkiramt <k.mourao@dundee.ac.uk>
Wed, 10 May 2017 10:45:44 +0000 (11:45 +0100)
src/jalview/gui/SeqPanel.java
src/jalview/viewmodel/ViewportRanges.java

index f1e4d13..ef2f782 100644 (file)
@@ -387,32 +387,8 @@ public class SeqPanel extends JPanel implements MouseListener,
     }
     else
     {
-      while (seqCanvas.cursorY < av.getRanges().getStartSeq())
-      {
-        av.getRanges().scrollUp(true);
-      }
-      while (seqCanvas.cursorY + 1 > av.getRanges().getEndSeq())
-      {
-        av.getRanges().scrollUp(false);
-      }
-
-      while (seqCanvas.cursorX < av.getColumnSelection()
-              .adjustForHiddenColumns(av.getRanges().getStartRes()))
-      {
-        if (!av.getRanges().scrollRight(false))
-        {
-          break;
-        }
-      }
-      while (seqCanvas.cursorX > av.getColumnSelection()
-              .adjustForHiddenColumns(av.getRanges().getEndRes()))
-      {
-        if (!av.getRanges().scrollRight(true))
-        {
-          break;
-        }
-      }
-
+      av.getRanges().scrollToVisible(seqCanvas.cursorX, seqCanvas.cursorY,
+              av);
     }
     setStatusMessage(av.getAlignment().getSequenceAt(seqCanvas.cursorY),
             seqCanvas.cursorX, seqCanvas.cursorY);
index 0583a8d..15f5023 100644 (file)
@@ -20,6 +20,7 @@
  */
 package jalview.viewmodel;
 
+import jalview.api.AlignViewportI;
 import jalview.datamodel.AlignmentI;
 
 /**
@@ -389,4 +390,33 @@ public class ViewportRanges extends ViewportProperties
     setStartRes((res / width) * width);
   }
 
+  // pass av here until hidden columns JAL-2388 merged, then use alignment
+  // instead
+  public void scrollToVisible(int x, int y, AlignViewportI av)
+  {
+    while (y < startSeq)
+    {
+      scrollUp(true);
+    }
+    while (y + 1 > endSeq)
+    {
+      scrollUp(false);
+    }
+
+    while (x < av.getColumnSelection().adjustForHiddenColumns(startRes))
+    {
+      if (!scrollRight(false))
+      {
+        break;
+      }
+    }
+    while (x > av.getColumnSelection().adjustForHiddenColumns(endRes))
+    {
+      if (!scrollRight(true))
+      {
+        break;
+      }
+    }
+  }
+
 }