git://source.jalview.org
/
jalview.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'bug/JAL-3072scrollThread' into merge/JAL-3072_3073
[jalview.git]
/
src
/
jalview
/
gui
/
ScalePanel.java
diff --git
a/src/jalview/gui/ScalePanel.java
b/src/jalview/gui/ScalePanel.java
index
5821b61
..
0f2b765
100755
(executable)
--- a/
src/jalview/gui/ScalePanel.java
+++ b/
src/jalview/gui/ScalePanel.java
@@
-34,6
+34,7
@@
import java.awt.Color;
import java.awt.FontMetrics;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.FontMetrics;
import java.awt.Graphics;
import java.awt.Graphics2D;
+import java.awt.Point;
import java.awt.RenderingHints;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.RenderingHints;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
@@
-157,7
+158,12
@@
public class ScalePanel extends JPanel
protected void rightMouseButtonPressed(MouseEvent evt, final int res)
{
JPopupMenu pop = new JPopupMenu();
protected void rightMouseButtonPressed(MouseEvent evt, final int res)
{
JPopupMenu pop = new JPopupMenu();
- if (reveal != null)
+
+ /*
+ * grab the hidden range in case mouseMoved nulls it
+ */
+ final int[] hiddenRange = reveal;
+ if (hiddenRange != null)
{
JMenuItem item = new JMenuItem(
MessageManager.getString("label.reveal"));
{
JMenuItem item = new JMenuItem(
MessageManager.getString("label.reveal"));
@@
-166,8
+172,9
@@
public class ScalePanel extends JPanel
@Override
public void actionPerformed(ActionEvent e)
{
@Override
public void actionPerformed(ActionEvent e)
{
- av.showColumn(reveal[0]);
+ av.showColumn(hiddenRange[0]);
reveal = null;
reveal = null;
+ ap.updateLayout();
ap.paintAlignment(true, true);
av.sendSelection();
}
ap.paintAlignment(true, true);
av.sendSelection();
}
@@
-184,6
+191,7
@@
public class ScalePanel extends JPanel
{
av.showAllHiddenColumns();
reveal = null;
{
av.showAllHiddenColumns();
reveal = null;
+ ap.updateLayout();
ap.paintAlignment(true, true);
av.sendSelection();
}
ap.paintAlignment(true, true);
av.sendSelection();
}
@@
-208,6
+216,7
@@
public class ScalePanel extends JPanel
av.setSelectionGroup(null);
}
av.setSelectionGroup(null);
}
+ ap.updateLayout();
ap.paintAlignment(true, true);
av.sendSelection();
}
ap.paintAlignment(true, true);
av.sendSelection();
}
@@
-257,31
+266,26
@@
public class ScalePanel extends JPanel
}
/**
}
/**
- * DOCUMENT ME!
+ * Action on mouseUp is to set the limit of the current selection group (if
+ * there is one) and broadcast the selection
*
* @param evt
*
* @param evt
- * DOCUMENT ME!
*/
@Override
public void mouseReleased(MouseEvent evt)
{
mouseDragging = false;
*/
@Override
public void mouseReleased(MouseEvent evt)
{
mouseDragging = false;
+ ap.getSeqPanel().stopScrolling();
int xCords = Math.max(0, evt.getX()); // prevent negative X coordinates
int xCords = Math.max(0, evt.getX()); // prevent negative X coordinates
-
int res = (xCords / av.getCharWidth())
+ av.getRanges().getStartRes();
int res = (xCords / av.getCharWidth())
+ av.getRanges().getStartRes();
-
if (av.hasHiddenColumns())
{
res = av.getAlignment().getHiddenColumns()
.visibleToAbsoluteColumn(res);
}
if (av.hasHiddenColumns())
{
res = av.getAlignment().getHiddenColumns()
.visibleToAbsoluteColumn(res);
}
-
- if (res >= av.getAlignment().getWidth())
- {
- res = av.getAlignment().getWidth() - 1;
- }
+ res = Math.min(res, av.getAlignment().getWidth() - 1);
if (!stretchingGroup)
{
if (!stretchingGroup)
{
@@
-311,12
+315,17
@@
public class ScalePanel extends JPanel
}
stretchingGroup = false;
ap.paintAlignment(false, false);
}
stretchingGroup = false;
ap.paintAlignment(false, false);
+ av.isSelectionGroupChanged(true);
+ av.isColSelChanged(true);
av.sendSelection();
}
/**
* Action on dragging the mouse in the scale panel is to expand or shrink the
av.sendSelection();
}
/**
* Action on dragging the mouse in the scale panel is to expand or shrink the
- * selection group range (including any hidden columns that it spans)
+ * selection group range (including any hidden columns that it spans). Note
+ * that the selection is only broadcast at the start of the drag (on
+ * mousePressed) and at the end (on mouseReleased), to avoid overload
+ * redrawing of other views.
*
* @param evt
*/
*
* @param evt
*/
@@
-349,16
+358,22
@@
public class ScalePanel extends JPanel
{
if (mouseDragging)
{
{
if (mouseDragging)
{
- ap.getSeqPanel().scrollCanvas(null);
+ ap.getSeqPanel().stopScrolling();
}
}
}
}
+ /**
+ * Action on leaving the panel bounds with mouse drag in progress is to start
+ * scrolling the alignment in the direction of the mouse. To restrict
+ * scrolling to left-right (not up-down), the y-value of the mouse position is
+ * replaced with zero.
+ */
@Override
public void mouseExited(MouseEvent evt)
{
if (mouseDragging)
{
@Override
public void mouseExited(MouseEvent evt)
{
if (mouseDragging)
{
- ap.getSeqPanel().scrollCanvas(evt);
+ ap.getSeqPanel().startScrolling(new Point(evt.getX(), 0));
}
}
}
}