From 230c1eafb195a00182662781611f7ddf404a8e45 Mon Sep 17 00:00:00 2001 From: Bogdan Gheorghe Date: Mon, 27 Jun 2005 01:31:33 +0000 Subject: [PATCH] Fix for 92935 --- .../core/index/ctagsindexer/CTagsIndexer.java | 3 +- .../domsourceindexer/DOMSourceIndexer.java | 3 +- .../search/actions/ReferencesSearchGroup.java | 44 +++++++++++++++++++ 3 files changed, 46 insertions(+), 4 deletions(-) diff --git a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/ctagsindexer/CTagsIndexer.java b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/ctagsindexer/CTagsIndexer.java index 4eb713e8c29..8973c4a7cbc 100644 --- a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/ctagsindexer/CTagsIndexer.java +++ b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/ctagsindexer/CTagsIndexer.java @@ -85,8 +85,7 @@ public class CTagsIndexer extends AbstractCExtension implements ICDTIndexer { * @see org.eclipse.cdt.core.index.ICDTIndexer#getIndexerFeatures() */ public int getIndexerFeatures() { - // TODO Auto-generated method stub - return 0; + return ICDTIndexer._DECLARATIONS | ICDTIndexer._DEFINITIONS | ICDTIndexer._LINENUMBERS | ICDTIndexer._C | ICDTIndexer._CPP; } /* (non-Javadoc) diff --git a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/domsourceindexer/DOMSourceIndexer.java b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/domsourceindexer/DOMSourceIndexer.java index bd054f20d27..a7a9defa174 100644 --- a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/domsourceindexer/DOMSourceIndexer.java +++ b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/domsourceindexer/DOMSourceIndexer.java @@ -410,8 +410,7 @@ public class DOMSourceIndexer extends AbstractCExtension implements ICDTIndexer * @see org.eclipse.cdt.core.index2.IIndexer#getIndexerFeatures() */ public int getIndexerFeatures() { - // TODO Auto-generated method stub - return 0; + return ICDTIndexer._DECLARATIONS | ICDTIndexer._DEFINITIONS | ICDTIndexer._REFERENCES | ICDTIndexer._OFFSETINFO | ICDTIndexer._C | ICDTIndexer._CPP; } /* (non-Javadoc) diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/search/actions/ReferencesSearchGroup.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/search/actions/ReferencesSearchGroup.java index 88e4dc638a3..7b8b7bc2511 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/search/actions/ReferencesSearchGroup.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/search/actions/ReferencesSearchGroup.java @@ -13,13 +13,21 @@ package org.eclipse.cdt.internal.ui.search.actions; import java.util.ArrayList; import java.util.Iterator; +import org.eclipse.cdt.core.CCorePlugin; +import org.eclipse.cdt.core.index.ICDTIndexer; +import org.eclipse.cdt.core.model.ICElement; +import org.eclipse.cdt.core.model.ICProject; import org.eclipse.cdt.internal.ui.editor.CEditor; import org.eclipse.cdt.internal.ui.editor.ExternalSearchEditor; import org.eclipse.cdt.internal.ui.editor.ICEditorActionDefinitionIds; import org.eclipse.cdt.internal.ui.search.CSearchMessages; import org.eclipse.cdt.internal.ui.search.CSearchUtil; +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IProject; import org.eclipse.jface.action.IMenuManager; import org.eclipse.jface.action.MenuManager; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.search.ui.IContextMenuConstants; import org.eclipse.ui.IWorkbenchSite; import org.eclipse.ui.IWorkingSet; @@ -74,6 +82,31 @@ public class ReferencesSearchGroup extends ActionGroup { menu.appendToGroup(ITextEditorActionConstants.GROUP_FIND, refsMenu); } + if (fEditor != null){ + IFile fileInput= fEditor.getInputFile(); + ICDTIndexer indexer = CCorePlugin.getDefault().getCoreModel().getIndexManager().getIndexerForProject(fileInput.getProject()); + if (indexer != null){ + setReferenceMenuEnabled(indexer.getIndexerFeatures()); + } + } + else if (fSite != null){ + try { + ISelection sel =fSite.getSelectionProvider().getSelection(); + if (sel instanceof IStructuredSelection){ + IStructuredSelection structSel = (IStructuredSelection) sel; + Object cElement = structSel.getFirstElement(); + if (cElement instanceof ICElement){ + ICElement el = (ICElement) cElement; + //ICProject p= el.getCProject(); + IProject proj = el.getCProject().getProject(); + ICDTIndexer indexer = CCorePlugin.getDefault().getCoreModel().getIndexManager().getIndexerForProject(proj); + setReferenceMenuEnabled(indexer.getIndexerFeatures()); + } + } + } catch (NullPointerException err){} + } + + incomingMenu.add(refsMenu); incomingMenu = refsMenu; @@ -87,6 +120,17 @@ public class ReferencesSearchGroup extends ActionGroup { } + private void setReferenceMenuEnabled(int indexFeatures){ + if ((indexFeatures & ICDTIndexer._REFERENCES) == ICDTIndexer._REFERENCES){ + //references for this indexer + fFindRefsAction.setEnabled(true); + fFindRefsInWorkingSetAction.setEnabled(true); + } else { + //no references for this indexer + fFindRefsAction.setEnabled(false); + fFindRefsInWorkingSetAction.setEnabled(false); + } + } /** * @return */