JAL-4345 patch and release notes
[jalview.git] / src / jalview / gui / ScalePanel.java
index 930ba79..4a42861 100755 (executable)
@@ -107,14 +107,7 @@ public class ScalePanel extends JPanel
   @Override
   public void mousePressed(MouseEvent evt)
   {
-    int x = (evt.getX() / av.getCharWidth()) + av.getRanges().getStartRes();
-    final int res;
-
-    if (av.hasHiddenColumns())
-    {
-      x = av.getAlignment().getHiddenColumns().visibleToAbsoluteColumn(x);
-    }
-    res = Math.min(x, av.getAlignment().getWidth() - 1);
+    int res = ap.getSeqPanel().findAlignmentColumn(evt);
 
     min = res;
     max = res;
@@ -269,6 +262,7 @@ public class ScalePanel extends JPanel
     }
     av.setSelectionGroup(sg);
     ap.paintAlignment(false, false);
+    PaintRefresher.Refresh(this, av.getSequenceSetId());
     av.sendSelection();
   }
 
@@ -285,17 +279,7 @@ public class ScalePanel extends JPanel
     mouseDragging = false;
     ap.getSeqPanel().stopScrolling();
 
-    // todo res calculation should be a method on AlignViewport
-    int xCords = Math.max(0, evt.getX()); // prevent negative X coordinates
-    ViewportRanges ranges = av.getRanges();
-    int res = (xCords / av.getCharWidth()) + ranges.getStartRes();
-    res = Math.min(res, ranges.getEndRes());
-    if (av.hasHiddenColumns())
-    {
-      res = av.getAlignment().getHiddenColumns()
-              .visibleToAbsoluteColumn(res);
-    }
-    res = Math.max(0, res);
+    int res = ap.getSeqPanel().findAlignmentColumn(evt);
 
     if (!stretchingGroup)
     {
@@ -350,14 +334,10 @@ public class ScalePanel extends JPanel
   public void mouseDragged(MouseEvent evt)
   {
     mouseDragging = true;
+    int res = ap.getSeqPanel().findAlignmentColumn(evt);
+
     ColumnSelection cs = av.getColumnSelection();
-    HiddenColumns hidden = av.getAlignment().getHiddenColumns();
 
-    int res = (evt.getX() / av.getCharWidth())
-            + av.getRanges().getStartRes();
-    res = Math.max(0, res);
-    res = hidden.visibleToAbsoluteColumn(res);
-    res = Math.min(res, av.getAlignment().getWidth() - 1);
     min = Math.min(res, min);
     max = Math.max(res, max);
 
@@ -367,6 +347,7 @@ public class ScalePanel extends JPanel
       stretchingGroup = true;
       cs.stretchGroup(res, sg, min, max);
       ap.paintAlignment(false, false);
+      PaintRefresher.Refresh(ap, av.getSequenceSetId());
     }
   }
 
@@ -408,22 +389,20 @@ public class ScalePanel extends JPanel
   {
     this.setToolTipText(null);
     reveal = null;
+    final int res = ap.getSeqPanel().findAlignmentColumn(evt);
+
+    highlightAllStructPos(res);
     if (!av.hasHiddenColumns())
     {
-      int res = (evt.getX() / av.getCharWidth())
-              + av.getRanges().getStartRes();
-      highlightAllStructPos(res);
       return;
     }
-
-    int res = (evt.getX() / av.getCharWidth())
-            + av.getRanges().getStartRes();
-
     reveal = av.getAlignment().getHiddenColumns()
-            .getRegionWithEdgeAtRes(res);
-
-    res = av.getAlignment().getHiddenColumns().visibleToAbsoluteColumn(res);
-    highlightAllStructPos(res);
+            .getRegionWithEdgeAtRes(av.getAlignment().getHiddenColumns()
+                    .absoluteToVisibleColumn(res));
+    if (reveal == null)
+    {
+      return;
+    }
     ToolTipManager.sharedInstance().registerComponent(this);
     this.setToolTipText(
             MessageManager.getString("label.reveal_hidden_columns"));