// coords,
// convert back to pixel coords
int vpx = Math.round((float) mousex * alwidth / width);
- int visXAsRes = hiddenCols.findColumnPosition(vpx);
+ // int visXAsRes = hiddenCols.findColumnPosition(vpx);
int vpy = Math.round((float) mousey * alheight / sequencesHeight);
- int visYAsRes = hiddenSeqs.findIndexWithoutHiddenSeqs(vpy);
+ // int visYAsRes = hiddenSeqs.findIndexWithoutHiddenSeqs(vpy);
- updateViewportFromTopLeft(visXAsRes + transX, visYAsRes + transY,
- hiddenSeqs,
- hiddenCols);
+ System.out.println("vpx: " + vpx);
+ // System.out.println("VisXAsRes: " + visXAsRes);
+ System.out.println("transX: " + transX);
+ // updateViewportFromTopLeft(vpx + transX, vpy + transY,
+ // hiddenSeqs,
+ // hiddenCols);
+
+ int xAsRes = vpx + transX;
+ int yAsSeq = vpy + transY;
+
+ resetAlignmentDims();
+
+ if (xAsRes < 0)
+ {
+ xAsRes = 0;
+ }
+
+ if (yAsSeq < 0)
+ {
+ yAsSeq = 0;
+ }
+
+ //
+ // Convert x value to residue position
+ //
+
+ // need to determine where scrollCol should be, given x
+ // to do this also need to know width of viewport, and some hidden column
+ // correction
+
+ // convert x to residues - this is an absolute position
+ // int xAsRes = Math.round((float) x * alwidth / width);
+
+ // get viewport width in residues
+ int vpwidth = ranges.getViewportWidth();
+
+ // get where x should be when accounting for hidden cols
+ // if x is in a hidden col region, shift to left - but we still need
+ // absolute position
+ // so convert back after getting visible region position
+ // int visXAsRes = hiddenCols.findColumnPosition(xAsRes);
+ int visXAsRes = xAsRes;
+
+ // check in case we went off the edge of the alignment
+ int visAlignWidth = hiddenCols.findColumnPosition(alwidth - 1);
+ /* if (visXAsRes + vpwidth - 1 > visAlignWidth)
+ {
+ // went past the end of the alignment, adjust backwards
+
+ // if last position was before the end of the alignment, need to update
+ if (ranges.getEndRes() < visAlignWidth)
+ {
+ visXAsRes = hiddenCols.findColumnPosition(hiddenCols
+ .subtractVisibleColumns(vpwidth - 1, alwidth - 1));
+ }
+ else
+ {
+ visXAsRes = ranges.getStartRes();
+ }
+ }*/
+
+ //
+ // Convert y value to sequence position
+ //
+
+ // convert y to residues
+ // int yAsSeq = Math.round((float) y * alheight / sequencesHeight);
+
+ // get viewport height in sequences
+ int vpheight = ranges.getViewportHeight();
+
+ // get where y should be when accounting for hidden rows
+ // if y is in a hidden row region, shift up - but we still need absolute
+ // position,
+ // so convert back after getting visible region position
+ yAsSeq = hiddenSeqs.adjustForHiddenSeqs(
+ hiddenSeqs.findIndexWithoutHiddenSeqs(yAsSeq));
+
+ // check in case we went off the edge of the alignment
+ int visAlignHeight = hiddenSeqs.findIndexWithoutHiddenSeqs(alheight);
+ int visYAsSeq = hiddenSeqs.findIndexWithoutHiddenSeqs(yAsSeq);
+ if (visYAsSeq + vpheight - 1 > visAlignHeight)
+ {
+ // went past the end of the alignment, adjust backwards
+ if (ranges.getEndSeq() < visAlignHeight)
+ {
+ visYAsSeq = hiddenSeqs.findIndexWithoutHiddenSeqs(
+ hiddenSeqs.subtractVisibleRows(vpheight - 1, alheight - 1));
+ }
+ else
+ {
+ visYAsSeq = ranges.getStartSeq();
+ }
+ }
+
+ // update viewport
+ ranges.setStartRes(visXAsRes);
+ ranges.setStartSeq(visYAsSeq);
}
@Override