JAL-2491 Started moving other scrolling fns into viewportranges
[jalview.git] / src / jalview / gui / AlignmentPanel.java
index 795146d..4cfa7d5 100644 (file)
@@ -152,16 +152,25 @@ public class AlignmentPanel extends GAlignmentPanel implements
         // reset the viewport ranges when the alignment panel is resized
         // in particular, this initialises the end residue value when Jalview
         // is initialised
-        int widthInRes = (getSeqPanel().seqCanvas.getWidth() / av
-                .getCharWidth()) - 1;
-        int currentStartRes = vpRanges.getStartRes();
+        
+        
         if (av.getWrapAlignment())
         {
-          widthInRes = getSeqPanel().seqCanvas
+          int widthInRes = getSeqPanel().seqCanvas
                   .getWrappedCanvasWidth(getSeqPanel().seqCanvas.getWidth());
+          vpRanges.setStartEndRes(vpRanges.getStartRes(), widthInRes);
+        }
+        else
+        {
+          int widthInRes = (getSeqPanel().seqCanvas.getWidth() / av
+                  .getCharWidth()) - 1;
+          int heightInSeq = (getSeqPanel().seqCanvas.getHeight() / av.getCharHeight()) - 1;
+          
+          vpRanges.setStartEndRes(vpRanges.getStartRes(), widthInRes);
+          vpRanges.setStartEndSeq(vpRanges.getStartSeq(), heightInSeq);
         }
 
-        vpRanges.setStartEndRes(currentStartRes, widthInRes);
+        
       }
 
     });
@@ -227,10 +236,6 @@ public class AlignmentPanel extends GAlignmentPanel implements
     getIdPanel().getIdCanvas().setPreferredSize(d);
     hscrollFillerPanel.setPreferredSize(d);
 
-    if (overviewPanel != null)
-    {
-      overviewPanel.setBoxPosition();
-    }
     if (this.alignFrame.getSplitViewContainer() != null)
     {
       ((SplitFrame) this.alignFrame.getSplitViewContainer()).adjustLayout();
@@ -482,29 +487,15 @@ public class AlignmentPanel extends GAlignmentPanel implements
       }
       else
       {
-        scrollToWrappedVisible(start);
+        vpRanges.scrollToWrappedVisible(start);
+        // scrollToWrappedVisible(start);
       }
     }
-    if (redrawOverview && overviewPanel != null)
-    {
-      overviewPanel.setBoxPosition();
-    }
+
     paintAlignment(redrawOverview);
     return true;
   }
 
