find incrementally searches ID then subsequence matches. Dialog reports number of...
authorjprocter <Jim Procter>
Wed, 28 Apr 2010 14:03:51 +0000 (14:03 +0000)
committerjprocter <Jim Procter>
Wed, 28 Apr 2010 14:03:51 +0000 (14:03 +0000)
src/jalview/appletgui/Finder.java
src/jalview/gui/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);
+              
     }
 
   }
index 0896975..b3fad97 100755 (executable)
@@ -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;
     }
 
   }