*/
public boolean scrollToWrappedVisible(int res)
{
+ int newStartRes = calcWrappedStartResidue(res);
+ if (newStartRes == startRes)
+ {
+ return false;
+ }
+ setStartRes(newStartRes);
+
+ return true;
+ }
+
+ /**
+ * Calculate wrapped start residue from visible start residue
+ *
+ * @param res
+ * absolute start residue
+ * @return left column of panel res will be located in
+ */
+ private int calcWrappedStartResidue(int res)
+ {
int oldStartRes = startRes;
int width = getViewportWidth();
- if (res >= oldStartRes && res < oldStartRes + width)
+ /*if (res >= oldStartRes && res < oldStartRes + width)
{
return false;
- }
+ }*/
boolean up = res < oldStartRes;
int widthsToScroll = Math.abs((res - oldStartRes) / width);
{
newStartRes = 0;
}
-
- setStartRes(newStartRes);
-
- return true;
+ return newStartRes;
}
/**
*/
public boolean setViewportLocation(int x, int y)
{
- // if (x,y) is already visible don't do anything
boolean changedLocation = false;
int vis_x = al.getHiddenColumns().findColumnPosition(x);
int vis_y = al.getHiddenSequences().findIndexWithoutHiddenSeqs(y);
+ // if (vis_x,vis_y) is already visible don't do anything
if (startRes > vis_x || vis_x > endRes
|| startSeq > vis_y && vis_y > endSeq)
{
+ int[] old = new int[] { startRes, startSeq };
+ int[] newresseq;
+ if (wrappedMode)
+ {
+ int newstartres = calcWrappedStartResidue(vis_x);
+ setStartRes(newstartres);
+ newresseq = new int[] { startRes, startSeq };
+ }
+ else
+ {
int width = getViewportWidth();
- int[] oldresvalues = updateStartEndRes(vis_x, vis_x + width - 1);
+ updateStartEndRes(vis_x, vis_x + width - 1);
int startseq = vis_y;
int height = getViewportHeight();
{
startseq = getVisibleAlignmentHeight() - height;
}
- int[] oldseqvalues = updateStartEndSeq(startseq,
+ updateStartEndSeq(startseq,
startseq + height - 1);
- int[] old = new int[] { oldresvalues[0], oldseqvalues[0] };
- int[] newresseq = new int[] { startRes, startSeq };
- changedLocation = true;
- changeSupport.firePropertyChange(MOVE_VIEWPORT, old, newresseq);
+ // int[] old = new int[] { oldresvalues[0], oldseqvalues[0] };
+ newresseq = new int[] { startRes, startSeq };
+ }
+ changedLocation = true;
+ changeSupport.firePropertyChange(MOVE_VIEWPORT, old, newresseq);
}
return changedLocation;
}