From 1da5df9fa384c61bdeb70fed102974e53b0ecd7d Mon Sep 17 00:00:00 2001 From: jprocter Date: Fri, 21 Jan 2011 17:12:03 +0000 Subject: [PATCH] search result highlighting and scrolling and some patches for JAL-695 --- src/jalview/appletgui/AlignmentPanel.java | 39 ++++++++++++++++++++++------- 1 file changed, 30 insertions(+), 9 deletions(-) diff --git a/src/jalview/appletgui/AlignmentPanel.java b/src/jalview/appletgui/AlignmentPanel.java index 0519f47..2d2f4bb 100755 --- a/src/jalview/appletgui/AlignmentPanel.java +++ b/src/jalview/appletgui/AlignmentPanel.java @@ -230,16 +230,33 @@ public class AlignmentPanel extends Panel implements AdjustmentListener */ public void highlightSearchResults(SearchResults results) { + scrollToPosition(results); seqPanel.seqCanvas.highlightSearchResults(results); } /** * scroll the view to show the position of the highlighted region in results + * (if any) and redraw the overview + * + * @param results + * @return false if results were not found + */ + public boolean scrollToPosition(SearchResults results) + { + return scrollToPosition(results, true); + } + + /** + * scroll the view to show the position of the highlighted region in results * (if any) * * @param results + * @param redrawOverview + * - when set, the overview will be recalculated (takes longer) + * @return false if results were not found */ - public void scrollToPosition(SearchResults results) + public boolean scrollToPosition(SearchResults results, + boolean redrawOverview) { // do we need to scroll the panel? if (results != null && results.getSize() > 0) @@ -247,34 +264,34 @@ public class AlignmentPanel extends Panel implements AdjustmentListener int seqIndex = av.alignment.findIndex(results); if (seqIndex == -1) { - return; + return false; } SequenceI seq = av.alignment.getSequenceAt(seqIndex); int[] r = results.getResults(seq, seq.getStart(), seq.getEnd()); if (r == null) { - return; + return false; } int start = r[0]; int end = r[1]; if (start < 0) { - return; + return false; } if (end == seq.getEnd()) { - return; + return false; } if (av.hasHiddenColumns) { start = av.getColumnSelection().findColumnPosition(start); end = av.getColumnSelection().findColumnPosition(end); - if (start==end) + if (start == end) { if (!av.colSel.isVisible(r[0])) { // don't scroll - position isn't visible - return; + return false; } } } @@ -308,8 +325,12 @@ public class AlignmentPanel extends Panel implements AdjustmentListener scrollToWrappedVisible(start); } } - - repaint(); + if (redrawOverview && overviewPanel != null) + { + overviewPanel.setBoxPosition(); + } + paintAlignment(redrawOverview); + return true; } void scrollToWrappedVisible(int res) -- 1.7.10.2