X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fappletgui%2FAlignmentPanel.java;h=af7e9cde3ea9e0e512f2de7ab6178e5f93b4fd72;hb=d559b47886de6427219011e6e355320a0babd757;hp=813ab84753593307045e62171ed08c9fc542f080;hpb=37de9310bec3501cbc6381e0c3dcb282fcaad812;p=jalview.git diff --git a/src/jalview/appletgui/AlignmentPanel.java b/src/jalview/appletgui/AlignmentPanel.java index 813ab84..af7e9cd 100644 --- a/src/jalview/appletgui/AlignmentPanel.java +++ b/src/jalview/appletgui/AlignmentPanel.java @@ -25,7 +25,7 @@ import jalview.api.AlignViewportI; import jalview.api.AlignmentViewPanel; import jalview.bin.JalviewLite; import jalview.datamodel.AlignmentI; -import jalview.datamodel.SearchResults; +import jalview.datamodel.SearchResultsI; import jalview.datamodel.SequenceI; import jalview.structure.StructureSelectionManager; @@ -293,7 +293,7 @@ public class AlignmentPanel extends Panel implements AdjustmentListener, * Highlight the given results on the alignment. * */ - public void highlightSearchResults(SearchResults results) + public void highlightSearchResults(SearchResultsI results) { scrollToPosition(results); seqPanel.seqCanvas.highlightSearchResults(results); @@ -306,7 +306,7 @@ public class AlignmentPanel extends Panel implements AdjustmentListener, * @param results * @return false if results were not found */ - public boolean scrollToPosition(SearchResults results) + public boolean scrollToPosition(SearchResultsI results) { return scrollToPosition(results, true); } @@ -320,10 +320,10 @@ public class AlignmentPanel extends Panel implements AdjustmentListener, * - when set, the overview will be recalculated (takes longer) * @return false if results were not found */ - public boolean scrollToPosition(SearchResults results, + public boolean scrollToPosition(SearchResultsI results, boolean redrawOverview) { - return scrollToPosition(results, redrawOverview, false); + return scrollToPosition(results, 0, redrawOverview, false); } /** @@ -335,7 +335,8 @@ public class AlignmentPanel extends Panel implements AdjustmentListener, * - when set, the overview will be recalculated (takes longer) * @return false if results were not found */ - public boolean scrollToPosition(SearchResults results, + public boolean scrollToPosition(SearchResultsI results, + int verticalOffset, boolean redrawOverview, boolean centre) { // do we need to scroll the panel? @@ -347,6 +348,10 @@ public class AlignmentPanel extends Panel implements AdjustmentListener, { return false; } + /* + * allow for offset of target sequence (actually scroll to one above it) + */ + SequenceI seq = alignment.getSequenceAt(seqIndex); int[] r = results.getResults(seq, 0, alignment.getWidth()); if (r == null) @@ -391,6 +396,11 @@ public class AlignmentPanel extends Panel implements AdjustmentListener, { return false; } + + /* + * allow for offset of target sequence (actually scroll to one above it) + */ + seqIndex = Math.max(0, seqIndex - verticalOffset); return scrollTo(start, end, seqIndex, false, redrawOverview); } return true; @@ -419,6 +429,7 @@ public class AlignmentPanel extends Panel implements AdjustmentListener, { start = ostart; } + if (!av.getWrapAlignment()) { /* @@ -508,7 +519,7 @@ public class AlignmentPanel extends Panel implements AdjustmentListener, if (res <= av.getStartRes() || res >= (av.getStartRes() + cwidth)) { vscroll.setValue(res / cwidth); - av.startRes = vscroll.getValue() * cwidth; + av.setStartRes(vscroll.getValue() * cwidth); } } @@ -621,8 +632,8 @@ public class AlignmentPanel extends Panel implements AdjustmentListener, public void setWrapAlignment(boolean wrap) { - av.startSeq = 0; - av.startRes = 0; + av.setStartSeq(0); + av.setStartRes(0); scalePanelHolder.setVisible(!wrap); hscroll.setVisible(!wrap); @@ -821,8 +832,8 @@ public class AlignmentPanel extends Panel implements AdjustmentListener, overviewPanel.setBoxPosition(); } - int scrollX = av.startRes - oldX; - int scrollY = av.startSeq - oldY; + int scrollX = av.getStartRes() - oldX; + int scrollY = av.getStartSeq() - oldY; if (av.getWrapAlignment() || !fastPaint || av.MAC) { @@ -832,13 +843,13 @@ public class AlignmentPanel extends Panel implements AdjustmentListener, { // Make sure we're not trying to draw a panel // larger than the visible window - if (scrollX > av.endRes - av.startRes) + if (scrollX > av.getEndRes() - av.getStartRes()) { - scrollX = av.endRes - av.startRes; + scrollX = av.getEndRes() - av.getStartRes(); } - else if (scrollX < av.startRes - av.endRes) + else if (scrollX < av.getStartRes() - av.getEndRes()) { - scrollX = av.startRes - av.endRes; + scrollX = av.getStartRes() - av.getEndRes(); } idPanel.idCanvas.fastPaint(scrollY); @@ -902,14 +913,14 @@ public class AlignmentPanel extends Panel implements AdjustmentListener, * @param seqOffset * the number of visible sequences to show above the mapped region */ - protected void scrollToCentre(SearchResults sr, int seqOffset) + protected void scrollToCentre(SearchResultsI sr, int seqOffset) { /* * To avoid jumpy vertical scrolling (if some sequences are gapped or not * mapped), we can make the scroll-to location a sequence above the one * actually mapped. */ - SequenceI mappedTo = sr.getResultSequence(0); + SequenceI mappedTo = sr.getResults().get(0).getSequence(); List seqs = av.getAlignment().getSequences(); /* @@ -931,23 +942,21 @@ public class AlignmentPanel extends Panel implements AdjustmentListener, { return; // failsafe, shouldn't happen } - sequenceIndex = Math.max(0, sequenceIndex - seqOffset); - sr.getResults().get(0) - .setSequence(av.getAlignment().getSequenceAt(sequenceIndex)); /* * Scroll to position but centring the target residue. Also set a state flag * to prevent adjustmentValueChanged performing this recursively. */ setFollowingComplementScroll(true); - scrollToPosition(sr, true, true); + // this should be scrollToPosition(sr,verticalOffset, + scrollToPosition(sr, seqOffset, true, true); } private void sendViewPosition() { StructureSelectionManager.getStructureSelectionManager(av.applet) - .sendViewPosition(this, av.startRes, av.endRes, av.startSeq, - av.endSeq); + .sendViewPosition(this, av.getStartRes(), av.getEndRes(), + av.getStartSeq(), av.getEndSeq()); } /**