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
removal of AlignmentFrame lines
[jalview.git]
/
src
/
jalview
/
gui
/
ScalePanel.java
diff --git
a/src/jalview/gui/ScalePanel.java
b/src/jalview/gui/ScalePanel.java
index
2302ebe
..
5da14b3
100755
(executable)
--- a/
src/jalview/gui/ScalePanel.java
+++ b/
src/jalview/gui/ScalePanel.java
@@
-35,6
+35,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;
@@
-42,6
+43,7
@@
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.beans.PropertyChangeEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.beans.PropertyChangeEvent;
+import java.util.Iterator;
import java.util.List;
import javax.swing.JMenuItem;
import java.util.List;
import javax.swing.JMenuItem;
@@
-54,8
+56,8
@@
import javax.swing.ToolTipManager;
* The panel containing the sequence ruler (when not in wrapped mode), and
* supports a range of mouse operations to select, hide or reveal columns.
*/
* The panel containing the sequence ruler (when not in wrapped mode), and
* supports a range of mouse operations to select, hide or reveal columns.
*/
-public class ScalePanel extends JPanel implements MouseMotionListener,
- MouseListener, ViewportListenerI
+public class ScalePanel extends JPanel
+ implements MouseMotionListener, MouseListener, ViewportListenerI
{
protected int offy = 4;
{
protected int offy = 4;
@@
-112,7
+114,7
@@
public class ScalePanel extends JPanel implements MouseMotionListener,
if (av.hasHiddenColumns())
{
if (av.hasHiddenColumns())
{
- x = av.getAlignment().getHiddenColumns().adjustForHiddenColumns(x);
+ x = av.getAlignment().getHiddenColumns().visibleToAbsoluteColumn(x);
}
if (x >= av.getAlignment().getWidth())
}
if (x >= av.getAlignment().getWidth())
@@
-168,13
+170,13
@@
public class ScalePanel extends JPanel implements MouseMotionListener,
{
av.showColumn(reveal[0]);
reveal = null;
{
av.showColumn(reveal[0]);
reveal = null;
- ap.paintAlignment(true);
+ ap.paintAlignment(true, true);
av.sendSelection();
}
});
pop.add(item);
av.sendSelection();
}
});
pop.add(item);
- if (av.getAlignment().getHiddenColumns().hasHiddenColumns())
+ if (av.getAlignment().getHiddenColumns().hasMultiHiddenColumnRegions())
{
item = new JMenuItem(MessageManager.getString("action.reveal_all"));
item.addActionListener(new ActionListener()
{
item = new JMenuItem(MessageManager.getString("action.reveal_all"));
item.addActionListener(new ActionListener()
@@
-184,7
+186,7
@@
public class ScalePanel extends JPanel implements MouseMotionListener,
{
av.showAllHiddenColumns();
reveal = null;
{
av.showAllHiddenColumns();
reveal = null;
- ap.paintAlignment(true);
+ ap.paintAlignment(true, true);
av.sendSelection();
}
});
av.sendSelection();
}
});
@@
-202,14
+204,13
@@
public class ScalePanel extends JPanel implements MouseMotionListener,
public void actionPerformed(ActionEvent e)
{
av.hideColumns(res, res);
public void actionPerformed(ActionEvent e)
{
av.hideColumns(res, res);
- if (av.getSelectionGroup() != null
- && av.getSelectionGroup().getSize() == av.getAlignment()
- .getHeight())
+ if (av.getSelectionGroup() != null && av.getSelectionGroup()
+ .getSize() == av.getAlignment().getHeight())
{
av.setSelectionGroup(null);
}
{
av.setSelectionGroup(null);
}
- ap.paintAlignment(true);
+ ap.paintAlignment(true, true);
av.sendSelection();
}
});
av.sendSelection();
}
});
@@
-261,34
+262,31
@@
public class ScalePanel extends JPanel implements MouseMotionListener,
sg.setEndRes(max);
}
av.setSelectionGroup(sg);
sg.setEndRes(max);
}
av.setSelectionGroup(sg);
- ap.paintAlignment(false);
+ ap.paintAlignment(false, false);
av.sendSelection();
}
/**
av.sendSelection();
}
/**
- * 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();
+ // todo res calculation should be a method on AlignViewport
int res = (evt.getX() / av.getCharWidth())
+ av.getRanges().getStartRes();
int res = (evt.getX() / av.getCharWidth())
+ av.getRanges().getStartRes();
-
if (av.hasHiddenColumns())
{
res = av.getAlignment().getHiddenColumns()
if (av.hasHiddenColumns())
{
res = av.getAlignment().getHiddenColumns()
- .adjustForHiddenColumns(res);
- }
-
- if (res >= av.getAlignment().getWidth())
- {
- res = av.getAlignment().getWidth() - 1;
+ .visibleToAbsoluteColumn(res);
}
}
+ res = Math.min(res, av.getAlignment().getWidth() - 1);
if (!stretchingGroup)
{
if (!stretchingGroup)
{
@@
-298,7
+296,7
@@
public class ScalePanel extends JPanel implements MouseMotionListener,
}
else
{
}
else
{
- ap.paintAlignment(false);
+ ap.paintAlignment(false, false);
}
return;
}
}
return;
}
@@
-317,7
+315,7
@@
public class ScalePanel extends JPanel implements MouseMotionListener,
}
}
stretchingGroup = false;
}
}
stretchingGroup = false;
- ap.paintAlignment(false);
+ ap.paintAlignment(false, false);
av.sendSelection();
}
av.sendSelection();
}
@@
-337,7
+335,7
@@
public class ScalePanel extends JPanel implements MouseMotionListener,
int res = (evt.getX() / av.getCharWidth())
+ av.getRanges().getStartRes();
res = Math.max(0, res);
int res = (evt.getX() / av.getCharWidth())
+ av.getRanges().getStartRes();
res = Math.max(0, res);
- res = hidden.adjustForHiddenColumns(res);
+ res = hidden.visibleToAbsoluteColumn(res);
res = Math.min(res, av.getAlignment().getWidth() - 1);
min = Math.min(res, min);
max = Math.max(res, max);
res = Math.min(res, av.getAlignment().getWidth() - 1);
min = Math.min(res, min);
max = Math.max(res, max);
@@
-347,7
+345,7
@@
public class ScalePanel extends JPanel implements MouseMotionListener,
{
stretchingGroup = true;
cs.stretchGroup(res, sg, min, max);
{
stretchingGroup = true;
cs.stretchGroup(res, sg, min, max);
- ap.paintAlignment(false);
+ ap.paintAlignment(false, false);
}
}
}
}
@@
-356,16
+354,23
@@
public class ScalePanel extends JPanel implements MouseMotionListener,
{
if (mouseDragging)
{
{
if (mouseDragging)
{
- ap.getSeqPanel().scrollCanvas(null);
+ mouseDragging = false;
+ 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));
}
}
}
}
@@
-393,7
+398,7
@@
public class ScalePanel extends JPanel implements MouseMotionListener,
reveal = av.getAlignment().getHiddenColumns()
.getRegionWithEdgeAtRes(res);
reveal = av.getAlignment().getHiddenColumns()
.getRegionWithEdgeAtRes(res);
- res = av.getAlignment().getHiddenColumns().adjustForHiddenColumns(res);
+ res = av.getAlignment().getHiddenColumns().visibleToAbsoluteColumn(res);
ToolTipManager.sharedInstance().registerComponent(this);
this.setToolTipText(
ToolTipManager.sharedInstance().registerComponent(this);
this.setToolTipText(
@@
-410,14
+415,16
@@
public class ScalePanel extends JPanel implements MouseMotionListener,
@Override
public void paintComponent(Graphics g)
{
@Override
public void paintComponent(Graphics g)
{
+ //super.paintComponent(g); // BH 2019
+
/*
* shouldn't get called in wrapped mode as the scale above is
* drawn instead by SeqCanvas.drawNorthScale
*/
if (!av.getWrapAlignment())
{
/*
* shouldn't get called in wrapped mode as the scale above is
* drawn instead by SeqCanvas.drawNorthScale
*/
if (!av.getWrapAlignment())
{
- drawScale(g, av.getRanges().getStartRes(),
- av.getRanges().getEndRes(), getWidth(), getHeight());
+ drawScale(g, av.getRanges().getStartRes(), av.getRanges().getEndRes(),
+ getWidth(), getHeight());
}
}
}
}
@@
-458,7
+465,7
@@
public class ScalePanel extends JPanel implements MouseMotionListener,
{
if (hidden.isVisible(sel))
{
{
if (hidden.isVisible(sel))
{
- sel = hidden.findColumnPosition(sel);
+ sel = hidden.absoluteToVisibleColumn(sel);
}
else
{
}
else
{
@@
-488,20
+495,18
@@
public class ScalePanel extends JPanel implements MouseMotionListener,
if (av.getShowHiddenMarkers())
{
if (av.getShowHiddenMarkers())
{
- List<Integer> positions = hidden.findHiddenRegionPositions();
- for (int pos : positions)
+ Iterator<Integer> it = hidden.getStartRegionIterator(startx,
+ startx + widthx + 1);
+ while (it.hasNext())
{
{
- res = pos - startx;
-
- if (res < 0 || res > widthx)
- {
- continue;
- }
+ res = it.next() - startx;
- gg.fillPolygon(new int[] {
- -1 + res * avCharWidth - avCharHeight / 4,
+ gg.fillPolygon(
+ new int[]
+ { -1 + res * avCharWidth - avCharHeight / 4,
-1 + res * avCharWidth + avCharHeight / 4,
-1 + res * avCharWidth + avCharHeight / 4,
- -1 + res * avCharWidth }, new int[] { y, y, y + 2 * yOf }, 3);
+ -1 + res * avCharWidth }, new int[]
+ { y, y, y + 2 * yOf }, 3);
}
}
}
}
}
}
@@
-547,10
+552,16
@@
public class ScalePanel extends JPanel implements MouseMotionListener,
// Here we only want to fastpaint on a scroll, with resize using a normal
// paint, so scroll events are identified as changes to the horizontal or
// vertical start value.
// Here we only want to fastpaint on a scroll, with resize using a normal
// paint, so scroll events are identified as changes to the horizontal or
// vertical start value.
- if (evt.getPropertyName().equals(ViewportRanges.STARTRES))
+ if (evt.getPropertyName().equals(ViewportRanges.STARTRES)
+ || evt.getPropertyName().equals(ViewportRanges.STARTRESANDSEQ)
+ || evt.getPropertyName().equals(ViewportRanges.MOVE_VIEWPORT))
{
// scroll event, repaint panel
{
// scroll event, repaint panel
- repaint();
+
+ // Call repaint on alignment panel so that repaints from other alignment
+ // panel components can be aggregated. Otherwise performance of the overview
+ // window and others may be adversely affected.
+ av.getAlignPanel().repaint();
}
}
}
}