1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-06-09 10:46:02 +02:00

- First go at adding selection search to CDT. You can now search for Declarations, References in Workspace, WorkingSets triggered from the CEditor, CView or COutline.

- Added Dependency NPE check + test
- Selection Parser change from John
- Cleaned up search properties file
This commit is contained in:
Bogdan Gheorghe 2004-02-25 23:24:04 +00:00
parent f070a52e93
commit 2e497d6a54
19 changed files with 886 additions and 96 deletions

View file

@ -1,3 +1,6 @@
2004-02-25 Bogdan Gheorghe
Added DependencyTests::testUpdateDependencyNPE
2004-02-25 John Camelon 2004-02-25 John Camelon
Updates for new ISourceElementRequestor interface updates. Updates for new ISourceElementRequestor interface updates.

View file

@ -33,7 +33,9 @@ import org.eclipse.cdt.internal.core.search.PathCollector;
import org.eclipse.cdt.internal.core.search.PatternSearchJob; import org.eclipse.cdt.internal.core.search.PatternSearchJob;
import org.eclipse.cdt.internal.core.search.indexing.IndexManager; import org.eclipse.cdt.internal.core.search.indexing.IndexManager;
import org.eclipse.cdt.internal.core.search.matching.CSearchPattern; import org.eclipse.cdt.internal.core.search.matching.CSearchPattern;
import org.eclipse.cdt.internal.core.search.processing.IJob;
import org.eclipse.cdt.internal.core.sourcedependency.DependencyQueryJob; import org.eclipse.cdt.internal.core.sourcedependency.DependencyQueryJob;
import org.eclipse.cdt.internal.core.sourcedependency.UpdateDependency;
import org.eclipse.cdt.testplugin.CProjectHelper; import org.eclipse.cdt.testplugin.CProjectHelper;
import org.eclipse.cdt.testplugin.CTestPlugin; import org.eclipse.cdt.testplugin.CTestPlugin;
import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IFile;
@ -72,6 +74,7 @@ import org.eclipse.core.runtime.Platform;
suite.addTest(new DependencyTests("testDepHeaderChangeReindex")); suite.addTest(new DependencyTests("testDepHeaderChangeReindex"));
suite.addTest(new DependencyTests("testDepSourceChangeTable")); suite.addTest(new DependencyTests("testDepSourceChangeTable"));
suite.addTest(new DependencyTests("testDepHeaderChangeTable")); suite.addTest(new DependencyTests("testDepHeaderChangeTable"));
suite.addTest(new DependencyTests("testUpdateDependancyNPE"));
return suite; return suite;
} }
/** /**
@ -536,6 +539,16 @@ import org.eclipse.core.runtime.Platform;
} }
public void testUpdateDependancyNPE() {
IResource nonExistantResource = ResourcesPlugin.getWorkspace().getRoot().getProject("non-existant-project-aha");
assertFalse(nonExistantResource.exists());
assertNull(nonExistantResource.getLocation());
IJob job = new UpdateDependency(nonExistantResource);
assertFalse(job.execute(new NullProgressMonitor()));
}
public void testDepHeaderChangeReindex() throws Exception{ public void testDepHeaderChangeReindex() throws Exception{
// Add a file to the project // Add a file to the project
@ -570,7 +583,7 @@ import org.eclipse.core.runtime.Platform;
private String[] convertToLocalPath(String[] model) { private String[] convertToLocalPath(String[] model) {
IPath defaultPath = Platform.getLocation(); IPath defaultPath = Platform.getInstanceLocation();
String[] tempLocalArray = new String[model.length]; String[] tempLocalArray = new String[model.length];
for (int i=0;i<model.length;i++){ for (int i=0;i<model.length;i++){
StringBuffer buffer = new StringBuffer(); StringBuffer buffer = new StringBuffer();

View file

@ -1,3 +1,7 @@
2004-02-25 Bogdan Gheorghe
- Check to see if the resource has a location before using it in
UpdateDependency
2003-11-10 Bogdan Gheorghe 2003-11-10 Bogdan Gheorghe
- Added a null resource check in UpdateDependency to fix up - Added a null resource check in UpdateDependency to fix up
a potential NPE in the test suite a potential NPE in the test suite

View file

@ -61,10 +61,13 @@ public class UpdateDependency implements IJob {
public boolean execute(IProgressMonitor progress) { public boolean execute(IProgressMonitor progress) {
if (resource == null) return false; if (resource == null) return false;
IPath location = resource.getLocation();
if (location == null) return false;
PathCollector pathCollector = new PathCollector(); PathCollector pathCollector = new PathCollector();
//SubProgressMonitor subMonitor = (progressMonitor == null ) ? null : new SubProgressMonitor( progressMonitor, 5 ); //SubProgressMonitor subMonitor = (progressMonitor == null ) ? null : new SubProgressMonitor( progressMonitor, 5 );
ICSearchScope scope = SearchEngine.createWorkspaceScope(); ICSearchScope scope = SearchEngine.createWorkspaceScope();
CSearchPattern pattern = CSearchPattern.createPattern(resource.getLocation().toOSString(),ICSearchConstants.INCLUDE, ICSearchConstants.REFERENCES,ICSearchConstants.EXACT_MATCH,true); CSearchPattern pattern = CSearchPattern.createPattern(location.toOSString(),ICSearchConstants.INCLUDE, ICSearchConstants.REFERENCES,ICSearchConstants.EXACT_MATCH,true);
IndexManager indexManager = CCorePlugin.getDefault().getCoreModel().getIndexManager(); IndexManager indexManager = CCorePlugin.getDefault().getCoreModel().getIndexManager();
indexManager.performConcurrentJob( indexManager.performConcurrentJob(
new PatternSearchJob( new PatternSearchJob(

View file

@ -1,3 +1,7 @@
2004-02-25 Bogdan Gheorghe
Added a check to make sure that the parser is in the top context before throwing
an EOF exception in SeletionParser.
2004-02-25 John Camelon 2004-02-25 John Camelon
Fixed Bug 43051 : Search: cannot specify relative search paths Fixed Bug 43051 : Search: cannot specify relative search paths
Fixed Bug 45140 : refactor IScanner to allow use of Readers of IResource Fixed Bug 45140 : refactor IScanner to allow use of Readers of IResource

View file

@ -37,10 +37,17 @@ public class SelectionParser extends ContextualParser {
protected void handleNewToken(IToken value) { protected void handleNewToken(IToken value) {
if( value != null && scanner.isOnTopContext() ) if( value != null && scanner.isOnTopContext() )
{ {
log.traceLog( "IToken provided w/offsets " + value.getOffset() + " & " + value.getEndOffset() );
if( value.getOffset() == offsetRange.getFloorOffset() ) if( value.getOffset() == offsetRange.getFloorOffset() )
{
log.traceLog( "Offset Floor Hit w/token \"" + value.getImage() + "\"");
firstTokenOfDuple = value; firstTokenOfDuple = value;
}
if( value.getEndOffset() == offsetRange.getCeilingOffset() ) if( value.getEndOffset() == offsetRange.getCeilingOffset() )
{
log.traceLog( "Offset Ceiling Hit w/token \"" + value.getImage() + "\"");
lastTokenOfDuple = value; lastTokenOfDuple = value;
}
} }
} }
@ -92,7 +99,7 @@ public class SelectionParser extends ContextualParser {
* @see org.eclipse.cdt.internal.core.parser.Parser#checkEndOfFile() * @see org.eclipse.cdt.internal.core.parser.Parser#checkEndOfFile()
*/ */
protected void checkEndOfFile() throws EndOfFileException { protected void checkEndOfFile() throws EndOfFileException {
if( lastToken != null && lastToken.getEndOffset() >= offsetRange.getCeilingOffset() ) if( scanner.isOnTopContext() && lastTokenOfDuple != null && lastTokenOfDuple.getEndOffset() >= offsetRange.getCeilingOffset() )
throw new EndOfFileException(); throw new EndOfFileException();
} }

