From b3898357e2e38957f7ebef7a35b150746afc6ff5 Mon Sep 17 00:00:00 2001 From: Doug Schaefer Date: Thu, 11 Sep 2003 17:13:03 +0000 Subject: [PATCH] Patch for Bogdan: UI - This patch changes the search context menu in the CEditor, CContentPage and CView: Search > C/C++ Search... File Search > Workspace WorkingSets - C/C++ Search pops up the search dialog with the chosen element filled out. - File Search does a text based file search on the Workspace or a chosen WorkingSet Core - Added some error checking to the dependency generator. --- .../org.eclipse.cdt.core/dependency/ChangeLog | 6 +- .../sourcedependency/DependencyManager.java | 2 + .../core/sourcedependency/DependencyTree.java | 4 + core/org.eclipse.cdt.ui/ChangeLog | 8 + .../internal/ui/CPluginResources.properties | 16 +- .../eclipse/cdt/internal/ui/cview/CView.java | 41 +++++ .../ui/editor/CContentOutlinePage.java | 13 +- .../cdt/internal/ui/editor/CEditor.java | 15 +- ...encesAction.java => FileSearchAction.java} | 6 +- .../editor/FileSearchActionInWorkingSet.java | 157 ++++++++++++++++++ .../ui/editor/SearchDialogAction.java | 25 ++- .../ui/search/CSearchScopeFactory.java | 19 +++ 12 files changed, 292 insertions(+), 20 deletions(-) rename core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/{SearchForReferencesAction.java => FileSearchAction.java} (96%) create mode 100644 core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/FileSearchActionInWorkingSet.java diff --git a/core/org.eclipse.cdt.core/dependency/ChangeLog b/core/org.eclipse.cdt.core/dependency/ChangeLog index 5d3499e49c8..2dffed54f87 100644 --- a/core/org.eclipse.cdt.core/dependency/ChangeLog +++ b/core/org.eclipse.cdt.core/dependency/ChangeLog @@ -1,3 +1,7 @@ +2003-09-11 Bogdan Gheorghe + - Added null guard to DependencyManager.getDependencyTree(), + DependencyTree.getFileDependencies() + 2003-09-08 Andrew Niefer - Modified calls to ParserFactory to specify which language to use - Modified IDependencyTree.add to take ParserLanguage as a parameter so that it can @@ -24,5 +28,5 @@ * src/org/eclipse/cdt/internal/core/sourcedependency/impl/InMemoryTree.java * src/org/eclipse/cdt/internal/core/sourcedependency/impl/Node.java - +- \ No newline at end of file diff --git a/core/org.eclipse.cdt.core/dependency/org/eclipse/cdt/internal/core/sourcedependency/DependencyManager.java b/core/org.eclipse.cdt.core/dependency/org/eclipse/cdt/internal/core/sourcedependency/DependencyManager.java index fd0674a7e2c..ca121c86d7e 100644 --- a/core/org.eclipse.cdt.core/dependency/org/eclipse/cdt/internal/core/sourcedependency/DependencyManager.java +++ b/core/org.eclipse.cdt.core/dependency/org/eclipse/cdt/internal/core/sourcedependency/DependencyManager.java @@ -98,10 +98,12 @@ public class DependencyManager extends JobManager implements ISourceDependency { IPath path =project.getFullPath(); IDependencyTree dTree= this.getDependencyTree(path,true,false); try{ + if (dTree != null) { //dTree.printIncludeEntries(); //dTree.printIndexedFiles(); String[] files = dTree.getFileDependencies(file.getFullPath()); return files; + } } catch(Exception e){} return null; diff --git a/core/org.eclipse.cdt.core/dependency/org/eclipse/cdt/internal/core/sourcedependency/DependencyTree.java b/core/org.eclipse.cdt.core/dependency/org/eclipse/cdt/internal/core/sourcedependency/DependencyTree.java index a50d4cb9e74..72498843374 100644 --- a/core/org.eclipse.cdt.core/dependency/org/eclipse/cdt/internal/core/sourcedependency/DependencyTree.java +++ b/core/org.eclipse.cdt.core/dependency/org/eclipse/cdt/internal/core/sourcedependency/DependencyTree.java @@ -145,6 +145,10 @@ public class DependencyTree implements IDependencyTree { public String[] getFileDependencies(IPath filePath) throws IOException { List tempFileReturn = new ArrayList(); IndexedFile indexFile = addsTree.getIndexedFile(filePath.toString()); + + if (indexFile == null) + return new String[0]; + int fileNum = indexFile.getFileNumber(); IncludeEntry[] tempEntries = addsTree.getIncludeEntries(); for (int i=0; i 0); + } else { + return getElement(selection) != null; + } + } + + + public static String getEditorID(String name) { + IEditorRegistry registry = PlatformUI.getWorkbench().getEditorRegistry(); + if (registry != null) { + IEditorDescriptor descriptor = registry.getDefaultEditor(name); + if (descriptor != null) { + return descriptor.getId(); + } else { + return registry.getDefaultEditor().getId(); + } + } + return null; + } + +} diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/SearchDialogAction.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/SearchDialogAction.java index 7b19bc1bf3a..d558967993f 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/SearchDialogAction.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/SearchDialogAction.java @@ -19,6 +19,7 @@ import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.search.ui.SearchUI; import org.eclipse.ui.IEditorDescriptor; import org.eclipse.ui.IEditorRegistry; +import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.texteditor.ITextEditor; @@ -29,12 +30,12 @@ import org.eclipse.ui.texteditor.ITextEditor; * Window>Preferences>Java>Code Generation>Code and Comments */ public class SearchDialogAction extends Action { - private static final String PREFIX= "SearchDialogAction."; private static final String C_SEARCH_PAGE_ID= "org.eclipse.cdt.ui.CSearchPage"; private ISelectionProvider fSelectionProvider; private ITextEditor fEditor; + private IWorkbenchWindow fWorkbenchWindow; public SearchDialogAction(ISelectionProvider provider, CEditor editor) { super(CUIPlugin.getResourceString(PREFIX + "label")); @@ -48,6 +49,20 @@ public class SearchDialogAction extends Action { fSelectionProvider= provider; fEditor = editor; } + + public SearchDialogAction(ISelectionProvider provider, IWorkbenchWindow window) { + + super(CUIPlugin.getResourceString(PREFIX + "label")); + setDescription(CUIPlugin.getResourceString(PREFIX + "description")); + setToolTipText(CUIPlugin.getResourceString(PREFIX + "tooltip")); + + if(provider instanceof CContentOutlinePage) { + CPluginImages.setImageDescriptors(this, CPluginImages.T_LCL, CPluginImages.IMG_MENU_OPEN_INCLUDE); + } + + fSelectionProvider= provider; + fWorkbenchWindow = window; + } public void run() { String search_name; @@ -64,8 +79,12 @@ public class SearchDialogAction extends Action { search_name = element.getElementName(); } - SearchUI.openSearchDialog(fEditor.getEditorSite().getWorkbenchWindow(),C_SEARCH_PAGE_ID); - + if (fEditor != null){ + SearchUI.openSearchDialog(fEditor.getEditorSite().getWorkbenchWindow(),C_SEARCH_PAGE_ID); + } + else if (fWorkbenchWindow != null){ + SearchUI.openSearchDialog(fWorkbenchWindow,C_SEARCH_PAGE_ID); + } // // @@@ we rely on the internal functions of the Search plugin, since // // none of these are actually exported. This is probably going to change // // with 2.0. diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/search/CSearchScopeFactory.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/search/CSearchScopeFactory.java index 4cfeea7110d..892c6ca24ff 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/search/CSearchScopeFactory.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/search/CSearchScopeFactory.java @@ -20,9 +20,14 @@ import java.util.Set; import org.eclipse.cdt.core.model.ICElement; import org.eclipse.cdt.core.search.ICSearchScope; import org.eclipse.cdt.core.search.SearchEngine; +import org.eclipse.cdt.ui.CUIPlugin; import org.eclipse.core.runtime.IAdaptable; import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.window.Window; +import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.IWorkingSet; +import org.eclipse.ui.PlatformUI; +import org.eclipse.ui.dialogs.IWorkingSetSelectionDialog; /** * @author aniefer @@ -116,4 +121,18 @@ public class CSearchScopeFactory { return createCSearchScope( cElements ); } + + public IWorkingSet[] queryWorkingSets() { + Shell shell= CUIPlugin.getDefault().getActiveWorkbenchShell(); + if (shell == null) + return null; + IWorkingSetSelectionDialog dialog= PlatformUI.getWorkbench().getWorkingSetManager().createWorkingSetSelectionDialog(shell, true); + if (dialog.open() == Window.OK) { + IWorkingSet[] workingSets= dialog.getSelection(); + if (workingSets.length > 0) + return workingSets; + } + return null; + } + }