- // 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 (!findAll && resultSize == 0)
+ /**
+ * Displays an error dialog, and answers false, if the search string is
+ * invalid, else answers true.
+ *
+ * @param searchString
+ * @return
+ */
+ protected boolean isInvalidSearchString(String searchString)
+ {
+ String error = getSearchValidationError(searchString);
+ if (error == null)
+ {
+ return false;
+ }
+ JvOptionPane.showInternalMessageDialog(this, error,
+ MessageManager.getString("label.invalid_search"), // $NON-NLS-1$
+ JvOptionPane.ERROR_MESSAGE);
+ return true;
+ }
+
+ /**
+ * Returns an error message string if the search string is invalid, else
+ * returns null.
+ *
+ * Currently validation is limited to checking the string is not empty, and is
+ * a valid regular expression (simple searches for base sub-sequences will
+ * pass this test). Additional validations may be added in future if the
+ * search syntax is expanded.
+ *
+ * @param searchString
+ * @return
+ */
+ protected String getSearchValidationError(String searchString)
+ {
+ String error = null;
+ if (searchString == null || searchString.length() == 0)
+ {
+ error = MessageManager.getString("label.invalid_search");
+ }
+ try
+ {
+ Pattern.compile(searchString);
+ } catch (PatternSyntaxException e)