find incrementally searches ID then subsequence matches. Dialog reports number of...
[jalview.git] / src / jalview / appletgui / Finder.java
index f9962a6..945e900 100755 (executable)
@@ -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);
+              
     }
 
   }