*/
public void setStartRes(int res)
{
- int oldres = this.startRes;
- setStartResInternal(res);
- changeSupport.firePropertyChange("startres", oldres, res);
+ int width = getViewportWidth();
+ setStartEndRes(res, res + width - 1);
}
- private void setStartResInternal(int res)
+ public void setStartEndRes(int startres, int endres)
{
- if (res > al.getWidth() - 1)
+ int oldres = this.startRes;
+ if (startres > al.getWidth() - 1)
{
- res = al.getWidth() - 1;
+ startres = al.getWidth() - 1;
}
- else if (res < 0)
+ else if (startres < 0)
{
- res = 0;
+ startres = 0;
}
- this.startRes = res;
- }
+ this.startRes = startres;
+
+ if (endres >= al.getWidth())
+ {
+ endres = al.getWidth() - 1;
+ }
+ else if (endres < 0)
+ {
+ endres = 0;
+ }
+ this.endRes = endres;
- public void setStartEndRes(int startres, int endres)
- {
- int oldres = this.startRes;
- setStartResInternal(startres);
- setEndResInternal(endres);
changeSupport.firePropertyChange("startres", oldres, startres);
}
*/
public void setEndRes(int res)
{
- int oldres = this.endRes;
- setEndResInternal(res);
-
- changeSupport.firePropertyChange("endres", oldres, res);
- }
-
- private void setEndResInternal(int res)
- {
- if (res >= al.getWidth())
- {
- res = al.getWidth() - 1;
- }
- else if (res < 0)
- {
- res = 0;
- }
- this.endRes = res;
+ int width = getViewportWidth();
+ setStartEndRes(res - width + 1, res);
}
/**
*/
public void setStartSeq(int seq)
{
- int oldseq = this.startSeq;
- setStartSeqInternal(seq);
- changeSupport.firePropertyChange("startseq", oldseq, seq);
+ int height = getViewportHeight();
+ setStartEndSeq(seq, seq + height - 1);
}
- private void setStartSeqInternal(int seq)
+ public void setStartEndSeq(int startseq, int endseq)
{
- if (seq > al.getHeight() - 1)
+ int oldseq = this.startSeq;
+ if (startseq > al.getHeight() - 1)
{
- seq = al.getHeight() - 1;
+ startseq = al.getHeight() - 1;
}
- else if (seq < 0)
+ else if (startseq < 0)
{
- seq = 0;
+ startseq = 0;
}
- this.startSeq = seq;
- }
+ this.startSeq = startseq;
- public void setStartEndSeq(int startseq, int endseq)
- {
- int oldseq = this.startSeq;
- setStartSeqInternal(startseq);
- setEndSeqInternal(endseq);
+ if (endseq >= al.getHeight())
+ {
+ endseq = al.getHeight() - 1;
+ }
+ else if (endseq < 0)
+ {
+ endseq = 0;
+ }
+ this.endSeq = endseq;
changeSupport.firePropertyChange("startseq", oldseq, startseq);
}
*/
public void setEndSeq(int seq)
{
- int oldseq = this.endSeq;
- setEndSeqInternal(seq);
- changeSupport.firePropertyChange("endseq", oldseq, seq);
- }
-
- private void setEndSeqInternal(int seq)
- {
- if (seq >= al.getHeight())
- {
- seq = al.getHeight() - 1;
- }
- else if (seq < 0)
- {
- seq = 0;
- }
- this.endSeq = seq;
+ int height = getViewportHeight();
+ setStartEndSeq(seq - height + 1, seq);
}
/**
{
return endSeq;
}
+
+ /**
+ * Get width of viewport in residues
+ *
+ * @return width of viewport
+ */
+ public int getViewportWidth()
+ {
+ return (endRes - startRes + 1); // TODO get for wrapped alignments too
+ }
+
+ /**
+ * Get height of viewport in residues
+ *
+ * @return height of viewport
+ */
+ public int getViewportHeight()
+ {
+ return (endSeq - startSeq + 1);
+ }
+
+ // return value is true if the scroll is valid
+ public boolean scrollUp(boolean up)
+ {
+ if (up)
+ {
+ if (startSeq < 1)
+ {
+ return false;
+ }
+
+ setStartSeq(startSeq - 1);
+ }
+ else
+ {
+ if (endSeq >= al.getHeight() - 1)
+ {
+ return false;
+ }
+
+ setStartSeq(startSeq + 1);
+ }
+ return true;
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @param right
+ * DOCUMENT ME!
+ *
+ * @return DOCUMENT ME!
+ */
+ public boolean scrollRight(boolean right)
+ {
+ if (!right)
+ {
+ if (startRes < 1)
+ {
+ return false;
+ }
+
+ setStartRes(startRes - 1);
+ }
+ else
+ {
+ if (endRes > al.getWidth() - 1)
+ {
+ return false;
+ }
+
+ setStartRes(startRes + 1);
+ }
+
+ return true;
+ }
+
+ public void scrollToWrappedVisible(int res)
+ {
+ if (res < startRes || res > endRes)
+ {
+ setEndSeq(res / getViewportWidth());
+ }
+
+ }
+
}