/**
* Copyright (c) 2005-2013 by Appcelerator, Inc. All Rights Reserved.
* Licensed under the terms of the Eclipse Public License (EPL).
* Please see the license.txt included with this distribution for details.
* Any modifications to this file must keep this entire header intact.
*/
package com.python.pydev.refactoring.refactorer.search;
import java.util.regex.Pattern;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.search.ui.ISearchQuery;
import org.eclipse.search.ui.ISearchResult;
import org.eclipse.search.ui.text.FileTextSearchScope;
import org.python.pydev.shared_ui.search.ICustomSearchQuery;
import org.python.pydev.shared_ui.search.replace.PatternConstructor;
import com.python.pydev.refactoring.refactorer.search.copied.SearchResultUpdater;
public abstract class AbstractPythonSearchQuery implements ISearchQuery, ICustomSearchQuery {
public AbstractPythonSearchQuery(String searchText) {
this(searchText, false, true, true, null);
}
@Override
public boolean canRerun() {
return false;
}
@Override
public boolean canRunInBackground() {
return true;
}
@Override
public String getLabel() {
return "Python Search";
}
protected boolean isScopeAllFileTypes() {
return false;
}
public abstract String getResultLabel(int nMatches);
private final FileTextSearchScope fScope;
private final String fSearchText;
private final boolean fIsRegEx;
private final boolean fIsCaseSensitive;
private PythonFileSearchResult fResult;
private boolean fIsWholeWord;
public AbstractPythonSearchQuery(String searchText, boolean isRegEx, boolean isCaseSensitive, boolean isWholeWord,
FileTextSearchScope scope) {
fSearchText = searchText;
fIsRegEx = isRegEx;
fIsCaseSensitive = isCaseSensitive;
fIsWholeWord = isWholeWord;
fScope = scope;
}
public FileTextSearchScope getSearchScope() {
return fScope;
}
@Override
public abstract IStatus run(final IProgressMonitor monitor);
@Override
public String getSearchString() {
return fSearchText;
}
protected Pattern getSearchPattern() {
return PatternConstructor.createPattern(fSearchText, fIsRegEx, true, fIsCaseSensitive, fIsWholeWord);
}
@Override
public boolean isWholeWord() {
return fIsWholeWord;
}
public boolean isFileNameSearch() {
return fSearchText.length() == 0;
}
@Override
public boolean isRegexSearch() {
return fIsRegEx;
}
@Override
public boolean isCaseSensitive() {
return fIsCaseSensitive;
}
@Override
public ISearchResult getSearchResult() {
if (fResult == null) {
fResult = new PythonFileSearchResult(this);
new SearchResultUpdater(fResult);
}
return fResult;
}
}