From eae01b09aadd51c1062c67fa66de5636f1854dd2 Mon Sep 17 00:00:00 2001 From: jprocter Date: Wed, 28 Apr 2010 14:03:51 +0000 Subject: [PATCH] find incrementally searches ID then subsequence matches. Dialog reports number of ID and subsequence matches correctly (bugfix) --- src/jalview/appletgui/Finder.java | 34 +++++++++++++++++++++++++--------- src/jalview/gui/Finder.java | 31 ++++++++++++++++++++----------- 2 files changed, 45 insertions(+), 20 deletions(-) diff --git a/src/jalview/appletgui/Finder.java b/src/jalview/appletgui/Finder.java index f9962a6..945e900 100755 --- a/src/jalview/appletgui/Finder.java +++ b/src/jalview/appletgui/Finder.java @@ -37,7 +37,7 @@ public class Finder extends Panel implements ActionListener int seqIndex = 0; - int resIndex = 0; + int resIndex = -1; public Finder(final AlignmentPanel ap) { @@ -80,7 +80,7 @@ public class Finder extends Panel implements ActionListener else if (evt.getSource() == findAll) { - resIndex = 0; + resIndex = -1; seqIndex = 0; doSearch(true); } @@ -134,34 +134,50 @@ public class Finder extends Panel implements ActionListener resIndex = finder.getResIndex(); searchResults = finder.getSearchResults(); Vector idMatch = finder.getIdMatch(); - - if (searchResults.getSize() == 0 && idMatch.size() > 0) + boolean haveResults=false; + // set or reset the GUI + if ((idMatch.size() > 0)) { + haveResults=true; ap.idPanel.highlightSearchResults(idMatch); + } else { + ap.idPanel.highlightSearchResults(null); } if (searchResults.getSize() > 0) { + haveResults=true; createNewGroup.setEnabled(true); } else { searchResults = null; - resIndex = 0; - seqIndex = 0; } // if allResults is null, this effectively switches displaySearch flag in // seqCanvas ap.highlightSearchResults(searchResults); - + // TODO: add enablers for 'SelectSequences' or 'SelectColumns' or + // 'SelectRegion' selection + if (!haveResults) + { + ap.alignFrame.statusBar.setText("Finished searching."); + resIndex = -1; + seqIndex = 0; + } if (findAll) { - String message = (searchResults == null ? 0 : searchResults.getSize()) - + " matches found."; + String message = (idMatch.size()>0) ? ""+idMatch.size()+" IDs" : ""; + if (idMatch.size()>0 && searchResults!=null && searchResults.getSize()>0) { + message += " and "; + } + if (searchResults!=null) { + message += searchResults.getSize() + " subsequence matches."; + } ap.alignFrame.statusBar.setText("Search results: " + searchString + " : " + message); + } } diff --git a/src/jalview/gui/Finder.java b/src/jalview/gui/Finder.java index 0896975..b3fad97 100755 --- a/src/jalview/gui/Finder.java +++ b/src/jalview/gui/Finder.java @@ -43,7 +43,7 @@ public class Finder extends GFinder int seqIndex = 0; - int resIndex = 0; + int resIndex = -1; SearchResults searchResults; @@ -91,7 +91,7 @@ public class Finder extends GFinder { if (getFocusedViewport()) { - resIndex = 0; + resIndex = -1; seqIndex = 0; doSearch(true); } @@ -148,10 +148,10 @@ public class Finder extends GFinder } /** - * DOCUMENT ME! + * incrementally search the alignment * * @param findAll - * DOCUMENT ME! + * true means find all results and raise a dialog box */ void doSearch(boolean findAll) { @@ -180,16 +180,19 @@ public class Finder extends GFinder searchResults = finder.getSearchResults(); // find(regex, // caseSensitive.isSelected(), ) Vector idMatch = finder.getIdMatch(); + boolean haveResults=false; // set or reset the GUI - if ((searchResults.getSize() == 0) && (idMatch.size() > 0)) + if ((idMatch.size() > 0)) { + haveResults=true; ap.idPanel.highlightSearchResults(idMatch); + } else { + ap.idPanel.highlightSearchResults(null); } - - int resultSize = searchResults.getSize(); - + if (searchResults.getSize() > 0) { + haveResults=true; createNewGroup.setEnabled(true); } else @@ -202,19 +205,25 @@ public class Finder extends GFinder ap.highlightSearchResults(searchResults); // TODO: add enablers for 'SelectSequences' or 'SelectColumns' or // 'SelectRegion' selection - if (!findAll && resultSize == 0) + if (!haveResults) { JOptionPane.showInternalMessageDialog(this, "Finished searching", null, JOptionPane.INFORMATION_MESSAGE); - resIndex = 0; + resIndex = -1; seqIndex = 0; } if (findAll) { - String message = resultSize + " matches found."; + String message = (idMatch.size()>0) ? ""+idMatch.size()+" IDs" : ""; + if (idMatch.size()>0 && searchResults.getSize()>0) { + message += " and "; + } + message += searchResults.getSize() + " subsequence matches found."; JOptionPane.showInternalMessageDialog(this, message, null, JOptionPane.INFORMATION_MESSAGE); + resIndex = -1; + seqIndex = 0; } } -- 1.7.10.2