// reset the viewport ranges when the alignment panel is resized
// in particular, this initialises the end residue value when Jalview
// is initialised
- int widthInRes = (getSeqPanel().seqCanvas.getWidth() / av
- .getCharWidth()) - 1;
- int currentStartRes = vpRanges.getStartRes();
+
+
if (av.getWrapAlignment())
{
- widthInRes = getSeqPanel().seqCanvas
+ int widthInRes = getSeqPanel().seqCanvas
.getWrappedCanvasWidth(getSeqPanel().seqCanvas.getWidth());
+ vpRanges.setStartEndRes(vpRanges.getStartRes(), widthInRes);
+ }
+ else
+ {
+ int widthInRes = (getSeqPanel().seqCanvas.getWidth() / av
+ .getCharWidth()) - 1;
+ int heightInSeq = (getSeqPanel().seqCanvas.getHeight() / av.getCharHeight()) - 1;
+
+ vpRanges.setStartEndRes(vpRanges.getStartRes(), widthInRes);
+ vpRanges.setStartEndSeq(vpRanges.getStartSeq(), heightInSeq);
}
- vpRanges.setStartEndRes(currentStartRes, widthInRes);
+
}
});
getIdPanel().getIdCanvas().setPreferredSize(d);
hscrollFillerPanel.setPreferredSize(d);
- if (overviewPanel != null)
- {
- overviewPanel.setBoxPosition();
- }
if (this.alignFrame.getSplitViewContainer() != null)
{
((SplitFrame) this.alignFrame.getSplitViewContainer()).adjustLayout();
}
else
{
- scrollToWrappedVisible(start);
+ vpRanges.scrollToWrappedVisible(start);
+ // scrollToWrappedVisible(start);
}
}
- if (redrawOverview && overviewPanel != null)
- {
- overviewPanel.setBoxPosition();
- }
+
paintAlignment(redrawOverview);
return true;
}
- void scrollToWrappedVisible(int res)
- {
- int cwidth = getSeqPanel().seqCanvas
- .getWrappedCanvasWidth(getSeqPanel().seqCanvas.getWidth());
- if (res < vpRanges.getStartRes()
- || res >= (vpRanges.getStartRes() + cwidth))
- {
- vscroll.setValue((res / cwidth));
- }
-
- }
-
/**
* DOCUMENT ME!
*
annotationSpaceFillerHolder.setVisible(true);
}
- idSpaceFillerPanel1.setVisible(!wrap);
-
- repaint();
- }
-
- // return value is true if the scroll is valid
- public boolean scrollUp(boolean up)
- {
- if (up)
+ if (wrap)
{
- if (vscroll.getValue() < 1)
- {
- return false;
- }
-
- fastPaint = false;
- vscroll.setValue(vscroll.getValue() - 1);
+ int widthInRes = getSeqPanel().seqCanvas
+ .getWrappedCanvasWidth(getSeqPanel().seqCanvas.getWidth());
+ vpRanges.setStartEndRes(vpRanges.getStartRes(), widthInRes);
}
else
{
- if ((vextent + vscroll.getValue()) >= av.getAlignment().getHeight())
- {
- return false;
- }
+ int widthInRes = (getSeqPanel().seqCanvas.getWidth() / av
+ .getCharWidth()) - 1;
+ int heightInSeq = (getSeqPanel().seqCanvas.getHeight() / av
+ .getCharHeight()) - 1;
- fastPaint = false;
- vscroll.setValue(vscroll.getValue() + 1);
+ vpRanges.setStartEndRes(vpRanges.getStartRes(), widthInRes);
+ vpRanges.setStartEndSeq(vpRanges.getStartSeq(), heightInSeq);
}
- fastPaint = true;
+ idSpaceFillerPanel1.setVisible(!wrap);
- return true;
+ repaint();
}
- /**
- * DOCUMENT ME!
- *
- * @param right
- * DOCUMENT ME!
- *
- * @return DOCUMENT ME!
- */
- public boolean scrollRight(boolean right)
- {
- if (!right)
- {
- if (hscroll.getValue() < 1)
- {
- return false;
- }
-
- fastPaint = false;
- hscroll.setValue(hscroll.getValue() - 1);
- }
- else
- {
- if ((hextent + hscroll.getValue()) >= av.getAlignment().getWidth())
- {
- return false;
- }
-
- fastPaint = false;
- hscroll.setValue(hscroll.getValue() + 1);
- }
-
- fastPaint = true;
-
- return true;
- }
/**
* Adjust row/column scrollers to show a visible position in the alignment.
public void adjustmentValueChanged(AdjustmentEvent evt)
{
int oldX = vpRanges.getStartRes();
+ int oldwidth = vpRanges.getViewportWidth();
int oldY = vpRanges.getStartSeq();
+ int oldheight = vpRanges.getViewportHeight();
if (av.getWrapAlignment())
{
// if we're scrolling to the position we're already at, stop
// this prevents infinite recursion of events when the scroll/viewport
// ranges values are the same
- if (offy * rowSize == oldX)
+ if ((offy * rowSize == oldX) && (oldwidth == rowSize))
{
return;
}
if (evt.getSource() == hscroll)
{
int x = hscroll.getValue();
+ int width = (getSeqPanel().seqCanvas.getWidth() / av.getCharWidth()) - 1;
// if we're scrolling to the position we're already at, stop
// this prevents infinite recursion of events when the scroll/viewport
// ranges values are the same
- if (x == oldX)
+ if ((x == oldX) && (width == oldwidth))
{
return;
}
- vpRanges.setStartEndRes(x,
- (x + (getSeqPanel().seqCanvas.getWidth() / av
- .getCharWidth())) - 1);
+ vpRanges.setStartEndRes(x, x + width);
}
else if (evt.getSource() == vscroll)
{
- int offy = vscroll.getValue();
+ int y = vscroll.getValue();
+ int height = (getSeqPanel().seqCanvas.getHeight() / av
+ .getCharHeight()) - 1;
// if we're scrolling to the position we're already at, stop
// this prevents infinite recursion of events when the scroll/viewport
// ranges values are the same
- if (offy == oldY)
+ if ((y == oldY) && (height == oldheight))
{
return;
}
- vpRanges.setStartEndSeq(
- offy,
- offy
- + (getSeqPanel().seqCanvas.getHeight() / av
- .getCharHeight()) - 1);
+ vpRanges.setStartEndSeq(y, y + height);
}
if (!fastPaint)
{