X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fappletgui%2FAlignmentPanel.java;h=7e42d34450dd2ddfd81dbff270db5343813a009c;hb=79912985d2d21c7d456bbd2281ed84fdfe2e99e7;hp=c2bdaf0105391f3c74893a236fb5b94e4d0c078f;hpb=506d60f0e188723ddc91c26824b41ac7034df3fe;p=jalview.git diff --git a/src/jalview/appletgui/AlignmentPanel.java b/src/jalview/appletgui/AlignmentPanel.java index c2bdaf0..7e42d34 100755 --- a/src/jalview/appletgui/AlignmentPanel.java +++ b/src/jalview/appletgui/AlignmentPanel.java @@ -228,15 +228,38 @@ public class AlignmentPanel extends Panel implements AdjustmentListener public void highlightSearchResults(SearchResults results) { seqPanel.seqCanvas.highlightSearchResults(results); - + } + /** + * scroll the view to show the position of the highlighted + * region in results (if any) + * @param results + */ + public void scrollToPosition(SearchResults results) + { // do we need to scroll the panel? - if (results != null) + if (results != null && results.getSize()>0) { - SequenceI seq = results.getResultSequence(0); - int seqIndex = av.alignment.findIndex(seq); - int start = seq.findIndex(results.getResultStart(0)) - 1; - int end = seq.findIndex(results.getResultEnd(0)) - 1; - + int seqIndex = av.alignment.findIndex(results); + if (seqIndex==-1) + { + return; + } + SequenceI seq = av.alignment.getSequenceAt(seqIndex); + int [] r = results.getResults(seq, seq.getStart(), seq.getEnd()); + if (r==null) + { + return; + } + int start = r[0]; + int end = r[1]; + if (start<0) + { + return; + } + if (end==seq.getEnd()) + { + return; + } if (!av.wrapAlignment) { if ((av.getStartRes() > end)