1 package jalview.viewmodel;
3 import jalview.api.AlignmentColsCollectionI;
4 import jalview.api.AlignmentRowsCollectionI;
5 import jalview.datamodel.AlignmentI;
6 import jalview.datamodel.HiddenColumns;
7 import jalview.datamodel.HiddenSequences;
8 import jalview.datamodel.VisibleColsCollection;
9 import jalview.datamodel.VisibleRowsCollection;
11 public class OverviewDimensionsHideHidden extends OverviewDimensions
13 private ViewportRanges ranges;
15 public OverviewDimensionsHideHidden(ViewportRanges vpranges,
16 boolean showAnnotationPanel)
18 super(vpranges, showAnnotationPanel);
24 public void updateViewportFromMouse(int mousex, int mousey,
25 HiddenSequences hiddenSeqs, HiddenColumns hiddenCols)
29 int xAsRes = getLeftXFromCentreX(mousex, hiddenCols);
30 int yAsSeq = getTopYFromCentreY(mousey, hiddenSeqs);
43 // Convert x value to residue position
46 // need to determine where scrollCol should be, given x
47 // to do this also need to know width of viewport, and some hidden column
50 // convert x to residues - this is an absolute position
51 // int xAsRes = Math.round((float) x * alwidth / width);
53 // get viewport width in residues
54 int vpwidth = ranges.getViewportWidth();
56 if (xAsRes + vpwidth > alwidth)
58 // went past the end of the alignment, adjust backwards
60 // if last position was before the end of the alignment, need to update
61 if (ranges.getStartRes() < alwidth)
63 xAsRes = alwidth - vpwidth;
67 xAsRes = ranges.getStartRes();
73 // Convert y value to sequence position
76 // get viewport height in sequences
77 // add 1 because height includes both endSeq and startSeq
78 int vpheight = ranges.getViewportHeight();
80 if (yAsSeq + vpheight > alheight)
82 // went past the end of the alignment, adjust backwards
83 if (ranges.getEndSeq() < alheight)
85 yAsSeq = alheight - vpheight;
89 yAsSeq = ranges.getStartSeq();
94 ranges.setStartRes(xAsRes);
95 ranges.setStartSeq(yAsSeq);
100 public void setBoxPosition(HiddenSequences hiddenSeqs,
101 HiddenColumns hiddenCols)
103 setBoxPosition(ranges.getStartRes(), ranges.getStartSeq(),
104 ranges.getViewportWidth(), ranges.getViewportHeight());
108 public AlignmentColsCollectionI getColumns(AlignmentI al)
110 return new VisibleColsCollection(0,
111 ranges.getAbsoluteAlignmentWidth() - 1, al);
115 public AlignmentRowsCollectionI getRows(AlignmentI al)
117 return new VisibleRowsCollection(0,
118 ranges.getAbsoluteAlignmentHeight() - 1, al);
122 protected void resetAlignmentDims()
124 alwidth = ranges.getVisibleAlignmentWidth();
125 alheight = ranges.getVisibleAlignmentHeight();
129 protected int getLeftXFromCentreX(int mousex, HiddenColumns hidden)
131 int vpx = Math.round((float) mousex * alwidth / width);
132 return vpx - ranges.getViewportWidth() / 2;
136 protected int getTopYFromCentreY(int mousey, HiddenSequences hidden)
138 int vpy = Math.round((float) mousey * alheight / sequencesHeight);
139 return vpy - ranges.getViewportHeight() / 2;