import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
-import javax.swing.SwingUtilities;
import javax.swing.ToolTipManager;
/**
min = res;
max = res;
- if (SwingUtilities.isRightMouseButton(evt))
+ if (evt.isPopupTrigger())
{
rightMouseButtonPressed(evt, res);
}
for (int sel : cs.getSelected())
{
+ // TODO: JAL-2001 - provide a fast method to list visible selected in a
+ // given range
+
if (av.hasHiddenColumns())
{
if (cs.isVisible(sel))
int scalestartx = (startx / 10) * 10;
+ SequenceI refSeq = av.getAlignment().getSeqrep();
+ int refSp = 0, refEp = -1, refStart = 0, refEnd = -1, refStartI = 0, refEndI = -1;
+ if (refSeq != null)
+ {
+ // find bounds and set origin appopriately
+ // locate first visible position for this sequence
+ int[] refbounds = av.getColumnSelection()
+ .locateVisibleBoundsOfSequence(refSeq);
+
+ refSp = refbounds[0];
+ refEp = refbounds[1];
+ refStart = refbounds[2];
+ refEnd = refbounds[3];
+ refStartI = refbounds[4];
+ refEndI = refbounds[5];
+ scalestartx = refSp + ((scalestartx - refSp) / 10) * 10;
+ }
+
+
+ int widthx = 1 + endx - startx;
+
FontMetrics fm = gg.getFontMetrics(av.getFont());
int y = avCharHeight - fm.getDescent();
- if ((scalestartx % 10) == 0)
+ if (refSeq == null && scalestartx % 10 == 0)
{
scalestartx += 5;
}
String string;
- int maxX = 0;
-
+ int maxX = 0, refN, iadj;
+ // todo: add a 'reference origin column' to set column number relative to
for (int i = scalestartx; i < endx; i += 5)
{
- if ((i % 10) == 0)
+ if (((i - refSp) % 10) == 0)
{
- string = String.valueOf(av.getColumnSelection()
- .adjustForHiddenColumns(i));
+ iadj = av.getColumnSelection().adjustForHiddenColumns(i - 1);
+ if (refSeq == null)
+ {
+ string = String.valueOf(iadj);
+ }
+ else
+ {
+ refN = refSeq.findPosition(iadj);
+ // TODO show bounds if position is a gap
+ // - ie L--R -> "1L|2R" for
+ // marker
+ if (iadj < refStartI)
+ {
+ string = String.valueOf(iadj - refStartI);
+ }
+ else if (iadj > refEndI)
+ {
+ string = "+" + String.valueOf(iadj - refEndI);
+ }
+ else
+ {
+ string = String.valueOf(refN) + refSeq.getCharAt(iadj);
+ }
+ }
if ((i - startx - 1) * avCharWidth > maxX)
{
gg.drawString(string, (i - startx - 1) * avCharWidth, y);
for (int i = 0; i < av.getColumnSelection().getHiddenColumns()
.size(); i++)
{
-
res = av.getColumnSelection().findHiddenRegionPosition(i)
- startx;
- if (res < 0 || res > endx - scalestartx)
+ if (res < 0 || res > widthx)
{
continue;
}