package jalview.api;
import jalview.datamodel.SearchResultsI;
import jalview.datamodel.SequenceGroup;
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 selection
is not null, 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, SequenceGroup selection,
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
* selection
is not null, 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 selection
* @param caseSensitive
* @param searchDescription
* @return
*/
void findNext(String theSearchString, SequenceGroup selection,
boolean caseSensitive, boolean searchDescription);
/**
* Returns the (possibly empty) list of sequences matched on sequence name or
* description
*
* @return
*/
List getIdMatches();
/**
* Answers the search results (possibly empty) from the last search
*
* @return
*/
SearchResultsI getSearchResults();
}