Merge branch 'develop' into feature/JAL-2611
[jalview.git] / src / jalview / viewmodel / OverviewDimensions.java
index c63fb3c..f54c1eb 100644 (file)
@@ -58,10 +58,6 @@ public abstract class OverviewDimensions
 
   protected int alheight;
 
-  protected int transX;
-
-  protected int transY;
-
   /**
    * Create an OverviewDimensions object
    * 
@@ -195,13 +191,42 @@ public abstract class OverviewDimensions
   public abstract void updateViewportFromMouse(int mousex, int mousey,
           HiddenSequences hiddenSeqs, HiddenColumns hiddenCols);
 
+  /**
+   * Update the viewport location from a mouse drag within the overview's box
+   * 
+   * @param mousex
+   *          x location of mouse
+   * @param mousey
+   *          y location of mouse
+   * @param hiddenSeqs
+   *          the alignment's hidden sequences
+   * @param hiddenCols
+   *          the alignment's hidden columns
+   */
   public abstract void adjustViewportFromMouse(int mousex, int mousey,
           HiddenSequences hiddenSeqs, HiddenColumns hiddenCols);
 
+  /**
+   * Initialise dragging from the mouse - must be called on initial mouse click
+   * before using adjustViewportFromMouse in drag operations
+   * 
+   * @param mousex
+   *          x location of mouse
+   * @param mousey
+   *          y location of mouse
+   * @param hiddenSeqs
+   *          the alignment's hidden sequences
+   * @param hiddenCols
+   *          the alignment's hidden columns
+   */
   public abstract void setDragPoint(int x, int y,
           HiddenSequences hiddenSeqs, HiddenColumns hiddenCols);
 
-  protected abstract void updateViewportFromTopLeft(int mousex, int mousey,
+  /*
+   * Move the viewport so that the top left corner of the overview's box 
+   * is at the mouse position (leftx, topy)
+   */
+  protected abstract void updateViewportFromTopLeft(int leftx, int topy,
           HiddenSequences hiddenSeqs, HiddenColumns hiddenCols);
 
   /**
@@ -238,13 +263,17 @@ public abstract class OverviewDimensions
    */
   protected abstract void resetAlignmentDims();
 
+  /*
+   * Given the box coordinates in residues and sequences, set the box dimensions in the overview window
+   */
   protected void setBoxPosition(int startRes, int startSeq, int vpwidth,
           int vpheight)
   {
     resetAlignmentDims();
 
     // boxX, boxY is the x,y location equivalent to startRes, startSeq
-    boxX = Math.round((float) startRes * width / alwidth);
+    int xPos = Math.min(startRes, alwidth - vpwidth + 1);
+    boxX = Math.round((float) xPos * width / alwidth);
     boxY = Math.round((float) startSeq * sequencesHeight / alheight);
 
     // boxWidth is the width in residues translated to pixels
@@ -252,8 +281,6 @@ public abstract class OverviewDimensions
 
     // boxHeight is the height in sequences translated to pixels
     boxHeight = Math.round((float) vpheight * sequencesHeight / alheight);
-
-    System.out.println("Update box: x: " + boxX);
   }
 
   /**
@@ -271,8 +298,14 @@ public abstract class OverviewDimensions
             && y < boxY + boxHeight);
   }
 
+  /*
+   * Given the centre x position, calculate the box's left x position
+   */
   protected abstract int getLeftXFromCentreX(int mousex, HiddenColumns hidden);
 
+  /*
+   * Given the centre y position, calculate the box's top y position
+   */
   protected abstract int getTopYFromCentreY(int mousey,
           HiddenSequences hidden);