View file

@ -1,3 +1,23 @@
2004-02-25 Bogdan Gheorghe
First go at Selection Search facility. Added Selection Search menus to
the CView, the CEditor and the COutlineView.
New:
* src/org/eclipse/cdt/internal/ui/search/actions/DeclarationsSearchGroup.java
* src/org/eclipse/cdt/internal/ui/search/actions/FindAction.java
* src/org/eclipse/cdt/internal/ui/search/actions/FindDeclarationsAction.java
* src/org/eclipse/cdt/internal/ui/search/actions/FindRefsAction.java
* src/org/eclipse/cdt/internal/ui/search/actions/FindRefsInWorkingSetAction.java
* src/org/eclipse/cdt/internal/ui/search/actions/ReferencesSearchGroup.java
* src/org/eclipse/cdt/internal/ui/search/actions/SelctionSearchGroup.java
* src/org/eclipse/cdt/internal/ui/search/actions/FindDeclarationsInWorkingSetAction.java
Modified:
* src/org/eclipse/cdt/internal/ui/cview/MainActionGroup.java
* src/org/eclipse/cdt/internal/ui/editor/CContentOutline.java
* src/org/eclipse/cdt/internal/ui/editor/CEditor.java
2004-02-25 John Camelon 2004-02-25 John Camelon
Updates for new ISourceElementRequestor interface updates. Updates for new ISourceElementRequestor interface updates.

View file

