JAL-2613 Centre alignment at click point
[jalview.git] / src / jalview / viewmodel / OverviewDimensionsHideHidden.java
index 4bf7694..fe20195 100644 (file)
@@ -26,17 +26,17 @@ public class OverviewDimensionsHideHidden extends OverviewDimensions
   {
     resetAlignmentDims();
 
-    int x = mousex;
-    int y = mousey;
+    int xAsRes = getLeftXFromCentreX(mousex, hiddenCols);
+    int yAsSeq = getTopYFromCentreY(mousey, hiddenSeqs);
 
-    if (x < 0)
+    if (xAsRes < 0)
     {
-      x = 0;
+      xAsRes = 0;
     }
 
-    if (y < 0)
+    if (yAsSeq < 0)
     {
-      y = 0;
+      yAsSeq = 0;
     }
 
     //
@@ -48,7 +48,7 @@ public class OverviewDimensionsHideHidden extends OverviewDimensions
     // correction
 
     // convert x to residues - this is an absolute position
-    int xAsRes = Math.round((float) x * alwidth / width);
+    // int xAsRes = Math.round((float) x * alwidth / width);
 
     // get viewport width in residues
     int vpwidth = ranges.getViewportWidth();
@@ -74,7 +74,7 @@ public class OverviewDimensionsHideHidden extends OverviewDimensions
     //
 
     // convert y to residues
-    int yAsSeq = Math.round((float) y * alheight / sequencesHeight);
+    // int yAsSeq = Math.round((float) y * alheight / sequencesHeight);
 
     // get viewport height in sequences
     // add 1 because height includes both endSeq and startSeq
@@ -127,4 +127,18 @@ public class OverviewDimensionsHideHidden extends OverviewDimensions
     alwidth = ranges.getVisibleAlignmentWidth();
     alheight = ranges.getVisibleAlignmentHeight();
   }
+
+  @Override
+  protected int getLeftXFromCentreX(int mousex, HiddenColumns hidden)
+  {
+    int vpx = Math.round((float) mousex * alwidth / width);
+    return vpx - ranges.getViewportWidth() / 2;
+  }
+
+  @Override
+  protected int getTopYFromCentreY(int mousey, HiddenSequences hidden)
+  {
+    int vpy = Math.round((float) mousey * alheight / sequencesHeight);
+    return vpy - ranges.getViewportHeight() / 2;
+  }
 }