int height = 0;
activeRow = -1;
+ final int y = evt.getY();
for (int i = 0; i < aa.length; i++)
{
if (aa[i].visible)
height += aa[i].height;
}
- if (evt.getY() < height)
+ if (y < height)
{
if (aa[i].editable)
{
{
// Stretch Graph
graphStretch = i;
- graphStretchY = evt.getY();
+ graphStretchY = y;
}
break;
}
}
+ /*
+ * isPopupTrigger fires in mousePressed on Mac,
+ * not until mouseRelease on Windows
+ */
if (evt.isPopupTrigger() && activeRow != -1)
{
- if (av.getColumnSelection() == null
- || av.getColumnSelection().isEmpty())
- {
- return;
- }
+ showPopupMenu(y, evt.getX());
+ return;
+ }
- JPopupMenu pop = new JPopupMenu(
- MessageManager.getString("label.structure_type"));
- JMenuItem item;
- /*
- * Just display the needed structure options
- */
- if (av.getAlignment().isNucleotide())
- {
- item = new JMenuItem(STEM);
- item.addActionListener(this);
- pop.add(item);
- }
- else
- {
- item = new JMenuItem(HELIX);
- item.addActionListener(this);
- pop.add(item);
- item = new JMenuItem(SHEET);
- item.addActionListener(this);
- pop.add(item);
- }
- item = new JMenuItem(LABEL);
+ ap.getScalePanel().mousePressed(evt);
+ }
+
+ /**
+ * Construct and display a context menu at the right-click position
+ *
+ * @param y
+ * @param x
+ */
+ void showPopupMenu(final int y, int x)
+ {
+ if (av.getColumnSelection() == null
+ || av.getColumnSelection().isEmpty())
+ {
+ return;
+ }
+
+ JPopupMenu pop = new JPopupMenu(
+ MessageManager.getString("label.structure_type"));
+ JMenuItem item;
+ /*
+ * Just display the needed structure options
+ */
+ if (av.getAlignment().isNucleotide())
+ {
+ item = new JMenuItem(STEM);
item.addActionListener(this);
pop.add(item);
- item = new JMenuItem(COLOUR);
+ }
+ else
+ {
+ item = new JMenuItem(HELIX);
item.addActionListener(this);
pop.add(item);
- item = new JMenuItem(REMOVE);
+ item = new JMenuItem(SHEET);
item.addActionListener(this);
pop.add(item);
- pop.show(this, evt.getX(), evt.getY());
-
- return;
}
-
- ap.getScalePanel().mousePressed(evt);
-
+ item = new JMenuItem(LABEL);
+ item.addActionListener(this);
+ pop.add(item);
+ item = new JMenuItem(COLOUR);
+ item.addActionListener(this);
+ pop.add(item);
+ item = new JMenuItem(REMOVE);
+ item.addActionListener(this);
+ pop.add(item);
+ pop.show(this, x, y);
}
/**
graphStretchY = -1;
mouseDragging = false;
ap.getScalePanel().mouseReleased(evt);
+
+ /*
+ * isPopupTrigger is set in mouseReleased on Windows
+ * (in mousePressed on Mac)
+ */
+ if (evt.isPopupTrigger() && activeRow != -1)
+ {
+ showPopupMenu(evt.getY(), evt.getX());
+ }
+
}
/**