@ -17,6 +17,7 @@ import org.eclipse.cdt.internal.ui.editor.FileSearchAction;
import org.eclipse.cdt.internal.ui.editor.FileSearchActionInWorkingSet; import org.eclipse.cdt.internal.ui.editor.FileSearchActionInWorkingSet;
import org.eclipse.cdt.internal.ui.editor.OpenIncludeAction; import org.eclipse.cdt.internal.ui.editor.OpenIncludeAction;
import org.eclipse.cdt.internal.ui.editor.SearchDialogAction; import org.eclipse.cdt.internal.ui.editor.SearchDialogAction;
import org.eclipse.cdt.internal.ui.search.actions.SelectionSearchGroup;
import org.eclipse.cdt.ui.CUIPlugin; import org.eclipse.cdt.ui.CUIPlugin;
import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.IResource;
@ -79,6 +80,8 @@ public class MainActionGroup extends CViewActionGroup {
OpenProjectGroup openProjectGroup; OpenProjectGroup openProjectGroup;
WorkingSetFilterActionGroup workingSetGroup; WorkingSetFilterActionGroup workingSetGroup;
SelectionSearchGroup selectionSearchGroup;
public MainActionGroup(CView cview) { public MainActionGroup(CView cview) {
super(cview); super(cview);
} }
@ -153,6 +156,10 @@ public class MainActionGroup extends CViewActionGroup {
fFileSearchAction = new FileSearchAction(viewer); fFileSearchAction = new FileSearchAction(viewer);
fFileSearchActionInWorkingSet = new FileSearchActionInWorkingSet(viewer); fFileSearchActionInWorkingSet = new FileSearchActionInWorkingSet(viewer);
fSearchDialogAction = new SearchDialogAction(viewer, getCView().getViewSite().getWorkbenchWindow()); fSearchDialogAction = new SearchDialogAction(viewer, getCView().getViewSite().getWorkbenchWindow());
selectionSearchGroup = new SelectionSearchGroup(getCView().getSite());
} }
/** /**
@ -167,6 +174,8 @@ public class MainActionGroup extends CViewActionGroup {
new NewWizardMenu(menu, getCView().getSite().getWorkbenchWindow(), false); new NewWizardMenu(menu, getCView().getSite().getWorkbenchWindow(), false);
menu.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS)); menu.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
menu.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS + "-end")); //$NON-NLS-1$ menu.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS + "-end")); //$NON-NLS-1$
menu.add(new Separator());
addSelectionSearchMenu(menu, resources);
return; return;
} }
@ -193,7 +202,6 @@ public class MainActionGroup extends CViewActionGroup {
menu.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS + "-end")); //$NON-NLS-1$ menu.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS + "-end")); //$NON-NLS-1$
addPropertyMenu(menu, resources); addPropertyMenu(menu, resources);
} }
/** /**
* Extends the superclass implementation to set the context in the * Extends the superclass implementation to set the context in the
* subgroups. * subgroups.
@ -257,6 +265,14 @@ public class MainActionGroup extends CViewActionGroup {
menu.add(search); menu.add(search);
} }
/**
* @param menu
*/
void addSelectionSearchMenu(IMenuManager menu, IStructuredSelection selection) {
selectionSearchGroup.fillContextMenu(menu);
}
public void runDefaultAction(IStructuredSelection selection) { public void runDefaultAction(IStructuredSelection selection) {
openFileGroup.runDefaultAction(selection); openFileGroup.runDefaultAction(selection);
openProjectGroup.runDefaultAction(selection); openProjectGroup.runDefaultAction(selection);

View file

@ -47,6 +47,8 @@ import org.eclipse.ui.part.IPageSite;
import org.eclipse.ui.part.Page; import org.eclipse.ui.part.Page;
import org.eclipse.ui.texteditor.IDocumentProvider; import org.eclipse.ui.texteditor.IDocumentProvider;
import org.eclipse.ui.views.contentoutline.IContentOutlinePage; import org.eclipse.ui.views.contentoutline.IContentOutlinePage;
import org.eclipse.ui.actions.ActionGroup;
import org.eclipse.cdt.internal.ui.search.actions.SelectionSearchGroup;
public class CContentOutlinePage extends Page implements IContentOutlinePage, ISelectionChangedListener { public class CContentOutlinePage extends Page implements IContentOutlinePage, ISelectionChangedListener {
private CEditor fEditor; private CEditor fEditor;
@ -64,6 +66,8 @@ public class CContentOutlinePage extends Page implements IContentOutlinePage, IS
private MemberFilterActionGroup fMemberFilterActionGroup; private MemberFilterActionGroup fMemberFilterActionGroup;
private ActionGroup fSelectionSearchGroup;
public CContentOutlinePage(CEditor editor) { public CContentOutlinePage(CEditor editor) {
this("#TranslationUnitOutlinerContext", editor); this("#TranslationUnitOutlinerContext", editor);
} }
@ -153,6 +157,8 @@ public class CContentOutlinePage extends Page implements IContentOutlinePage, IS
} }
menu.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS)); menu.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
menu.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS+"-end"));//$NON-NLS-1$ menu.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS+"-end"));//$NON-NLS-1$
fSelectionSearchGroup.fillContextMenu(menu);
} }
/** /**
@ -181,6 +187,8 @@ public class CContentOutlinePage extends Page implements IContentOutlinePage, IS
Menu menu= manager.createContextMenu(control); Menu menu= manager.createContextMenu(control);
control.setMenu(menu); control.setMenu(menu);
fSelectionSearchGroup = new SelectionSearchGroup(this);
// register global actions // register global actions
IPageSite site= getSite(); IPageSite site= getSite();
site.registerContextMenu(fContextMenuId, manager, treeViewer); site.registerContextMenu(fContextMenuId, manager, treeViewer);

View file

@ -20,6 +20,7 @@ import org.eclipse.cdt.core.model.ITranslationUnit;
import org.eclipse.cdt.core.model.IWorkingCopy; import org.eclipse.cdt.core.model.IWorkingCopy;
import org.eclipse.cdt.internal.ui.IContextMenuConstants; import org.eclipse.cdt.internal.ui.IContextMenuConstants;
import org.eclipse.cdt.internal.ui.editor.asm.AsmTextTools; import org.eclipse.cdt.internal.ui.editor.asm.AsmTextTools;
import org.eclipse.cdt.internal.ui.search.actions.SelectionSearchGroup;
import org.eclipse.cdt.internal.ui.text.CPairMatcher; import org.eclipse.cdt.internal.ui.text.CPairMatcher;
import org.eclipse.cdt.internal.ui.text.CSourceViewerConfiguration; import org.eclipse.cdt.internal.ui.text.CSourceViewerConfiguration;
import org.eclipse.cdt.internal.ui.text.CTextTools; import org.eclipse.cdt.internal.ui.text.CTextTools;
@ -75,12 +76,14 @@ import org.eclipse.ui.IStorageEditorInput;
import org.eclipse.ui.IViewPart; import org.eclipse.ui.IViewPart;
import org.eclipse.ui.IWorkbenchPage; import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.actions.ActionGroup;
import org.eclipse.ui.editors.text.TextEditor; import org.eclipse.ui.editors.text.TextEditor;
import org.eclipse.ui.editors.text.TextEditorPreferenceConstants; import org.eclipse.ui.editors.text.TextEditorPreferenceConstants;
import org.eclipse.ui.editors.text.TextFileDocumentProvider; import org.eclipse.ui.editors.text.TextFileDocumentProvider;
import org.eclipse.ui.part.EditorActionBarContributor; import org.eclipse.ui.part.EditorActionBarContributor;
import org.eclipse.ui.part.IShowInSource; import org.eclipse.ui.part.IShowInSource;
import org.eclipse.ui.part.ShowInContext; import org.eclipse.ui.part.ShowInContext;
import org.eclipse.ui.texteditor.AbstractTextEditor;
import org.eclipse.ui.texteditor.AnnotationPreference; import org.eclipse.ui.texteditor.AnnotationPreference;
import org.eclipse.ui.texteditor.ContentAssistAction; import org.eclipse.ui.texteditor.ContentAssistAction;
import org.eclipse.ui.texteditor.DefaultMarkerAnnotationAccess; import org.eclipse.ui.texteditor.DefaultMarkerAnnotationAccess;
@ -105,12 +108,16 @@ public class CEditor extends TextEditor implements ISelectionChangedListener, IS
/** The outline page */ /** The outline page */
protected CContentOutlinePage fOutlinePage; protected CContentOutlinePage fOutlinePage;
/** Search actions **/
private FileSearchAction fFileSearchAction; private FileSearchAction fFileSearchAction;
private FileSearchActionInWorkingSet fFileSearchActionInWorkingSet; private FileSearchActionInWorkingSet fFileSearchActionInWorkingSet;
private SearchDialogAction fSearchDialogAction; private SearchDialogAction fSearchDialogAction;
private ActionGroup fSelectionSearchGroup;
protected ISelectionChangedListener fStatusLineClearer; protected ISelectionChangedListener fStatusLineClearer;
/** The property change listener */ /** The property change listener */
@ -466,6 +473,10 @@ public class CEditor extends TextEditor implements ISelectionChangedListener, IS
action.setActionDefinitionId(ICEditorActionDefinitionIds.OPEN_CVIEW); action.setActionDefinitionId(ICEditorActionDefinitionIds.OPEN_CVIEW);
setAction("ShowInCView", action); //$NON-NLS-1$ setAction("ShowInCView", action); //$NON-NLS-1$
//Selection Search group
fSelectionSearchGroup = new SelectionSearchGroup(this);
//Search items
fFileSearchAction = new FileSearchAction(getSelectionProvider()); fFileSearchAction = new FileSearchAction(getSelectionProvider());
fFileSearchActionInWorkingSet = new FileSearchActionInWorkingSet(getSelectionProvider()); fFileSearchActionInWorkingSet = new FileSearchActionInWorkingSet(getSelectionProvider());
@ -505,6 +516,9 @@ public class CEditor extends TextEditor implements ISelectionChangedListener, IS
addAction(menu, IContextMenuConstants.GROUP_GENERATE, "AddIncludeOnSelection"); //$NON-NLS-1$ addAction(menu, IContextMenuConstants.GROUP_GENERATE, "AddIncludeOnSelection"); //$NON-NLS-1$
addAction(menu, IContextMenuConstants.GROUP_GENERATE, "OpenDeclarations"); //$NON-NLS-1$ addAction(menu, IContextMenuConstants.GROUP_GENERATE, "OpenDeclarations"); //$NON-NLS-1$
addAction(menu, IContextMenuConstants.GROUP_GENERATE, "ShowInCView"); //$NON-NLS-1$ addAction(menu, IContextMenuConstants.GROUP_GENERATE, "ShowInCView"); //$NON-NLS-1$
fSelectionSearchGroup.fillContextMenu(menu);
} }
public void setOutlinePageInput(CContentOutlinePage page, IEditorInput input) { public void setOutlinePageInput(CContentOutlinePage page, IEditorInput input) {

View file

@ -9,36 +9,14 @@
# IBM Corporation - initial API and implementation # IBM Corporation - initial API and implementation
############################################################################### ###############################################################################
group.search=S&earch group.search=Selection S&earch
group.declarations= Dec&larations group.declarations= Dec&larations
group.references= Re&ferences group.references= Re&ferences
group.readReferences= &Read Access
group.writeReferences= &Write Access
group.implementors= &Implementors
Search.Error.search.title=Search Error Search.Error.search.title=Search Error
Search.Error.search.message=An error occurred during the search operation Search.Error.search.message=An error occurred during the search operation
Search.Error.javaElementAccess.title=Search Error
Search.Error.javaElementAccess.message=An error occurred while accessing a Java element
Search.Error.markerAttributeAccess.title=Search Error
Search.Error.markerAttributeAccess.message=An error occurred while accessing a marker attribute
Search.Error.createJavaElement.title=Search Error
Search.Error.createJavaElement.message=An error occurred while creating a Java element
Search.Error.openEditor.title=Search Error
Search.Error.openEditor.message=Could not open the editor
Search.Error.codeResolve= Code resolve error
Search.Error.setDescription.title=Search Error
Search.Error.setDescription.message=Cannot save workspace description
SearchElementSelectionDialog.title=Search
SearchElementSelectionDialog.message=Select the element to search for.
CSearchResultCollector.match= 1 match CSearchResultCollector.match= 1 match
CSearchResultCollector.matches= {0} matches CSearchResultCollector.matches= {0} matches
CSearchResultCollector.done= Search done: {0}. CSearchResultCollector.done= Search done: {0}.
@ -74,60 +52,17 @@ CSearchPage.expression.caseSensitive= Case sens&itive
# Concatenate two working set names e.g. "Source, Lib" # Concatenate two working set names e.g. "Source, Lib"
SearchUtil.workingSetConcatenation= {0}, {1} SearchUtil.workingSetConcatenation= {0}, {1}
Search.FindDeclarationAction.label= &Workspace CSearch.FindDeclarationAction.label= &Workspace
Search.FindDeclarationAction.tooltip= Search for Declarations of the Selected Element in the Workspace CSearch.FindDeclarationAction.tooltip= Search for Declarations of the Selected Element in the Workspace
Search.FindDeclarationsInWorkingSetAction.label= Working &Set... CSearch.FindDeclarationsInWorkingSetAction.label= Working &Set...
Search.FindDeclarationsInWorkingSetAction.tooltip= Search for Declarations of the Selected Element in a Working Set CSearch.FindDeclarationsInWorkingSetAction.tooltip= Search for Declarations of the Selected Element in a Working Set
Search.FindHierarchyDeclarationsAction.label= &Hierarchy CSearch.FindReferencesAction.label= &Workspace
Search.FindHierarchyDeclarationsAction.tooltip= Search for Declarations of the Selected Element in its Hierarchy CSearch.FindReferencesAction.tooltip= Search for References to the Selected Element in the Workspace
Search.FindImplementorsAction.label= &Workspace CSearch.FindReferencesInWorkingSetAction.label= Working &Set...
Search.FindImplementorsAction.tooltip= Search for Implementors of the Selected Interface CSearch.FindReferencesInWorkingSetAction.tooltip= Search for References to the Selected Element in a Working Set
Search.FindImplementorsInWorkingSetAction.label= Working &Set...
Search.FindImplementorsInWorkingSetAction.tooltip= Search for Implementors of the Selected Interface in a Working Set
Search.FindReferencesAction.label= &Workspace
Search.FindReferencesAction.tooltip= Search for References to the Selected Element in the Workspace
Search.FindReferencesAction.BinPrimConstWarnDialog.title= Search for References to a Binary Constant
Search.FindReferencesAction.BinPrimConstWarnDialog.message= Matches to this constant will only be discovered in source files and binary files where the constant value is not inlined.
Search.FindReferencesInWorkingSetAction.label= Working &Set...
Search.FindReferencesInWorkingSetAction.tooltip= Search for References to the Selected Element in a Working Set
Search.FindHierarchyReferencesAction.label= &Hierarchy
Search.FindHierarchyReferencesAction.tooltip= Search for References of the Selected Element in its Hierarchy
Search.FindReadReferencesAction.label= &Workspace
Search.FindReadReferencesAction.tooltip= Search for Read References to the Selected Element in the Workspace
Search.FindReadReferencesInWorkingSetAction.label= Working &Set...
Search.FindReadReferencesInWorkingSetAction.tooltip= Search for Read References to the Selected Element in a Working Set
Search.FindReadReferencesInHierarchyAction.label= &Hierarchy
Search.FindReadReferencesInHierarchyAction.tooltip= Search for Read References of the Selected Element in its Hierarchy
Search.FindWriteReferencesAction.label= &Workspace
Search.FindWriteReferencesAction.tooltip= Search for Write References to the Selected Element in the Workspace
Search.FindWriteReferencesInWorkingSetAction.label= Working &Set...
Search.FindWriteReferencesInWorkingSetAction.tooltip= Search for Write References to the Selected Element in a Working Set
Search.FindWriteReferencesInHierarchyAction.label= &Hierarchy
Search.FindWriteReferencesInHierarchyAction.tooltip= Search for Write References of the Selected Element in its Hierarchy
Search.FindOccurrencesInFile.label= Occurre&nces in File
Search.FindOccurrencesInFile.tooltip= Find occurrences of selected element in the editor
FindOccurrencesEngine.noSource.text= No source available. To perform this operation you need to attach source.
FindOccurrencesEngine.noJavaElement.text= Cannot search for the current selection. Please select a valid Java element name.
FindOccurrencesEngine.cannotParse.text= Cannot analyze the compilation unit or class file.
JavaSearchOperation.default_package=(default package)
# The first argument will be replaced by the pattern and the second by the scope # The first argument will be replaced by the pattern and the second by the scope
CSearchOperation.singularDeclarationsPostfix={0} - 1 Declaration in {1} CSearchOperation.singularDeclarationsPostfix={0} - 1 Declaration in {1}
@ -145,23 +80,12 @@ CSearchOperation.pluralWriteReferencesPostfix={0} - {1} Write References in {2}
CSearchOperation.pluralImplementorsPostfix={0} - {1} Implementors in {2} CSearchOperation.pluralImplementorsPostfix={0} - {1} Implementors in {2}
CSearchOperation.pluralOccurrencesPostfix={0} - {1} Occurrences in {2} CSearchOperation.pluralOccurrencesPostfix={0} - {1} Occurrences in {2}
# The first argument will be replaced by the element name and the second one by the file name
JavaSearchInFile.singularPostfix={0} - 1 Occurrence in {1}
# The first argument will be replaced by the element name, the second by the count and the last by the file name
JavaSearchInFile.pluralPostfix={0} - {1} Occurrences in {2}
JavaElementAction.typeSelectionDialog.title=Search
JavaElementAction.typeSelectionDialog.message=&Select the type to search:
JavaElementAction.error.open.message=An exception occurred while opening the type.
JavaElementAction.operationUnavailable.title= Operation Unavailable
JavaElementAction.operationUnavailable.generic= The operation is unavailable on the current selection. Please select a valid Java element name.
JavaElementAction.operationUnavailable.field= The operation is unavailable on the current selection. Please select the name of a field.
JavaElementAction.operationUnavailable.interface= The operation is unavailable on the current selection. Please select the name of an interface.
CSearchResultLabelProvider.potentialMatch= \ (inexact) CSearchResultLabelProvider.potentialMatch= \ (inexact)
CSearchOperation.operationUnavailable.title= Operation Unavailable
CSearchOperation.operationUnavailable.message= The operation is unavailable on the current selection.
WorkspaceScope= Workspace WorkspaceScope= Workspace
WorkingSetScope= Working Set - {0} WorkingSetScope= Working Set - {0}
SelectionScope= Selection SelectionScope= Selection

View file

@ -0,0 +1,54 @@
/*******************************************************************************
* Copyright (c) 2004 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Common Public License v0.5
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/cpl-v05.html
*
* Contributors:
* IBM Corp. - Rational Software - initial implementation
******************************************************************************/
package org.eclipse.cdt.internal.ui.search.actions;
import org.eclipse.cdt.internal.ui.editor.CEditor;
import org.eclipse.cdt.internal.ui.search.CSearchMessages;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.MenuManager;
import org.eclipse.search.ui.IContextMenuConstants;
import org.eclipse.ui.IWorkbenchSite;
import org.eclipse.ui.actions.ActionGroup;
public class DeclarationsSearchGroup extends ActionGroup {
private FindDeclarationsAction fFindDeclarationsAction;
private FindDeclarationsInWorkingSetAction fFindDeclarationsInWorkingSetAction;
public DeclarationsSearchGroup(IWorkbenchSite site) {
fFindDeclarationsAction= new FindDeclarationsAction(site);
fFindDeclarationsInWorkingSetAction = new FindDeclarationsInWorkingSetAction(site);
}
/**
* @param editor
*/
public DeclarationsSearchGroup(CEditor editor) {
fFindDeclarationsAction= new FindDeclarationsAction(editor);
fFindDeclarationsInWorkingSetAction = new FindDeclarationsInWorkingSetAction(editor);
}
/*
* Method declared on ActionGroup.
*/
public void fillContextMenu(IMenuManager menu) {
super.fillContextMenu(menu);
IMenuManager incomingMenu = menu;
IMenuManager declarationsMenu = new MenuManager(CSearchMessages.getString("group.declarations"), IContextMenuConstants.GROUP_SEARCH); //$NON-NLS-1$
incomingMenu.add(declarationsMenu);
incomingMenu = declarationsMenu;
incomingMenu.add(fFindDeclarationsAction);
incomingMenu.add(fFindDeclarationsInWorkingSetAction);
}
}

View file

@ -0,0 +1,270 @@
/*******************************************************************************
* Copyright (c) 2004 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Common Public License v0.5
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/cpl-v05.html
*
* Contributors:
* IBM Corp. - Rational Software - initial implementation
******************************************************************************/
package org.eclipse.cdt.internal.ui.search.actions;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.util.LinkedList;
import java.util.List;
import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.model.CoreModel;
import org.eclipse.cdt.core.model.ICElement;
import org.eclipse.cdt.core.parser.IParser;
import org.eclipse.cdt.core.parser.IScannerInfo;
import org.eclipse.cdt.core.parser.IScannerInfoProvider;
import org.eclipse.cdt.core.parser.NullSourceElementRequestor;
import org.eclipse.cdt.core.parser.ParseError;
import org.eclipse.cdt.core.parser.ParserFactory;
import org.eclipse.cdt.core.parser.ParserFactoryError;
import org.eclipse.cdt.core.parser.ParserLanguage;
import org.eclipse.cdt.core.parser.ParserMode;
import org.eclipse.cdt.core.parser.ParserUtil;
import org.eclipse.cdt.core.parser.ScannerInfo;
import org.eclipse.cdt.core.parser.ParseError.ParseErrorKind;
import org.eclipse.cdt.core.parser.ast.ASTClassKind;
import org.eclipse.cdt.core.parser.ast.IASTClassSpecifier;
import org.eclipse.cdt.core.parser.ast.IASTEnumerationSpecifier;
import org.eclipse.cdt.core.parser.ast.IASTEnumerator;
import org.eclipse.cdt.core.parser.ast.IASTField;
import org.eclipse.cdt.core.parser.ast.IASTFunction;
import org.eclipse.cdt.core.parser.ast.IASTMethod;
import org.eclipse.cdt.core.parser.ast.IASTNamespaceDefinition;
import org.eclipse.cdt.core.parser.ast.IASTNode;
import org.eclipse.cdt.core.parser.ast.IASTVariable;
import org.eclipse.cdt.core.search.ICSearchConstants;
import org.eclipse.cdt.core.search.ICSearchScope;
import org.eclipse.cdt.core.search.ICSearchConstants.LimitTo;
import org.eclipse.cdt.core.search.ICSearchConstants.SearchFor;
import org.eclipse.cdt.internal.ui.editor.CEditor;
import org.eclipse.cdt.internal.ui.search.CSearchMessages;
import org.eclipse.cdt.internal.ui.search.CSearchOperation;
import org.eclipse.cdt.internal.ui.search.CSearchResultCollector;
import org.eclipse.cdt.ui.CUIPlugin;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.dialogs.ProgressMonitorDialog;
import org.eclipse.jface.text.ITextSelection;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.search.ui.SearchUI;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.IWorkbenchSite;
public abstract class FindAction extends Action {
protected IWorkbenchSite fSite;
protected CEditor fEditor;
public FindAction(CEditor editor){
fEditor=editor;
fSite=editor.getSite();
}
public FindAction(IWorkbenchSite site){
fSite=site;
}
protected IParser setupParser(IFile resourceFile){
//Get the scanner info
IProject currentProject = resourceFile.getProject();
IScannerInfo scanInfo = new ScannerInfo();
IScannerInfoProvider provider = CCorePlugin.getDefault().getScannerInfoProvider(currentProject);
if (provider != null){
IScannerInfo buildScanInfo = provider.getScannerInformation(currentProject);
if (buildScanInfo != null){
scanInfo = new ScannerInfo(buildScanInfo.getDefinedSymbols(), buildScanInfo.getIncludePaths());
}
}
//C or CPP?
ParserLanguage language = CoreModel.getDefault().hasCCNature(currentProject) ? ParserLanguage.CPP : ParserLanguage.C;
IParser parser = null;
FileReader reader = null;
try {
reader = new FileReader(resourceFile.getLocation().toFile());
} catch (FileNotFoundException e) {
e.printStackTrace();
}
try
{
parser = ParserFactory.createParser(
ParserFactory.createScanner( reader, resourceFile.getLocation().toOSString(), scanInfo, ParserMode.SELECTION_PARSE, language, new NullSourceElementRequestor(), ParserUtil.getScannerLogService() ),
new NullSourceElementRequestor(), ParserMode.SELECTION_PARSE, language, ParserUtil.getParserLogService() );
} catch( ParserFactoryError pfe ){}
return parser;
}
/**
* @param node
*/
protected CSearchOperation createSearchOperation(String pattern, SearchFor searchFor) {
CSearchOperation op = null;
ICSearchScope scope = getScope();
String scopeDescription = getScopeDescription();
//Create a case sensitive search operation - limited by the node
List search = new LinkedList();
search.add(searchFor);
CSearchResultCollector collector= new CSearchResultCollector();
LimitTo limitTo = getLimitTo();
op = new CSearchOperation(CCorePlugin.getWorkspace(), pattern,true,search,limitTo,scope,scopeDescription,collector);
return op;
}
protected ISelection getSelection(){
ISelection sel = null;
if (fSite != null){
sel = fSite.getSelectionProvider().getSelection();
}
return sel;
}
public void run() {
ISelection sel = getSelection();
if (sel instanceof IStructuredSelection) {
run((IStructuredSelection) sel);
} else if (sel instanceof ITextSelection) {
run((ITextSelection) sel);
}
}
public void run(IStructuredSelection sel){
ICElement tempElement = null;
IEditorPart temp = fSite.getPage().getActiveEditor();
CEditor cTemp = null;
if (temp instanceof CEditor){
cTemp = (CEditor) temp;
}
if (cTemp == null ||
cTemp.getSelectionProvider() == null){
operationNotAvailableDialog();
return;
}
fEditor=cTemp;
ITextSelection selection= (ITextSelection) fEditor.getSelectionProvider().getSelection();
run(selection);
}
public void run(ITextSelection sel){
if(sel == null) {
return;
}
final ITextSelection selectedText = sel;
int selectionStart = selectedText.getOffset();
int selectionEnd = selectionStart + selectedText.getLength();
IFile resourceFile = fEditor.getInputFile();
IParser parser = setupParser(resourceFile);
IASTNode node = null;
try{
node = parser.parse(selectionStart,selectionEnd);
}
catch (ParseError er){
ParseErrorKind per = er.getErrorKind();
int val = per.getEnumValue();
er.printStackTrace();
}
catch (Exception ex){
ex.printStackTrace();}
if (node == null){
operationNotAvailableDialog();
return;
}
CSearchOperation op = createSearchOperation(selectedText.getText(),getSearchForFromNode(node));
performSearch(op);
}
private SearchFor getSearchForFromNode(IASTNode node){
SearchFor searchFor = null;
if (node instanceof IASTClassSpecifier){
//Find out if class, struct, union
IASTClassSpecifier tempNode = (IASTClassSpecifier) node;
if(tempNode.getClassKind().equals(ASTClassKind.CLASS)){
searchFor = ICSearchConstants.CLASS;
}
else if (tempNode.getClassKind().equals(ASTClassKind.STRUCT)){
searchFor = ICSearchConstants.STRUCT;
}
else if (tempNode.getClassKind().equals(ASTClassKind.UNION)){
searchFor = ICSearchConstants.UNION;
}
}
else if (node instanceof IASTMethod){
searchFor = ICSearchConstants.METHOD;
}
else if (node instanceof IASTFunction){
searchFor = ICSearchConstants.FUNCTION;
}
else if (node instanceof IASTField){
searchFor = ICSearchConstants.FIELD;
}
else if (node instanceof IASTVariable){
searchFor = ICSearchConstants.VAR;
}
else if (node instanceof IASTEnumerationSpecifier){
searchFor = ICSearchConstants.ENUM;
}
else if (node instanceof IASTEnumerator){
searchFor = ICSearchConstants.FIELD;
}
else if (node instanceof IASTNamespaceDefinition){
searchFor = ICSearchConstants.NAMESPACE;
}
return searchFor;
}
protected void performSearch(CSearchOperation op){
try {
SearchUI.activateSearchResultView();
ProgressMonitorDialog progressMonitor = new ProgressMonitorDialog(fSite.getShell());
progressMonitor.run(true, true, op);
} catch(Exception x) {
CUIPlugin.getDefault().log(x);
}
}
private void operationNotAvailableDialog(){
MessageDialog.openInformation(fEditor.getSite().getShell(),CSearchMessages.getString("CSearchOperation.operationUnavailable.title"), CSearchMessages.getString("CSearchOperation.operationUnavailable.message"));
}
abstract protected String getScopeDescription();
abstract protected ICSearchScope getScope();
abstract protected LimitTo getLimitTo();
}

View file

@ -0,0 +1,73 @@
/*******************************************************************************
* Copyright (c) 2004 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Common Public License v0.5
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/cpl-v05.html
*
* Contributors:
* IBM Corp. - Rational Software - initial implementation
******************************************************************************/
package org.eclipse.cdt.internal.ui.search.actions;
import org.eclipse.cdt.core.search.ICSearchConstants;
import org.eclipse.cdt.core.search.ICSearchScope;
import org.eclipse.cdt.core.search.SearchEngine;
import org.eclipse.cdt.core.search.ICSearchConstants.LimitTo;
import org.eclipse.cdt.internal.ui.editor.CEditor;
import org.eclipse.cdt.internal.ui.search.CSearchMessages;
import org.eclipse.ui.IWorkbenchSite;
public class FindDeclarationsAction extends FindAction {
public FindDeclarationsAction(CEditor editor, String label, String tooltip){
super(editor);
setText(label); //$NON-NLS-1$
setToolTipText(tooltip); //$NON-NLS-1$
}
public FindDeclarationsAction(CEditor editor){
this(editor,
CSearchMessages.getString("CSearch.FindDeclarationAction.label"),
CSearchMessages.getString("CSearch.FindDeclarationAction.tooltip"));
}
public FindDeclarationsAction(IWorkbenchSite site){
this(site,
CSearchMessages.getString("CSearch.FindDeclarationAction.label"),
CSearchMessages.getString("CSearch.FindDeclarationAction.tooltip"));
}
/**
* @param site
* @param string
* @param string2
* @param string3
*/
public FindDeclarationsAction(IWorkbenchSite site, String label, String tooltip) {
super(site);
setText(label);
setToolTipText(tooltip);
}
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.ui.editor.selsearch.FindAction#getScope()
*/
protected ICSearchScope getScope() {
return SearchEngine.createWorkspaceScope();
}
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.ui.editor.selsearch.FindAction#getScopeDescription()
*/
protected String getScopeDescription() {
// TODO Auto-generated method stub
return CSearchMessages.getString("WorkspaceScope");
}
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.ui.editor.selsearch.FindAction#getLimitTo()
*/
protected LimitTo getLimitTo() {
// TODO Auto-generated method stub
return ICSearchConstants.DECLARATIONS;
}
}

View file

@ -0,0 +1,90 @@
/*******************************************************************************
* Copyright (c) 2004 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Common Public License v0.5
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/cpl-v05.html
*
* Contributors:
* IBM Corp. - Rational Software - initial implementation
******************************************************************************/
package org.eclipse.cdt.internal.ui.search.actions;
import org.eclipse.cdt.core.search.ICSearchConstants;
import org.eclipse.cdt.core.search.ICSearchScope;
import org.eclipse.cdt.core.search.ICSearchConstants.LimitTo;
import org.eclipse.cdt.internal.ui.editor.CEditor;
import org.eclipse.cdt.internal.ui.search.CSearchMessages;
import org.eclipse.cdt.internal.ui.search.CSearchScopeFactory;
import org.eclipse.cdt.internal.ui.search.CSearchUtil;
import org.eclipse.ui.IWorkbenchSite;
import org.eclipse.ui.IWorkingSet;
public class FindDeclarationsInWorkingSetAction extends FindAction {
private IWorkingSet[] fWorkingSet;
/**
* @param site
*/
public FindDeclarationsInWorkingSetAction(IWorkbenchSite site) {
this(site,
CSearchMessages.getString("CSearch.FindDeclarationsInWorkingSetAction.label"),
CSearchMessages.getString("CSearch.FindDeclarationsInWorkingSetAction.tooltip"));
}
/**
* @param editor
*/
public FindDeclarationsInWorkingSetAction(CEditor editor) {
this(editor,
CSearchMessages.getString("CSearch.FindDeclarationsInWorkingSetAction.label"),
CSearchMessages.getString("CSearch.FindDeclarationsInWorkingSetAction.tooltip"));
}
public FindDeclarationsInWorkingSetAction(CEditor editor, String label, String tooltip){
super(editor);
setText(label); //$NON-NLS-1$
setToolTipText(tooltip); //$NON-NLS-1$
}
/**
* @param site
* @param string
* @param string2
* @param string3
*/
public FindDeclarationsInWorkingSetAction(IWorkbenchSite site,String label, String tooltip){
super(site);
setText(label); //$NON-NLS-1$
setToolTipText(tooltip); //$NON-NLS-1$
}
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.ui.editor.selsearch.FindAction#getScopeDescription()
*/
protected String getScopeDescription() {
return CSearchMessages.getString("WorkingSetScope");
}
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.ui.editor.selsearch.FindAction#getScope()
*/
protected ICSearchScope getScope() {
//
IWorkingSet[] workingSets= fWorkingSet;
if (fWorkingSet == null) {
workingSets= CSearchScopeFactory.getInstance().queryWorkingSets();
if (workingSets == null)
return null;
}
ICSearchScope scope= CSearchScopeFactory.getInstance().createCSearchScope(workingSets);
CSearchUtil.updateLRUWorkingSets(workingSets);
return scope;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.ui.editor.selsearch.FindAction#getLimitTo()
*/
protected LimitTo getLimitTo() {
return ICSearchConstants.DECLARATIONS;
}
}

View file

@ -0,0 +1,78 @@
/*******************************************************************************
* Copyright (c) 2004 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Common Public License v0.5
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/cpl-v05.html
*
* Contributors:
* IBM Corp. - Rational Software - initial implementation
******************************************************************************/
package org.eclipse.cdt.internal.ui.search.actions;
import org.eclipse.cdt.core.search.ICSearchConstants;
import org.eclipse.cdt.core.search.ICSearchScope;
import org.eclipse.cdt.core.search.SearchEngine;
import org.eclipse.cdt.core.search.ICSearchConstants.LimitTo;
import org.eclipse.cdt.internal.ui.editor.CEditor;
import org.eclipse.cdt.internal.ui.search.CSearchMessages;
import org.eclipse.ui.IWorkbenchSite;
public class FindRefsAction extends FindAction {
/**
* @param editor
*/
public FindRefsAction(CEditor editor) {
this(editor,
CSearchMessages.getString("CSearch.FindReferencesAction.label"),
CSearchMessages.getString("CSearch.FindReferencesAction.tooltip"));
}
public FindRefsAction(IWorkbenchSite site){
this(site,
CSearchMessages.getString("CSearch.FindReferencesAction.label"),
CSearchMessages.getString("CSearch.FindReferencesAction.tooltip"));
}
/**
* @param editor
* @param string
* @param string2
* @param string3
*/
public FindRefsAction(CEditor editor, String label, String tooltip) {
super(editor);
setText(label); //$NON-NLS-1$
setToolTipText(tooltip); //$NON-NLS-1$
}
/**
* @param site
* @param string
* @param string2
* @param string3
*/
public FindRefsAction(IWorkbenchSite site, String label, String tooltip) {
super(site);
setText(label);
setToolTipText(tooltip);
}
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.ui.editor.selsearch.FindAction#getScopeDescription()
*/
protected String getScopeDescription() {
return CSearchMessages.getString("WorkspaceScope");
}
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.ui.editor.selsearch.FindAction#getScope()
*/
protected ICSearchScope getScope() {
return SearchEngine.createWorkspaceScope();
}
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.ui.editor.selsearch.FindAction#getLimitTo()
*/
protected LimitTo getLimitTo() {
return ICSearchConstants.REFERENCES;
}
}

View file

@ -0,0 +1,87 @@
/*******************************************************************************
* Copyright (c) 2004 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Common Public License v0.5
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/cpl-v05.html
*
* Contributors:
* IBM Corp. - Rational Software - initial implementation
******************************************************************************/
package org.eclipse.cdt.internal.ui.search.actions;
import org.eclipse.cdt.core.search.ICSearchConstants;
import org.eclipse.cdt.core.search.ICSearchScope;
import org.eclipse.cdt.core.search.ICSearchConstants.LimitTo;
import org.eclipse.cdt.internal.ui.editor.CEditor;
import org.eclipse.cdt.internal.ui.search.CSearchMessages;
import org.eclipse.cdt.internal.ui.search.CSearchScopeFactory;
import org.eclipse.cdt.internal.ui.search.CSearchUtil;
import org.eclipse.ui.IWorkbenchSite;
import org.eclipse.ui.IWorkingSet;
public class FindRefsInWorkingSetAction extends FindAction {
public FindRefsInWorkingSetAction(CEditor editor) {
this(editor,
CSearchMessages.getString("CSearch.FindReferencesInWorkingSetAction.label"),
CSearchMessages.getString("CSearch.FindReferencesInWorkingSetAction.tooltip"));
}
public FindRefsInWorkingSetAction(IWorkbenchSite site){
this(site,
CSearchMessages.getString("CSearch.FindReferencesInWorkingSetAction.label"),
CSearchMessages.getString("CSearch.FindReferencesInWorkingSetAction.tooltip"));
}
/**
* @param editor
* @param string
* @param string2
* @param string3
*/
public FindRefsInWorkingSetAction(CEditor editor, String label, String tooltip) {
super(editor);
setText(label); //$NON-NLS-1$
setToolTipText(tooltip); //$NON-NLS-1$
}
/**
* @param site
* @param string
* @param string2
* @param string3
*/
public FindRefsInWorkingSetAction(IWorkbenchSite site, String label, String tooltip) {
super(site);
setText(label); //$NON-NLS-1$
setToolTipText(tooltip); //$NON-NLS-1
}
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.ui.editor.selsearch.FindAction#getLimitTo()
*/
protected LimitTo getLimitTo() {
return ICSearchConstants.REFERENCES;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.ui.editor.selsearch.FindAction#getScopeDescription()
*/
protected String getScopeDescription() {
return CSearchMessages.getString("WorkingSetScope");
}
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.ui.editor.selsearch.FindAction#getScope()
*/
protected ICSearchScope getScope() {
IWorkingSet[] workingSets= fWorkingSet;
if (fWorkingSet == null) {
workingSets= CSearchScopeFactory.getInstance().queryWorkingSets();
if (workingSets == null)
return null;
}
ICSearchScope scope= CSearchScopeFactory.getInstance().createCSearchScope(workingSets);
CSearchUtil.updateLRUWorkingSets(workingSets);
return scope;
}
private IWorkingSet[] fWorkingSet;
}

View file

@ -0,0 +1,55 @@
/*******************************************************************************
* Copyright (c) 2004 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Common Public License v0.5
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/cpl-v05.html
*
* Contributors:
* IBM Corp. - Rational Software - initial implementation
******************************************************************************/
package org.eclipse.cdt.internal.ui.search.actions;
import org.eclipse.cdt.internal.ui.editor.CEditor;
import org.eclipse.cdt.internal.ui.search.CSearchMessages;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.MenuManager;
import org.eclipse.search.ui.IContextMenuConstants;
import org.eclipse.ui.IWorkbenchSite;
import org.eclipse.ui.actions.ActionGroup;
public class ReferencesSearchGroup extends ActionGroup {
private FindRefsAction fFindRefsAction;
private FindRefsInWorkingSetAction fFindRefsInWorkingSetAction;
public ReferencesSearchGroup(IWorkbenchSite site) {
fFindRefsAction= new FindRefsAction(site);
fFindRefsInWorkingSetAction = new FindRefsInWorkingSetAction(site);
}
/**
* @param editor
*/
public ReferencesSearchGroup(CEditor editor) {
fFindRefsAction= new FindRefsAction(editor);
fFindRefsInWorkingSetAction = new FindRefsInWorkingSetAction(editor);
}
/*
* Method declared on ActionGroup.
*/
public void fillContextMenu(IMenuManager menu) {
super.fillContextMenu(menu);
IMenuManager incomingMenu = menu;
IMenuManager refsMenu = new MenuManager(CSearchMessages.getString("group.references"), IContextMenuConstants.GROUP_SEARCH); //$NON-NLS-1$
incomingMenu.add(refsMenu);
incomingMenu = refsMenu;
incomingMenu.add(fFindRefsAction);
incomingMenu.add(fFindRefsInWorkingSetAction);
}
}

View file

@ -0,0 +1,67 @@
/*******************************************************************************
* Copyright (c) 2004 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Common Public License v0.5
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/cpl-v05.html
*
* Contributors:
* IBM Corp. - Rational Software - initial implementation
******************************************************************************/
package org.eclipse.cdt.internal.ui.search.actions;
import org.eclipse.cdt.internal.ui.editor.CEditor;
import org.eclipse.cdt.internal.ui.search.CSearchMessages;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.MenuManager;
import org.eclipse.search.ui.IContextMenuConstants;
import org.eclipse.ui.IWorkbenchSite;
import org.eclipse.ui.actions.ActionGroup;
import org.eclipse.ui.part.Page;
import org.eclipse.ui.texteditor.ITextEditorActionConstants;
public class SelectionSearchGroup extends ActionGroup {
private CEditor fEditor;
private DeclarationsSearchGroup fDeclarationsSearchGroup;
private ReferencesSearchGroup fRefSearchGroup;
public SelectionSearchGroup(CEditor editor){
//TODO: Assert editor not null
fEditor= editor;
fDeclarationsSearchGroup= new DeclarationsSearchGroup(fEditor);
fRefSearchGroup = new ReferencesSearchGroup(fEditor);
}
/**
* @param page
*/
public SelectionSearchGroup(Page page) {
this(page.getSite());
}
/**
* @param site
*/
public SelectionSearchGroup(IWorkbenchSite site) {
fDeclarationsSearchGroup= new DeclarationsSearchGroup(site);
fRefSearchGroup = new ReferencesSearchGroup(site);
}
/*
* Method declared on ActionGroup.
*/
public void fillContextMenu(IMenuManager menu) {
super.fillContextMenu(menu);
IMenuManager incomingMenu = menu;
if (fEditor != null){
IMenuManager selSearchMenu = new MenuManager(CSearchMessages.getString("group.search"), IContextMenuConstants.GROUP_SEARCH); //$NON-NLS-1$
menu.appendToGroup(ITextEditorActionConstants.GROUP_FIND, selSearchMenu);
incomingMenu = selSearchMenu;
}
fDeclarationsSearchGroup.fillContextMenu(incomingMenu);
fRefSearchGroup.fillContextMenu(incomingMenu);
}
}