*/
package jalview.gui;
-import jalview.datamodel.ColumnSelection;
-import jalview.datamodel.HiddenColumns;
-import jalview.datamodel.SequenceGroup;
-import jalview.renderer.ScaleRenderer;
-import jalview.renderer.ScaleRenderer.ScaleMark;
-import jalview.util.MessageManager;
-import jalview.util.Platform;
-import jalview.viewmodel.ViewportListenerI;
-import jalview.viewmodel.ViewportRanges;
-
import java.awt.Color;
import java.awt.FontMetrics;
import java.awt.Graphics;
import javax.swing.JPopupMenu;
import javax.swing.ToolTipManager;
+import jalview.datamodel.ColumnSelection;
+import jalview.datamodel.HiddenColumns;
+import jalview.datamodel.SequenceGroup;
+import jalview.renderer.ScaleRenderer;
+import jalview.renderer.ScaleRenderer.ScaleMark;
+import jalview.util.MessageManager;
+import jalview.util.Platform;
+import jalview.viewmodel.ViewportListenerI;
+import jalview.viewmodel.ViewportRanges;
+
/**
* The panel containing the sequence ruler (when not in wrapped mode), and
* supports a range of mouse operations to select, hide or reveal columns.
@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;
}
av.setSelectionGroup(sg);
ap.paintAlignment(false, false);
+ PaintRefresher.Refresh(this, av.getSequenceSetId());
av.sendSelection();
}
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)
{
ap.paintAlignment(false, false);
av.isSelectionGroupChanged(true);
av.isColSelChanged(true);
+ PaintRefresher.Refresh(ap, av.getSequenceSetId());
av.sendSelection();
}
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);
stretchingGroup = true;
cs.stretchGroup(res, sg, min, max);
ap.paintAlignment(false, false);
+ PaintRefresher.Refresh(ap, av.getSequenceSetId());
}
}
{
this.setToolTipText(null);
reveal = null;
+ final int res = ap.getSeqPanel().findAlignmentColumn(evt);
+
+ highlightAllStructPos(res);
if (!av.hasHiddenColumns())
{
return;
}
-
- int res = (evt.getX() / av.getCharWidth())
- + av.getRanges().getStartRes();
-
reveal = av.getAlignment().getHiddenColumns()
- .getRegionWithEdgeAtRes(res);
-
- res = av.getAlignment().getHiddenColumns().visibleToAbsoluteColumn(res);
-
+ .getRegionWithEdgeAtRes(av.getAlignment().getHiddenColumns()
+ .absoluteToVisibleColumn(res));
+ if (reveal == null)
+ {
+ return;
+ }
ToolTipManager.sharedInstance().registerComponent(this);
this.setToolTipText(
MessageManager.getString("label.reveal_hidden_columns"));
repaint();
}
+ public void highlightAllStructPos(int col)
+ {
+ ap.getStructureSelectionManager().highlightPositionsOnMany(
+ ap.av.getAlignment().getSequencesArray(), new int[]
+ { col, col }, ap);
+
+ }
+
/**
* DOCUMENT ME!
*