public abstract class OverviewDimensions
{
protected static final int MAX_WIDTH = 400;
+
protected static final int MIN_WIDTH = 120;
+
protected static final int MIN_SEQ_HEIGHT = 40;
+
protected static final int MAX_SEQ_HEIGHT = 300;
private static final int DEFAULT_GRAPH_HEIGHT = 20;
protected int width;
+
protected int sequencesHeight;
+
protected int graphHeight = DEFAULT_GRAPH_HEIGHT;
+
protected int boxX = -1;
+
protected int boxY = -1;
+
protected int boxWidth = -1;
+
protected int boxHeight = -1;
- protected int scrollCol = -1;
- protected int scrollRow = -1;
+
protected int alwidth;
+
protected int alheight;
+ /**
+ * Create an OverviewDimensions object
+ *
+ * @param ranges
+ * positional properties of the viewport
+ * @param showAnnotationPanel
+ * true if the annotation panel is to be shown, false otherwise
+ */
public OverviewDimensions(ViewportRanges ranges,
boolean showAnnotationPanel)
{
g.drawRect(boxX + 1, boxY + 1, boxWidth - 2, boxHeight - 2);
}
- public int getScrollCol()
- {
- return scrollCol;
- }
-
- public int getScrollRow()
- {
- return scrollRow;
- }
-
public int getBoxX()
{
return boxX;
public float getPixelsPerCol()
{
+ resetAlignmentDims();
return (float) width / alwidth;
}
public float getPixelsPerSeq()
{
+ resetAlignmentDims();
return (float) sequencesHeight / alheight;
}
* the alignment's hidden sequences
* @param hiddenCols
* the alignment's hidden columns
- * @param ranges
- * the alignment's width and height ranges
*/
public abstract void updateViewportFromMouse(int mousex, int mousey,
- HiddenSequences hiddenSeqs, HiddenColumns hiddenCols,
- ViewportRanges ranges);
+ HiddenSequences hiddenSeqs, HiddenColumns hiddenCols);
/**
* Set the overview panel's box position to match the viewport
* the alignment's hidden sequences
* @param hiddenCols
* the alignment's hidden columns
- * @param ranges
- * the alignment's width and height ranges
*/
public abstract void setBoxPosition(HiddenSequences hiddenSeqs,
- HiddenColumns hiddenCols, ViewportRanges ranges);
+ HiddenColumns hiddenCols);
/**
* Get the collection of columns used by this overview dimensions object
*
- * @param ranges
- * the alignment's width and height ranges
* @param hiddenCols
* the alignment's hidden columns
* @return a column collection
*/
- public abstract AlignmentColsCollectionI getColumns(
- ViewportRanges ranges, HiddenColumns hiddenCols);
+ public abstract AlignmentColsCollectionI getColumns(AlignmentI al);
/**
* Get the collection of rows used by this overview dimensions object
*
- * @param ranges
- * the alignment's width and height ranges
* @param al
* the alignment
* @return a row collection
*/
- public abstract AlignmentRowsCollectionI getRows(
- ViewportRanges ranges, AlignmentI al);
+ public abstract AlignmentRowsCollectionI getRows(AlignmentI al);
+
+ /**
+ * Updates overview dimensions to account for current alignment dimensions
+ */
+ protected abstract void resetAlignmentDims();
+
+ protected void setBoxPosition(int startRes, int startSeq, int vpwidth,
+ int vpheight)
+ {
+ resetAlignmentDims();
+
+ // boxX, boxY is the x,y location equivalent to startRes, startSeq
+ int xPos = Math.min(startRes, alwidth - vpwidth + 1);
+ boxX = Math.round((float) xPos * width / alwidth);
+ boxY = Math.round((float) startSeq * sequencesHeight / alheight);
+
+ // boxWidth is the width in residues translated to pixels
+ boxWidth = Math.round((float) vpwidth * width / alwidth);
+
+ // boxHeight is the height in sequences translated to pixels
+ boxHeight = Math.round((float) vpheight * sequencesHeight / alheight);
+ }
}
\ No newline at end of file