*/
int fromY = Math.min(firstDragY, evt.getY());
int toY = Math.max(firstDragY, evt.getY());
+ int fromX = Math.min(firstDragX, evt.getX());
+ int toX = Math.max(firstDragX, evt.getX());
+
int deltaY = toY - fromY;
+ int deltaX = toX - fromX;
int[] rowIndex = getRowIndexAndOffset(fromY,
av.getAlignment().getAlignmentAnnotation());
AlignmentAnnotation cma = av.getAlignment()
.getAlignmentAnnotation()[rowIndex[0]];
- int fromXp = Math.min(firstDragX, evt.getX());
- int toXp = Math.max(firstDragX, evt.getX());
- int lastX = getColumnForXPos(fromXp);
- int currentX = getColumnForXPos(toXp);
- ContactListI forLastX = av.getContactList(cma, lastX);
- ContactListI forCurrentX = av.getContactList(cma, currentX);
- if (forLastX != null && forCurrentX != null)
+ int lastX = getColumnForXPos(fromX);
+ int currentX = getColumnForXPos(toX);
+ int fromXc = Math.min(lastX, currentX);
+ int toXc = Math.max(lastX, currentX);
+ ContactListI forFromX = av.getContactList(cma, fromXc);
+ ContactListI forToX = av.getContactList(cma, toXc);
+
+ if (forFromX != null && forToX != null)
{
- ContactGeometry lastXcgeom = new ContactGeometry(forLastX,
+ ContactGeometry lastXcgeom = new ContactGeometry(forFromX,
cma.graphHeight);
- ContactGeometry.contactInterval lastXci = lastXcgeom.mapFor(
- rowIndex[1],
- rowIndex[1] + ((fromY == firstDragY) ? -deltaY : deltaY));
- ContactGeometry cXcgeom = new ContactGeometry(forCurrentX,
+ ContactGeometry.contactInterval lastXci = lastXcgeom
+ .mapFor(rowIndex[1], rowIndex[1] - deltaY);
+
+ ContactGeometry cXcgeom = new ContactGeometry(forToX,
cma.graphHeight);
ContactGeometry.contactInterval cXci = cXcgeom.mapFor(rowIndex[1],
- rowIndex[1] + deltaY);
+ rowIndex[1] - deltaY);
+
// mark rectangular region formed by drag
- System.err.println("Matrix Selection from last(" + lastXci.cStart
- + "," + lastXci.cEnd + ") to cur(" + cXci.cStart + ","
- + cXci.cEnd + ")");
+ System.err.println("Matrix Selection from last(" + fromXc + ",["
+ + lastXci.cStart + "," + lastXci.cEnd + "]) to cur(" + toXc
+ + ",[" + cXci.cStart + "," + cXci.cEnd + "])");
int fr, to;
fr = Math.min(lastXci.cStart, lastXci.cEnd);
to = Math.max(lastXci.cStart, lastXci.cEnd);
System.err.println("Marking " + fr + " to " + to);
for (int c = fr; c <= to; c++)
{
- av.getColumnSelection().addElement(c);
+ if (cma.sequenceRef != null)
+ {
+ int col = cma.sequenceRef.findIndex(c);
+ av.getColumnSelection().addElement(col);
+ }
+ else
+ {
+ av.getColumnSelection().addElement(c);
+ }
}
fr = Math.min(cXci.cStart, cXci.cEnd);
to = Math.max(cXci.cStart, cXci.cEnd);
System.err.println("Marking " + fr + " to " + to);
for (int c = fr; c <= to; c++)
{
- av.getColumnSelection().addElement(c);
+ if (cma.sequenceRef != null)
+ {
+ int col = cma.sequenceRef.findIndex(c);
+ av.getColumnSelection().addElement(col);
+ }
+ else
+ {
+ av.getColumnSelection().addElement(c);
+ }
}
fr = Math.min(lastX, currentX);
to = Math.max(lastX, currentX);
static int[] getRowIndexAndOffset(int yPos, AlignmentAnnotation[] aa)
{
int[] res = new int[2];
+ res[0] = -1;
+ res[1] = 0;
if (aa == null)
{
- res[0] = -1;
- res[1] = 0;
return res;
}
int row = -1;
int height = 0, lheight = 0;
-
for (int i = 0; i < aa.length; i++)
{
if (aa[i].visible)
if (clist != null)
{
ContactGeometry cgeom = new ContactGeometry(clist, ann.graphHeight);
- ContactGeometry.contactInterval ci = cgeom.mapFor(rowAndOffset,
- rowAndOffset);
+ ContactGeometry.contactInterval ci = cgeom.mapFor(rowAndOffset);
ContactRange cr = clist.getRangeFor(ci.cStart, ci.cEnd);
- tooltip = "Contact from " + ci.cStart + " to " + ci.cEnd
- + "<br/>Mean:" + cr.getMean();
-
- // ap.getStructureSelectionManager().mouseOverSequence(ann.sequenceRef,
- // new int[] {column, ci.cStart,ci.cEnd}, -1, null)
+ tooltip = "Contact from " + clist.getPosition() + ", [" + ci.cStart
+ + " - " + ci.cEnd + "]" + "<br/>Mean:" + cr.getMean();
+ int col = ann.sequenceRef.findPosition(column);
+ ap.getStructureSelectionManager()
+ .highlightPositionsOn(ann.sequenceRef, new int[][]
+ { new int[] { col, col },
+ new int[]
+ { ci.cStart, ci.cEnd } }, null);
}
}
return tooltip;