-  void scrollToWrappedVisible(int res)
-  {
-    int cwidth = getSeqPanel().seqCanvas
-            .getWrappedCanvasWidth(getSeqPanel().seqCanvas.getWidth());
-    if (res < vpRanges.getStartRes()
-            || res >= (vpRanges.getStartRes() + cwidth))
-    {
-      vscroll.setValue((res / cwidth));
-    }
-
-  }
-
   /**
    * DOCUMENT ME!
    * 
@@ -640,75 +631,28 @@ public class AlignmentPanel extends GAlignmentPanel implements
       annotationSpaceFillerHolder.setVisible(true);
     }
 
-    idSpaceFillerPanel1.setVisible(!wrap);
-
-    repaint();
-  }
-
-  // return value is true if the scroll is valid
-  public boolean scrollUp(boolean up)
-  {
-    if (up)
+    if (wrap)
     {
-      if (vscroll.getValue() < 1)
-      {
-        return false;
-      }
-
-      fastPaint = false;
-      vscroll.setValue(vscroll.getValue() - 1);
+      int widthInRes = getSeqPanel().seqCanvas
+              .getWrappedCanvasWidth(getSeqPanel().seqCanvas.getWidth());
+      vpRanges.setStartEndRes(vpRanges.getStartRes(), widthInRes);
     }
     else
     {
-      if ((vextent + vscroll.getValue()) >= av.getAlignment().getHeight())
-      {
-        return false;
-      }
+      int widthInRes = (getSeqPanel().seqCanvas.getWidth() / av
+              .getCharWidth()) - 1;
+      int heightInSeq = (getSeqPanel().seqCanvas.getHeight() / av
+              .getCharHeight()) - 1;
 
-      fastPaint = false;
-      vscroll.setValue(vscroll.getValue() + 1);
+      vpRanges.setStartEndRes(vpRanges.getStartRes(), widthInRes);
+      vpRanges.setStartEndSeq(vpRanges.getStartSeq(), heightInSeq);
     }
 
-    fastPaint = true;
+    idSpaceFillerPanel1.setVisible(!wrap);
 
-    return true;
+    repaint();
   }
 
-  /**
-   * DOCUMENT ME!
-   * 
-   * @param right
-   *          DOCUMENT ME!
-   * 
-   * @return DOCUMENT ME!
-   */
-  public boolean scrollRight(boolean right)
-  {
-    if (!right)
-    {
-      if (hscroll.getValue() < 1)
-      {
-        return false;
-      }
-
-      fastPaint = false;
-      hscroll.setValue(hscroll.getValue() - 1);
-    }
-    else
-    {
-      if ((hextent + hscroll.getValue()) >= av.getAlignment().getWidth())
-      {
-        return false;
-      }
-
-      fastPaint = false;
-      hscroll.setValue(hscroll.getValue() + 1);
-    }
-
-    fastPaint = true;
-
-    return true;
-  }
 
   /**
    * Adjust row/column scrollers to show a visible position in the alignment.
@@ -791,7 +735,9 @@ public class AlignmentPanel extends GAlignmentPanel implements
   public void adjustmentValueChanged(AdjustmentEvent evt)
   {
     int oldX = vpRanges.getStartRes();
+    int oldwidth = vpRanges.getViewportWidth();
     int oldY = vpRanges.getStartSeq();
+    int oldheight = vpRanges.getViewportHeight();
 
     if (av.getWrapAlignment())
     {
@@ -808,7 +754,7 @@ public class AlignmentPanel extends GAlignmentPanel implements
         // if we're scrolling to the position we're already at, stop
         // this prevents infinite recursion of events when the scroll/viewport
         // ranges values are the same
-        if (offy * rowSize == oldX)
+        if ((offy * rowSize == oldX) && (oldwidth == rowSize))
         {
           return;
         }
@@ -840,34 +786,31 @@ public class AlignmentPanel extends GAlignmentPanel implements
       if (evt.getSource() == hscroll)
       {
         int x = hscroll.getValue();
+        int width = (getSeqPanel().seqCanvas.getWidth() / av.getCharWidth()) - 1;
 
         // if we're scrolling to the position we're already at, stop
         // this prevents infinite recursion of events when the scroll/viewport
         // ranges values are the same
-        if (x == oldX)
+        if ((x == oldX) && (width == oldwidth))
         {
           return;
         }
-        vpRanges.setStartEndRes(x,
-                (x + (getSeqPanel().seqCanvas.getWidth() / av
-                        .getCharWidth())) - 1);
+        vpRanges.setStartEndRes(x, x + width);
       }
       else if (evt.getSource() == vscroll)
       {
-        int offy = vscroll.getValue();
+        int y = vscroll.getValue();
+        int height = (getSeqPanel().seqCanvas.getHeight() / av
+                .getCharHeight()) - 1;
 
         // if we're scrolling to the position we're already at, stop
         // this prevents infinite recursion of events when the scroll/viewport
         // ranges values are the same
-        if (offy == oldY)
+        if ((y == oldY) && (height == oldheight))
         {
           return;
         }
-        vpRanges.setStartEndSeq(
-                offy,
-                offy
-                        + (getSeqPanel().seqCanvas.getHeight() / av
-                                .getCharHeight()) - 1);
+        vpRanges.setStartEndSeq(y, y + height);
       }
       if (!fastPaint)
       {