JAL-2611 Tidies, initial unit tests
[jalview.git] / src / jalview / viewmodel / OverviewDimensionsShowHidden.java
index efffe6f..c4b69a8 100644 (file)
@@ -32,6 +32,12 @@ public class OverviewDimensionsShowHidden extends OverviewDimensions
 {
   private ViewportRanges ranges;
 
+  private int xdiff; // when dragging, difference in alignment units between
+                     // start residue and original mouse click position
+
+  private int ydiff; // when dragging, difference in alignment units between
+                     // start sequence and original mouse click position
+
   /**
    * Create an OverviewDimensions object
    * 
@@ -66,14 +72,18 @@ public class OverviewDimensionsShowHidden extends OverviewDimensions
   public void updateViewportFromMouse(int mousex, int mousey,
           HiddenSequences hiddenSeqs, HiddenColumns hiddenCols)
   {
+    // convert mousex and mousey to alignment units as well as
+    // translating to top left corner of viewport - this is an absolute position
     int xAsRes = getLeftXFromCentreX(mousex, hiddenCols);
     int yAsSeq = getTopYFromCentreY(mousey, hiddenSeqs);
 
+    // convert to visible positions
     int visXAsRes = hiddenCols.findColumnPosition(xAsRes);
     yAsSeq = hiddenSeqs.adjustForHiddenSeqs(
             hiddenSeqs.findIndexWithoutHiddenSeqs(yAsSeq));
     int visYAsSeq = hiddenSeqs.findIndexWithoutHiddenSeqs(yAsSeq);
 
+    // update viewport accordingly
     updateViewportFromTopLeft(visXAsRes, visYAsSeq, hiddenSeqs, hiddenCols);
   }
 
@@ -86,21 +96,23 @@ public class OverviewDimensionsShowHidden extends OverviewDimensions
     // coords,
     // convert back to pixel coords
     int vpx = Math.round((float) mousex * alwidth / width);
-    int visXAsRes = hiddenCols.findColumnPosition(vpx) + fixedX;
+    int visXAsRes = hiddenCols.findColumnPosition(vpx) + xdiff;
 
     int vpy = Math.round((float) mousey * alheight / sequencesHeight);
-    int visYAsRes = hiddenSeqs.findIndexWithoutHiddenSeqs(vpy) + fixedY;
+    int visYAsRes = hiddenSeqs.findIndexWithoutHiddenSeqs(vpy) + ydiff;
 
+    // update viewport accordingly
     updateViewportFromTopLeft(visXAsRes, visYAsRes,
             hiddenSeqs,
             hiddenCols);
   }
 
   @Override
-  protected void updateViewportFromTopLeft(int visXAsRes, int visYAsSeq,
+  protected void updateViewportFromTopLeft(int leftx, int topy,
           HiddenSequences hiddenSeqs, HiddenColumns hiddenCols)
   {
-
+    int visXAsRes = leftx;
+    int visYAsSeq = topy;
     resetAlignmentDims();
 
     if (visXAsRes < 0)
@@ -113,26 +125,11 @@ public class OverviewDimensionsShowHidden extends OverviewDimensions
       visYAsSeq = 0;
     }
 
-    //
-    // Convert x value to residue position
-    //
-
-    // need to determine where scrollCol should be, given x
-    // to do this also need to know width of viewport, and some hidden column
-    // correction
-
-    // convert x to residues - this is an absolute position
-    // int xAsRes = Math.round((float) x * alwidth / width);
+    // Determine where scrollCol should be, given visXAsRes
 
     // get viewport width in residues
     int vpwidth = ranges.getViewportWidth();
 
-    // get where x should be when accounting for hidden cols
-    // if x is in a hidden col region, shift to left - but we still need
-    // absolute position
-    // so convert back after getting visible region position
-
-
     // check in case we went off the edge of the alignment
     int visAlignWidth = hiddenCols.findColumnPosition(alwidth - 1);
     if (visXAsRes + vpwidth - 1 > visAlignWidth)
@@ -151,22 +148,11 @@ public class OverviewDimensionsShowHidden extends OverviewDimensions
       }
     }
 
-    //
-    // Convert y value to sequence position
-    //
-
-    // convert y to residues
-    // int yAsSeq = Math.round((float) y * alheight / sequencesHeight);
+    // Determine where scrollRow should be, given visYAsSeq
 
     // get viewport height in sequences
     int vpheight = ranges.getViewportHeight();
 
-    // get where y should be when accounting for hidden rows
-    // if y is in a hidden row region, shift up - but we still need absolute
-    // position,
-    // so convert back after getting visible region position
-
-
     // check in case we went off the edge of the alignment
     int visAlignHeight = hiddenSeqs.findIndexWithoutHiddenSeqs(alheight);
 
@@ -187,7 +173,6 @@ public class OverviewDimensionsShowHidden extends OverviewDimensions
     // update viewport
     ranges.setStartRes(visXAsRes);
     ranges.setStartSeq(visYAsSeq);
-
   }
 
   /**
@@ -205,7 +190,6 @@ public class OverviewDimensionsShowHidden extends OverviewDimensions
   public void setBoxPosition(HiddenSequences hiddenSeqs,
           HiddenColumns hiddenCols)
   {
-
     // work with absolute values of startRes and endRes
     int startRes = hiddenCols.adjustForHiddenColumns(ranges.getStartRes());
     int endRes = hiddenCols.adjustForHiddenColumns(ranges.getEndRes());
@@ -214,8 +198,6 @@ public class OverviewDimensionsShowHidden extends OverviewDimensions
     int startSeq = hiddenSeqs.adjustForHiddenSeqs(ranges.getStartSeq());
     int endSeq = hiddenSeqs.adjustForHiddenSeqs(ranges.getEndSeq());
 
-    System.out.println("Update box: startres: " + startRes);
-
     setBoxPosition(startRes, startSeq, endRes - startRes + 1, endSeq
             - startSeq + 1);
   }
@@ -261,15 +243,14 @@ public class OverviewDimensionsShowHidden extends OverviewDimensions
   public void setDragPoint(int x, int y, HiddenSequences hiddenSeqs,
           HiddenColumns hiddenCols)
   {
-    {
-      // get alignment position of x and box (can get directly from vpranges) and calc difference
-      int vpx = Math.round((float) x * alwidth / width);
-      fixedX = ranges.getStartRes() - hiddenCols.findColumnPosition(vpx);
-
-      int vpy = Math.round((float) y * alheight / sequencesHeight);
-      fixedY = ranges.getStartSeq()
-              - hiddenSeqs.findIndexWithoutHiddenSeqs(vpy);
-    }
+    // get alignment position of x and box (can get directly from vpranges) and
+    // calculate difference between the positions
+    int vpx = Math.round((float) x * alwidth / width);
+    int vpy = Math.round((float) y * alheight / sequencesHeight);
+
+    xdiff = ranges.getStartRes() - hiddenCols.findColumnPosition(vpx);
+    ydiff = ranges.getStartSeq()
+            - hiddenSeqs.findIndexWithoutHiddenSeqs(vpy);
   }
 
 }