### Eclipse Workspace Patch 1.0 #P org.eclipse.jdt.ui Index: ui/org/eclipse/jdt/internal/ui/search/JavaSearchPage.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/search/JavaSearchPage.java,v retrieving revision 1.140 diff -u -r1.140 JavaSearchPage.java --- ui/org/eclipse/jdt/internal/ui/search/JavaSearchPage.java 13 Oct 2009 08:50:28 -0000 1.140 +++ ui/org/eclipse/jdt/internal/ui/search/JavaSearchPage.java 17 Mar 2010 14:37:18 -0000 @@ -71,7 +71,7 @@ import org.eclipse.jdt.internal.corext.util.Messages; import org.eclipse.jdt.ui.search.ElementQuerySpecification; -import org.eclipse.jdt.ui.search.PatternQuerySpecification; +import org.eclipse.jdt.ui.search.FfrPatternQuerySpecification; import org.eclipse.jdt.ui.search.QuerySpecification; import org.eclipse.jdt.internal.ui.IJavaHelpContextIds; @@ -87,6 +87,7 @@ public class JavaSearchPage extends DialogPage implements ISearchPage { private static class SearchPatternData { + private final int matchMode; private final int searchFor; private final int limitTo; private final String pattern; @@ -98,12 +99,17 @@ private IJavaElement javaElement; public SearchPatternData(int searchFor, int limitTo, int matchLocations, boolean isCaseSensitive, String pattern, IJavaElement element, int includeMask) { - this(searchFor, limitTo, matchLocations, pattern, isCaseSensitive, element, ISearchPageContainer.WORKSPACE_SCOPE, null, includeMask); + this(searchFor, limitTo, SearchPattern.R_EXACT_MATCH, matchLocations, pattern, isCaseSensitive, element, ISearchPageContainer.WORKSPACE_SCOPE, null, includeMask); } - public SearchPatternData(int searchFor, int limitTo, int matchLocations, String pattern, boolean isCaseSensitive, IJavaElement element, int scope, IWorkingSet[] workingSets, int includeMask) { + public SearchPatternData(int searchFor, int limitTo, int matchMode, int matchLocations, String pattern, boolean isCaseSensitive, IJavaElement element, int includeMask) { + this(searchFor, limitTo, matchMode, matchLocations, pattern, isCaseSensitive, element, ISearchPageContainer.WORKSPACE_SCOPE, null, includeMask); + } + + public SearchPatternData(int searchFor, int limitTo, int matchMode, int matchLocations, String pattern, boolean isCaseSensitive, IJavaElement element, int scope, IWorkingSet[] workingSets, int includeMask) { this.searchFor= searchFor; this.limitTo= limitTo; + this.matchMode = matchMode; this.matchLocations= matchLocations; this.pattern= pattern; this.isCaseSensitive= isCaseSensitive; @@ -130,6 +136,10 @@ return limitTo; } + public int getMatchMode() { + return this.matchMode; + } + public String getPattern() { return pattern; } @@ -159,6 +169,7 @@ settings.put("scope", scope); //$NON-NLS-1$ settings.put("pattern", pattern); //$NON-NLS-1$ settings.put("limitTo", limitTo); //$NON-NLS-1$ + settings.put("matchMode", this.matchMode); //$NON-NLS-1$ settings.put("matchLocations", matchLocations); //$NON-NLS-1$ settings.put("javaElement", javaElement != null ? javaElement.getHandleIdentifier() : ""); //$NON-NLS-1$ //$NON-NLS-2$ settings.put("isCaseSensitive", isCaseSensitive); //$NON-NLS-1$ @@ -204,7 +215,8 @@ int searchFor= settings.getInt("searchFor"); //$NON-NLS-1$ int scope= settings.getInt("scope"); //$NON-NLS-1$ int limitTo= settings.getInt("limitTo"); //$NON-NLS-1$ - + int matchMode= settings.getInt("matchMode"); //$NON-NLS-1$ + int matchLocations= 0; if (settings.get("matchLocations") != null) { //$NON-NLS-1$ matchLocations= settings.getInt("matchLocations"); //$NON-NLS-1$ @@ -221,7 +233,7 @@ includeMask= JavaSearchScopeFactory.ALL; } } - return new SearchPatternData(searchFor, limitTo, matchLocations, pattern, isCaseSensitive, elem, scope, workingSets, includeMask); + return new SearchPatternData(searchFor, limitTo, matchMode, matchLocations, pattern, isCaseSensitive, elem, scope, workingSets, includeMask); } catch (NumberFormatException e) { return null; } @@ -278,6 +290,8 @@ private int fMatchLocations; private Link fMatchLocationsLink; + private Button[] matchMode; + /** * */ @@ -341,7 +355,8 @@ SearchUtil.warnIfBinaryConstant(data.getJavaElement(), getShell()); querySpec= new ElementQuerySpecification(data.getJavaElement(), limitTo, scope, scopeDescription); } else { - querySpec= new PatternQuerySpecification(data.getPattern(), searchFor, data.isCaseSensitive(), limitTo, scope, scopeDescription); + FfrPatternQuerySpecification ffrQuerySpec= new FfrPatternQuerySpecification(data.getPattern(), searchFor, data.getMatchMode(), data.isCaseSensitive(), data.getLimitTo(), scope, scopeDescription); + querySpec = ffrQuerySpec; data.setJavaElement(null); } @@ -375,7 +390,28 @@ fillLimitToGroup(searchFor, limitTo); return limitTo; } - + + private int getMatchMode() { + int mode = SearchPattern.R_EXACT_MATCH; + for (int i= 1, l=this.matchMode.length; i