+package jalview.api;
+
+import jalview.datamodel.SearchResultsI;
+import jalview.datamodel.SequenceI;
+
+import java.util.List;
+
+/**
+ * An interface for searching for a pattern in an aligment
+ */
+public interface FinderI
+{
+
+ /**
+ * Performs a find for the given search string (interpreted as a regular
+ * expression). Search may optionally be case-sensitive, and may optionally
+ * including match in sequence description (sequence id is always searched).
+ * If the viewport has an active selection, then the find is restricted to the
+ * selection region. Sequences matched by id or description can be retrieved
+ * by getIdMatches(), and matched residue patterns by getSearchResults().
+ *
+ * @param theSearchString
+ * @param caseSensitive
+ * @param searchDescription
+ * @return
+ */
+ void findAll(String theSearchString, boolean caseSensitive,
+ boolean searchDescription);
+
+ /**
+ * Finds the next match for the given search string (interpreted as a regular
+ * expression), starting from the position after the last match found. Search
+ * may optionally be case-sensitive, and may optionally including match in
+ * sequence description (sequence id is always searched). If the viewport has
+ * an active selection, then the find is restricted to the selection region.
+ * Sequences matched by id or description can be retrieved by getIdMatches(),
+ * and matched residue patterns by getSearchResults().
+ *
+ * @param theSearchString
+ * @param caseSensitive
+ * @param searchDescription
+ * @return
+ */
+ void findNext(String theSearchString, boolean caseSensitive,
+ boolean searchDescription);
+
+ /**
+ * Returns the (possibly empty) list of sequences matched on sequence name or
+ * description
+ *
+ * @return
+ */
+ List<SequenceI> getIdMatches();
+
+ /**
+ * Answers the search results (possibly empty) from the last search
+ *
+ * @return
+ */
+ SearchResultsI getSearchResults();
+
+}
\ No newline at end of file