1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-08-04 23:05:47 +02:00

Implemented the scopes for the PDOM search page.

This commit is contained in:
Doug Schaefer 2006-03-08 20:48:12 +00:00
parent 3aea4555f6
commit 1ee376bf92
2 changed files with 64 additions and 30 deletions

View file

@ -12,13 +12,17 @@
package org.eclipse.cdt.internal.ui.search; package org.eclipse.cdt.internal.ui.search;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Iterator;
import java.util.List; import java.util.List;
import org.eclipse.cdt.core.model.ICElement; import org.eclipse.cdt.core.model.ICElement;
import org.eclipse.cdt.internal.ui.ICHelpContextIds; import org.eclipse.cdt.internal.ui.ICHelpContextIds;
import org.eclipse.cdt.internal.ui.util.RowLayouter; import org.eclipse.cdt.internal.ui.util.RowLayouter;
import org.eclipse.cdt.ui.CUIPlugin; import org.eclipse.cdt.ui.CUIPlugin;
import org.eclipse.core.resources.IWorkspace; import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.IWorkspaceRoot;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.jface.action.IStatusLineManager; import org.eclipse.jface.action.IStatusLineManager;
import org.eclipse.jface.dialogs.Dialog; import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.dialogs.DialogPage; import org.eclipse.jface.dialogs.DialogPage;
@ -136,6 +140,15 @@ public class PDOMSearchPage extends DialogPage implements ISearchPage {
private IStatusLineManager fLineManager; private IStatusLineManager fLineManager;
private static IProject getProject(Object object) {
if (object instanceof IResource)
return ((IResource)object).getProject();
else if (object instanceof ICElement)
return ((ICElement)object).getCProject().getProject();
else
return null;
}
public boolean performAction() { public boolean performAction() {
fLineManager.setErrorMessage(null); fLineManager.setErrorMessage(null);
@ -162,40 +175,56 @@ public class PDOMSearchPage extends DialogPage implements ISearchPage {
// get the list of elements for the scope // get the list of elements for the scope
List elements = new ArrayList(); List elements = new ArrayList();
String scopeDescription = ""; //$NON-NLS-1$ String scopeDescription = ""; //$NON-NLS-1$
IWorkspace workspace = CUIPlugin.getWorkspace(); IWorkspaceRoot workspaceRoot = CUIPlugin.getWorkspace().getRoot();
switch( getContainer().getSelectedScope() ) { switch (getContainer().getSelectedScope()) {
case ISearchPageContainer.SELECTED_PROJECTS_SCOPE: case ISearchPageContainer.SELECTED_PROJECTS_SCOPE:
if( structuredSelection != null && structuredSelection.iterator().hasNext() ){ if (structuredSelection != null) {
scopeDescription = CSearchMessages.getString("ProjectScope"); //$NON-NLS-1$ scopeDescription = CSearchMessages.getString("ProjectScope"); //$NON-NLS-1$
for (Iterator i = structuredSelection.iterator(); i.hasNext();) {
IProject project = getProject(i.next());
if (project != null)
elements.add(project);
}
}
break;
case ISearchPageContainer.SELECTION_SCOPE:
if( structuredSelection != null) {
scopeDescription = CSearchMessages.getString("SelectionScope"); //$NON-NLS-1$
for (Iterator i = structuredSelection.iterator(); i.hasNext();) {
Object obj = i.next();
if (obj instanceof IResource)
elements.add(obj);
else if (obj instanceof ICElement)
elements.add(((ICElement)obj).getUnderlyingResource());
} }
break; break;
}
case ISearchPageContainer.SELECTION_SCOPE: break;
if( structuredSelection != null && structuredSelection.iterator().hasNext() ){ case ISearchPageContainer.WORKSPACE_SCOPE:
scopeDescription = CSearchMessages.getString("SelectionScope"); //$NON-NLS-1$ scopeDescription = CSearchMessages.getString("WorkspaceScope"); //$NON-NLS-1$
break; elements.add(workspaceRoot);
break;
case ISearchPageContainer.WORKING_SET_SCOPE:
IWorkingSet[] workingSets= getContainer().getSelectedWorkingSets();
scopeDescription = CSearchMessages.getFormattedString("WorkingSetScope", CSearchUtil.toString(workingSets)); //$NON-NLS-1$
for (int i = 0; i < workingSets.length; ++i) {
IAdaptable[] wsElements = workingSets[i].getElements();
for (int j = 0; j < wsElements.length; ++j) {
IProject project = getProject(wsElements[j]);
if (project != null)
elements.add(project);
} }
/* else fall through to workspace scope */ }
case ISearchPageContainer.WORKSPACE_SCOPE: break;
scopeDescription = CSearchMessages.getString("WorkspaceScope"); //$NON-NLS-1$
// fall through and use the workspace scope below
break;
case ISearchPageContainer.WORKING_SET_SCOPE:
IWorkingSet[] workingSets= getContainer().getSelectedWorkingSets();
// should not happen - just to be sure
if (workingSets == null || workingSets.length < 1)
return false;
scopeDescription = CSearchMessages.getFormattedString("WorkingSetScope", CSearchUtil.toString(workingSets)); //$NON-NLS-1$
CSearchUtil.updateLRUWorkingSets(getContainer().getSelectedWorkingSets());
} }
if (elements.isEmpty()) { if (elements.isEmpty()) {
// default to workspace scope // default to workspace scope
} }
ICElement[] scope = (ICElement[])elements.toArray(new ICElement[elements.size()]); IResource[] scope = (IResource[])elements.toArray(new IResource[elements.size()]);
PDOMSearchPatternQuery job = new PDOMSearchPatternQuery(scope, scopeDescription, pattern, searchFlags); PDOMSearchPatternQuery job = new PDOMSearchPatternQuery(scope, scopeDescription, pattern,
isCaseSensitive, searchFlags);
NewSearchUI.activateSearchResultView(); NewSearchUI.activateSearchResultView();
@ -471,6 +500,7 @@ public class PDOMSearchPage extends DialogPage implements ISearchPage {
default: default:
// Not sure, set to all // Not sure, set to all
searchFlags |= PDOMSearchPatternQuery.FIND_ALL_TYPES; searchFlags |= PDOMSearchPatternQuery.FIND_ALL_TYPES;
patternCombo.setText(""); //$NON-NLS-1$
} }
} }
} else if (selection instanceof ITextSelection) { } else if (selection instanceof ITextSelection) {
@ -492,7 +522,7 @@ public class PDOMSearchPage extends DialogPage implements ISearchPage {
searchForButtons[i].setSelection(true); searchForButtons[i].setSelection(true);
searchForButtons[i].setEnabled(false); searchForButtons[i].setEnabled(false);
} }
} }
} else { } else {
searchForButtons[searchAllButtonIndex].setSelection(false); searchForButtons[searchAllButtonIndex].setSelection(false);
for (int i = 0; i < searchForButtons.length; ++i) { for (int i = 0; i < searchForButtons.length; ++i) {

View file

@ -12,6 +12,7 @@
package org.eclipse.cdt.internal.ui.search; package org.eclipse.cdt.internal.ui.search;
import org.eclipse.cdt.core.model.ICElement; import org.eclipse.cdt.core.model.ICElement;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.OperationCanceledException; import org.eclipse.core.runtime.OperationCanceledException;
@ -40,16 +41,19 @@ public class PDOMSearchPatternQuery extends PDOMSearchQuery {
| FIND_UNION | FIND_METHOD | FIND_FIELD | FIND_ENUM | FIND_UNION | FIND_METHOD | FIND_FIELD | FIND_ENUM
| FIND_ENUMERATOR | FIND_NAMESPACE | FIND_TYPEDEF | FIND_MACRO; | FIND_ENUMERATOR | FIND_NAMESPACE | FIND_TYPEDEF | FIND_MACRO;
private ICElement[] scope; private IResource[] scope;
private String scopeDesc;
private String pattern; private String pattern;
public PDOMSearchPatternQuery( public PDOMSearchPatternQuery(
ICElement[] scope, IResource[] scope,
String scopeDesc, String scopeDesc,
String pattern, String pattern,
boolean isCaseSensitive,
int flags) { int flags) {
super(flags); super(flags);
this.scope = scope; this.scope = scope;
this.scopeDesc = scopeDesc;
this.pattern = pattern; this.pattern = pattern;
} }
@ -59,7 +63,7 @@ public class PDOMSearchPatternQuery extends PDOMSearchQuery {
} }
public String getLabel() { public String getLabel() {
return super.getLabel() + " " + pattern; return super.getLabel() + " " + pattern + " in " + scopeDesc;
} }
} }