blob: 810d56e1d6d18e171c1e822c8da8ae9a871c4d3a [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2006, 2013 Wind River Systems and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Markus Schorn - initial API and implementation
* Christian Walther (Indel AG) - Bug 399094: Add whole word option to file search
*******************************************************************************/
package org.eclipse.search.ui.text;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.resources.IResource;
import org.eclipse.ui.IWorkingSet;
import org.eclipse.search.internal.ui.SearchPlugin;
import org.eclipse.search.ui.ISearchQuery;
/**
* Abstract base class for text search query providers supplied via the <code>org.eclipse.search.textSearchQueryProvider</code>
* extension point. The plug-in preference <code>org.eclipse.search.textSearchQueryProvider<code> defines the preferred
* query provider. It is intended that only products choose a preferred query provider.
*
* @since 3.2
*/
public abstract class TextSearchQueryProvider {
/**
* Specified the input for a search query.
* <p>
* Clients may instantiate this class.
* </p>
*/
public static abstract class TextSearchInput {
/**
* Returns the search text to search for.
*
* @return the search text, depending on {@link #isRegExSearch()} the search text represents a regular expression
* or a pattern using '*' and '?' as wildcards. The empty search text signals a file name search.
*/
public abstract String getSearchText();
/**
* Returns whether the search is a case sensitive search or not.
*
* @return whether the pattern is to be used case sensitive or not.
*/
public abstract boolean isCaseSensitiveSearch();
/**
* Returns whether the search text denotes a regular expression or not.
*
* @return whether the pattern denotes a regular expression.
*/
public abstract boolean isRegExSearch();
/**
* Returns whether to require a word boundary at the beginning and end of the pattern,
* excluding matches that only match part of a word.
*
* This implementation returns <code>false</code>, subclasses can override.
*
* @return <code>true</code> if the pattern should match only whole words
* @since 3.9
*/
public boolean isWholeWordSearch() {
return false;
}
/**
* Returns the scope for the search
*
* @return the scope for the search
*/
public abstract FileTextSearchScope getScope();
}
/**
* Returns the preferred query provider. The preferred query provider is typically configured by the product
* and defined by the search plug-in preference 'org.eclipse.search.textSearchQueryProvider'.
* It is not intended that query providers change at runtime, but clients should always use this method to access
* the query provider.
*
* @return the preferred {@link TextSearchQueryProvider}.
*/
public static TextSearchQueryProvider getPreferred() {
return SearchPlugin.getDefault().getTextSearchQueryProviderRegistry().getPreferred();
}
/**
* Create a query for the input with the given information.
*
* @param textSearchInput the search input
* @return returns the created search query
* @throws CoreException a {@link CoreException} can be thrown when the query provider can not
* create a query for the given input.
*/
public abstract ISearchQuery createQuery(TextSearchInput textSearchInput) throws CoreException;
/**
* Create a query to search for the selected text in the workspace.
*
* @param selectedText the text to search for
* @return returns the created search query
* @throws CoreException a {@link CoreException} can be thrown when the query provider can not
* create a query for the given input.
*/
public abstract ISearchQuery createQuery(String selectedText) throws CoreException;
/**
* Create a query to search for the selected text in the given resources.
*
* @param selectedText the text to search for
* @param resources the resources to search in
* @return returns the created search query
* @throws CoreException a {@link CoreException} can be thrown when the query provider can not
* create a query for the given input.
*/
public abstract ISearchQuery createQuery(String selectedText, IResource[] resources) throws CoreException;
/**
* Create a query to search for the selected text in the given working sets.
*
* @param selectedText the text to search for
* @param ws the working sets to search in
* @return returns the created search query
* @throws CoreException a {@link CoreException} can be thrown when the query provider can not
* create a query for the given input.
*/
public abstract ISearchQuery createQuery(String selectedText, IWorkingSet[] ws) throws CoreException;
}