1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-29 19:45:01 +02:00

Common Navigator extensions - bug 140337

This commit is contained in:
Anton Leherbauer 2006-07-03 09:11:48 +00:00
parent 7f90464021
commit 36c5a333f1
23 changed files with 1995 additions and 14 deletions

View file

@ -31,5 +31,6 @@ Require-Bundle: org.eclipse.ui.ide,
org.eclipse.cdt.ui,
org.eclipse.cdt.make.core,
org.eclipse.core.runtime,
org.eclipse.debug.ui
org.eclipse.debug.ui,
org.eclipse.ui.navigator
Eclipse-LazyStart: true

View file

@ -423,4 +423,38 @@
class="org.eclipse.cdt.make.ui.dialogs.GCCPerFileSCDProfilePage"
name="%GCCPerFileProfile.name"
profileId="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile"/>
</extension>
<extension
point="org.eclipse.ui.navigator.navigatorContent">
<commonWizard
associatedExtensionId="org.eclipse.cdt.ui.navigator.content"
menuGroupId="org.eclipse.cdt.ui.newCWizards"
type="new"
wizardId="org.eclipse.cdt.ui.wizards.NewMakeCProjectWizard">
<enablement/>
</commonWizard>
<commonWizard
associatedExtensionId="org.eclipse.cdt.ui.navigator.content"
menuGroupId="org.eclipse.cdt.ui.newCWizards"
type="new"
wizardId="org.eclipse.cdt.make.ui.wizards.NewMakeCCProjectWizard">
<enablement/>
</commonWizard>
<commonWizard
associatedExtensionId="org.eclipse.cdt.ui.navigator.content"
menuGroupId="org.eclipse.cdt.ui.newCWizards"
type="new"
wizardId="org.eclipse.cdt.ui.wizards.ConvertToMakeWizard">
<enablement>
<instanceof value="org.eclipse.core.resources.IProject"/>
</enablement>
</commonWizard>
</extension>
<extension
point="org.eclipse.ui.navigator.viewer">
<viewerContentBinding viewerId="org.eclipse.ui.navigator.ProjectExplorer">
<includes>
<contentExtension pattern="org.eclipse.cdt.make.ui.wizards.*"/>
</includes>
</viewerContentBinding>
</extension></plugin>

View file

@ -17,5 +17,6 @@ Require-Bundle: org.eclipse.ui.ide,
org.eclipse.cdt.ui,
org.eclipse.cdt.managedbuilder.core,
org.eclipse.core.runtime,
org.eclipse.core.variables
org.eclipse.core.variables,
org.eclipse.ui.navigator
Eclipse-LazyStart: true

View file

@ -226,5 +226,26 @@
<actionSet id="org.eclipse.cdt.managedbuilder.ui.buildConfigActionSet"/>
<actionSet id="org.eclipse.cdt.managedbuilder.ui.buildSelectedFilesActionSet"/>
</perspectiveExtension>
</extension>
<extension
point="org.eclipse.ui.navigator.navigatorContent">
<commonWizard
associatedExtensionId="org.eclipse.cdt.ui.navigator.content"
menuGroupId="org.eclipse.cdt.ui.newCWizards"
type="new"
wizardId="org.eclipse.cdt.managedbuilder.ui.wizards.StdCCWizard"/>
<commonWizard
associatedExtensionId="org.eclipse.cdt.ui.navigator.content"
menuGroupId="org.eclipse.cdt.ui.newCWizards"
type="new"
wizardId="org.eclipse.cdt.managedbuilder.ui.wizards.StdCWizard"/>
</extension>
<extension
point="org.eclipse.ui.navigator.viewer">
<viewerContentBinding viewerId="org.eclipse.ui.navigator.ProjectExplorer">
<includes>
<contentExtension pattern="org.eclipse.cdt.managedbuilder.ui.wizards.*"/>
</includes>
</viewerContentBinding>
</extension>
</plugin>

View file

@ -66,6 +66,9 @@ Require-Bundle: org.eclipse.ui.ide,
org.eclipse.ui.console,
org.eclipse.core.filebuffers,
org.eclipse.core.runtime,
org.eclipse.help
org.eclipse.help,
org.eclipse.ui.navigator,
org.eclipse.core.expressions,
org.eclipse.ui.navigator.resources
Eclipse-LazyStart: true
Bundle-RequiredExecutionEnvironment: J2SE-1.3

View file

@ -137,6 +137,12 @@ CFolderActionSet.description=C Folder Action Set
DeleteTaskAction.label=Delete C/C++ Markers
DeleteIProblemMarkerAction.label=Delete IProblem Markers
# Common Editor ruler actions
AddTask.label=Add &Task...
AddTask.tooltip=Add Task...
AddBookmark.label=Add Boo&kmark...
AddBookmark.tooltip=Add Bookmark...
# C/C++ Search
CSearchPage.label= C/C++ Search
openCSearchPageAction.label= &C/C++...
@ -333,4 +339,10 @@ RebuildIndex.name=Rebuild Index
indexerPage.name = Indexer Page
proposalFilter.name = Code Completion Proposal Filter
includeBrowser.name = Include Browser
cSearchPage.name = CSearchPage
cSearchPage.name = CSearchPage
# dummy label (not displayed)
Dummy.label = dummy
# Common Navigator
navigatorContent.name = CDT Elements

View file

@ -1366,4 +1366,217 @@
</objectContribution>
</extension>
<!--- Common Navigator extensions -->
<extension
point="org.eclipse.ui.navigator.navigatorContent">
<navigatorContent
activeByDefault="true"
contentProvider="org.eclipse.cdt.internal.ui.navigator.CNavigatorContentProvider"
icon="icons/view16/cview.gif"
id="org.eclipse.cdt.ui.navigator.content"
labelProvider="org.eclipse.cdt.internal.ui.navigator.CNavigatorLabelProvider"
name="%navigatorContent.name"
priority="normal">
<triggerPoints>
<or>
<adapt type="org.eclipse.core.resources.IProject">
<or>
<test
property="org.eclipse.core.resources.projectNature"
value="org.eclipse.cdt.core.cnature"/>
<test
property="org.eclipse.core.resources.projectNature"
value="org.eclipse.cdt.core.ccnature"/>
</or>
</adapt>
<instanceof value="org.eclipse.core.resources.IWorkspaceRoot"/>
<instanceof value="org.eclipse.core.resources.IFolder" />
<instanceof value="org.eclipse.core.resources.IFile" />
<instanceof value="org.eclipse.core.resources.IStorage" />
<instanceof value="org.eclipse.cdt.core.model.ICProject"/>
<instanceof value="org.eclipse.cdt.core.model.ICContainer"/>
<instanceof value="org.eclipse.cdt.core.model.ICElement"/>
<instanceof value="org.eclipse.cdt.ui.CElementGrouping"/>
</or>
</triggerPoints>
<possibleChildren>
<or>
<instanceof value="org.eclipse.core.resources.IWorkspaceRoot"/>
<instanceof value="org.eclipse.core.resources.IFolder" />
<instanceof value="org.eclipse.core.resources.IFile" />
<instanceof value="org.eclipse.core.resources.IStorage" />
<instanceof value="org.eclipse.cdt.core.model.ICProject"/>
<instanceof value="org.eclipse.cdt.core.model.ICContainer"/>
<instanceof value="org.eclipse.cdt.core.model.ICElement"/>
<instanceof value="org.eclipse.cdt.ui.CElementGrouping"/>
</or>
</possibleChildren>
<override
policy="InvokeAlwaysRegardlessOfSuppressedExt"
suppressedExtensionId="org.eclipse.ui.navigator.resourceContent"/>
<commonSorter
class="org.eclipse.cdt.ui.CElementSorter"
id="org.eclipse.cdt.ui.commonSorter"/>
<actionProvider
class="org.eclipse.cdt.internal.ui.navigator.CNavigatorOpenActionProvider"
id="org.eclipse.cdt.ui.navigator.actions.open"
overrides="org.eclipse.ui.navigator.resources.OpenActions">
<enablement>
<instanceof value="org.eclipse.cdt.core.model.ICElement"/>
</enablement>
</actionProvider>
<actionProvider
class="org.eclipse.cdt.internal.ui.navigator.CNavigatorBuildActionProvider"
id="org.eclipse.cdt.ui.navigator.actions.build">
<enablement>
<instanceof value="org.eclipse.cdt.core.model.ICElement"/>
</enablement>
</actionProvider>
<actionProvider
class="org.eclipse.cdt.internal.ui.navigator.CNavigatorWorkingSetActionProvider"
id="org.eclipse.cdt.ui.navigator.actions.workingSet">
</actionProvider>
<actionProvider
class="org.eclipse.cdt.internal.ui.navigator.CNavigatorSearchActionProvider"
id="org.eclipse.cdt.ui.navigator.actions.search">
<enablement>
<instanceof value="org.eclipse.cdt.core.model.ICElement"/>
</enablement>
</actionProvider>
<commonWizard
associatedExtensionId="org.eclipse.cdt.ui.navigator.content"
menuGroupId="org.eclipse.cdt.ui"
type="new"
wizardId="org.eclipse.cdt.ui.wizards.NewSourceFileCreationWizard">
<enablement>
<or>
<instanceof value="org.eclipse.cdt.core.model.ICElement" />
<adapt type="org.eclipse.core.resources.IProject">
<or>
<test
property="org.eclipse.core.resources.projectNature"
value="org.eclipse.cdt.core.cnature"/>
<test
property="org.eclipse.core.resources.projectNature"
value="org.eclipse.cdt.core.ccnature"/>
</or>
</adapt>
</or>
</enablement>
</commonWizard>
<commonWizard
associatedExtensionId="org.eclipse.cdt.ui.navigator.content"
menuGroupId="org.eclipse.cdt.ui"
type="new"
wizardId="org.eclipse.cdt.ui.wizards.NewHeaderFileCreationWizard">
<enablement>
<or>
<instanceof value="org.eclipse.cdt.core.model.ICElement" />
<adapt type="org.eclipse.core.resources.IProject">
<or>
<test
property="org.eclipse.core.resources.projectNature"
value="org.eclipse.cdt.core.cnature"/>
<test
property="org.eclipse.core.resources.projectNature"
value="org.eclipse.cdt.core.ccnature"/>
</or>
</adapt>
</or>
</enablement>
</commonWizard>
<commonWizard
associatedExtensionId="org.eclipse.cdt.ui.navigator.content"
menuGroupId="org.eclipse.cdt.ui"
type="new"
wizardId="org.eclipse.cdt.ui.wizards.NewSourceFolderCreationWizard">
<enablement>
<or>
<instanceof value="org.eclipse.cdt.core.model.ICElement" />
<adapt type="org.eclipse.core.resources.IProject">
<or>
<test
property="org.eclipse.core.resources.projectNature"
value="org.eclipse.cdt.core.cnature"/>
<test
property="org.eclipse.core.resources.projectNature"
value="org.eclipse.cdt.core.ccnature"/>
</or>
</adapt>
</or>
</enablement>
</commonWizard>
<commonWizard
associatedExtensionId="org.eclipse.cdt.ui.navigator.content"
menuGroupId="org.eclipse.cdt.ui"
type="new"
wizardId="org.eclipse.cdt.ui.wizards.NewClassCreationWizard">
<enablement>
<or>
<instanceof value="org.eclipse.cdt.core.model.ICElement" />
<adapt type="org.eclipse.core.resources.IProject">
<or>
<test
property="org.eclipse.core.resources.projectNature"
value="org.eclipse.cdt.core.ccnature"/>
</or>
</adapt>
</or>
</enablement>
</commonWizard>
<dropAssistant
class="org.eclipse.cdt.internal.ui.navigator.CNavigatorDropAdapterAssistant"
id="org.eclipse.cdt.ui.navigator.dropAssistant">
<possibleDropTargets>
<or>
<instanceof value="org.eclipse.cdt.core.model.ISourceReference"/>
</or>
</possibleDropTargets>
</dropAssistant>
</navigatorContent>
<commonFilter
class="org.eclipse.cdt.internal.ui.filters.ExecutableFilter"
description="%HideExecutableFiles.description"
id="org.eclipse.cdt.ui.navigator.filters.ExecutableFilter"
name="%HideExecutableFiles.label"/>
<commonFilter
class="org.eclipse.cdt.internal.ui.filters.SharedFilter"
description="%HideSharedFiles.description"
id="org.eclipse.cdt.ui.navigator.filters.SharedFilter"
name="%HideSharedFiles.label"/>
<commonFilter
class="org.eclipse.cdt.internal.ui.filters.ObjectFilter"
description="%HideObjectFiles.description"
id="org.eclipse.cdt.ui.navigator.filters.ObjectFilter"
name="%HideObjectFiles.label"/>
<commonFilter
class="org.eclipse.cdt.internal.ui.filters.ArchiveFilter"
description="%HideArchiveFiles.description"
id="org.eclipse.cdt.ui.navigator.filters.ArchiveFilter"
name="%HideArchiveFiles.label"/>
<commonFilter
class="org.eclipse.cdt.internal.ui.filters.NonCProjectsFilter"
description="%HideNonCProjects.description"
id="org.eclipse.cdt.ui.navigator.filters.NonCProjectsFilter"
name="%HideNonCProjects.label"/>
<commonFilter
class="org.eclipse.cdt.internal.ui.filters.NonCElementFilter"
description="%HideNonCElements.description"
id="org.eclipse.cdt.ui.navigator.filters.NonCElementFilter"
name="%HideNonCElements.label"/>
</extension>
<extension
point="org.eclipse.ui.navigator.viewer">
<viewerContentBinding viewerId="org.eclipse.ui.navigator.ProjectExplorer">
<includes>
<contentExtension pattern="org.eclipse.cdt.ui.navigator.content"/>
<contentExtension pattern="org.eclipse.cdt.ui.navigator.filters.*"/>
<contentExtension pattern="org.eclipse.cdt.ui.wizards.*"/>
</includes>
</viewerContentBinding>
<dragAssistant
class="org.eclipse.cdt.internal.ui.navigator.CNavigatorDragAdapterAssistant"
viewerId="org.eclipse.ui.navigator.ProjectExplorer"/>
</extension>
</plugin>

View file

@ -180,7 +180,7 @@ public class MainActionGroup extends CViewActionGroup {
//Can be added once support for manually adding external files to index is established
/*menu.add(new Separator());
menu.add(addToIndexAction);*/
menu.add(new Separator());
menu.add(new Separator(org.eclipse.search.ui.IContextMenuConstants.GROUP_SEARCH));
addSearchMenu(menu, celements);
menu.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
menu.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS + "-end")); //$NON-NLS-1$

View file

@ -0,0 +1,93 @@
/*******************************************************************************
* Copyright (c) 2000, 2006 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
* Anton Leherbauer (Wind River Systems) - adaptations for Common Navigator
*******************************************************************************/
package org.eclipse.cdt.internal.ui.navigator;
import java.net.URL;
import org.eclipse.cdt.ui.CUIPlugin;
import org.eclipse.core.runtime.FileLocator;
import org.eclipse.core.runtime.Path;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.util.Assert;
import org.eclipse.ui.IActionBars;
import org.eclipse.ui.IViewPart;
import org.eclipse.ui.actions.ActionGroup;
/**
* A basic abstract action group implementation similar to
* {@link org.eclipse.cdt.internal.ui.cview.CViewActionGroup}, avoiding
* the explicit dependency on {@link org.eclipse.cdt.internal.ui.cview.CView} to
* allow reuse in the Common Navigator.
*
* @see org.eclipse.cdt.internal.ui.cview.CViewActionGroup
*/
public abstract class AbstractCNavigatorActionGroup extends ActionGroup {
/**
* The view part this action group is associated with.
*/
private final IViewPart fViewPart;
/**
* Create a new action group associated with given view part.
*
* @param viewPart
* the view part this action group is associated with, may not be
* <code>null</code>.
*/
public AbstractCNavigatorActionGroup(IViewPart viewPart) {
Assert.isNotNull(viewPart);
fViewPart = viewPart;
makeActions();
}
/**
* Provide access to the view part this action group has been registered with.
*
* @return the view part
*/
protected IViewPart getViewPart() {
return fViewPart;
}
/**
* Returns the image descriptor with the given relative path.
*/
protected ImageDescriptor getImageDescriptor(String relativePath) {
String iconPath = "/icons/" + relativePath; //$NON-NLS-1$
URL iconURL = FileLocator.find(CUIPlugin.getDefault().getBundle(), new Path(iconPath), null);
// it's safe to pass null
return ImageDescriptor.createFromURL(iconURL);
}
/**
* Makes the actions contained in this action group.
*/
protected abstract void makeActions();
/*
* @see org.eclipse.ui.actions.ActionGroup#fillContextMenu(org.eclipse.jface.action.IMenuManager)
*/
public abstract void fillContextMenu(IMenuManager menu);
/*
* @see org.eclipse.ui.actions.ActionGroup#fillActionBars(org.eclipse.ui.IActionBars)
*/
public abstract void fillActionBars(IActionBars actionBars);
/*
* @see org.eclipse.ui.actions.ActionGroup#updateActionBars()
*/
public abstract void updateActionBars();
}

View file

@ -0,0 +1,147 @@
/*******************************************************************************
* Copyright (c) 2000, 2006 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
* Anton Leherbauer (Wind River Systems) - adaptations for Common Navigator
*******************************************************************************/
package org.eclipse.cdt.internal.ui.navigator;
import java.util.Iterator;
import org.eclipse.cdt.internal.ui.cview.CViewMessages;
import org.eclipse.core.resources.ICommand;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.IncrementalProjectBuilder;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.jface.action.GroupMarker;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.IActionBars;
import org.eclipse.ui.IViewPart;
import org.eclipse.ui.actions.BuildAction;
import org.eclipse.ui.navigator.ICommonMenuConstants;
/**
* Common Navigator compatible clone of {@link org.eclipse.cdt.internal.ui.cview.BuildGroup}.
* <p>
* Adds action "Clean Project" and group marker "buildGroup" to the context menu.
* </p>
* @see org.eclipse.cdt.internal.ui.cview.BuildGroup
* @see org.eclipse.ui.actions.BuildAction
*/
public class CNavigatorBuildActionGroup extends AbstractCNavigatorActionGroup {
private BuildAction fCleanAction;
// Menu tags for the build
final String BUILD_GROUP_MARKER= "buildGroup"; //$NON-NLS-1$
final String BUILD_GROUP_MARKER_END= "end-buildGroup"; //$NON-NLS-1$
/**
* Create action group associated with given view part.
* @param viewPart
*/
public CNavigatorBuildActionGroup(IViewPart viewPart) {
super(viewPart);
}
public void fillActionBars(IActionBars actionBars) {
}
/**
* Adds the build actions to the context menu.
* <p>
* The following conditions apply: build-only projects selected, auto build
* disabled, at least one * builder present
* </p>
* <p>
* No disabled action should be on the context menu.
* </p>
*
* @param menu
* context menu to add actions to
*/
public void fillContextMenu(IMenuManager menu) {
IStructuredSelection selection= (IStructuredSelection) getContext().getSelection();
boolean isProjectSelection= true;
boolean hasOpenProjects= false;
boolean hasClosedProjects= false;
boolean hasBuilder= true; // false if any project is closed or does
// not have builder
Iterator resources= selection.iterator();
while (resources.hasNext() && (!hasOpenProjects || !hasClosedProjects || hasBuilder || isProjectSelection)) {
Object next= resources.next();
IProject project= null;
if (next instanceof IProject) {
project= (IProject) next;
} else if (next instanceof IAdaptable) {
IResource res= (IResource)((IAdaptable)next).getAdapter(IResource.class);
if (res instanceof IProject) {
project= (IProject) res;
}
}
if (project == null) {
isProjectSelection= false;
continue;
}
if (project.isOpen()) {
hasOpenProjects= true;
if (hasBuilder && !hasBuilder(project)) {
hasBuilder= false;
}
} else {
hasClosedProjects= true;
hasBuilder= false;
}
}
menu.insertAfter(ICommonMenuConstants.GROUP_BUILD, new GroupMarker(BUILD_GROUP_MARKER));
if (!selection.isEmpty() && isProjectSelection && hasBuilder) {
fCleanAction.selectionChanged(selection);
if (fCleanAction.isEnabled()) {
menu.appendToGroup(BUILD_GROUP_MARKER, fCleanAction);
}
}
menu.appendToGroup(BUILD_GROUP_MARKER, new GroupMarker(BUILD_GROUP_MARKER_END));
}
/**
* Returns whether there are builders configured on the given project.
*
* @return <code>true</code> if it has builders, <code>false</code> if
* not, or if this could not be determined
*/
boolean hasBuilder(IProject project) {
try {
ICommand[] commands= project.getDescription().getBuildSpec();
if (commands.length > 0) return true;
} catch (CoreException e) {
// Cannot determine if project has builders. Project is closed
// or does not exist. Fall through to return false.
}
return false;
}
protected void makeActions() {
Shell shell= getViewPart().getSite().getShell();
fCleanAction= new BuildAction(shell, IncrementalProjectBuilder.CLEAN_BUILD);
fCleanAction.setText(CViewMessages.getString("CleanAction.label")); //$NON-NLS-1$
}
public void updateActionBars() {
}
}

View file

@ -0,0 +1,87 @@
/*******************************************************************************
* Copyright (c) 2006 Wind River Systems, Inc. and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Anton Leherbauer (Wind River Systems) - initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.internal.ui.navigator;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.ui.IActionBars;
import org.eclipse.ui.IViewPart;
import org.eclipse.ui.actions.ActionContext;
import org.eclipse.ui.navigator.CommonActionProvider;
import org.eclipse.ui.navigator.ICommonActionExtensionSite;
import org.eclipse.ui.navigator.ICommonViewerWorkbenchSite;
/**
* A Common Navigator action provider providing the contributions
* from the build action group.
*
* @see CNavigatorBuildActionGroup
*/
public class CNavigatorBuildActionProvider extends CommonActionProvider {
private CNavigatorBuildActionGroup fBuildGroup;
/*
* @see org.eclipse.ui.navigator.CommonActionProvider#init(org.eclipse.ui.navigator.ICommonActionExtensionSite)
*/
public void init(ICommonActionExtensionSite site) {
ICommonViewerWorkbenchSite workbenchSite= null;
if (site.getViewSite() instanceof ICommonViewerWorkbenchSite) {
workbenchSite= (ICommonViewerWorkbenchSite) site.getViewSite();
}
if (workbenchSite != null) {
if (workbenchSite.getPart() != null && workbenchSite.getPart() instanceof IViewPart) {
IViewPart viewPart= (IViewPart) workbenchSite.getPart();
fBuildGroup= new CNavigatorBuildActionGroup(viewPart);
}
}
}
/*
* @see org.eclipse.ui.actions.ActionGroup#dispose()
*/
public void dispose() {
if (fBuildGroup != null) {
fBuildGroup.dispose();
fBuildGroup = null;
}
super.dispose();
}
/*
* @see org.eclipse.ui.actions.ActionGroup#fillActionBars(org.eclipse.ui.IActionBars)
*/
public void fillActionBars(IActionBars actionBars) {
if (fBuildGroup != null) {
fBuildGroup.fillActionBars(actionBars);
}
}
/*
* @see org.eclipse.ui.actions.ActionGroup#fillContextMenu(org.eclipse.jface.action.IMenuManager)
*/
public void fillContextMenu(IMenuManager menu) {
if (fBuildGroup != null) {
fBuildGroup.fillContextMenu(menu);
}
}
/*
* @see org.eclipse.ui.actions.ActionGroup#setContext(org.eclipse.ui.actions.ActionContext)
*/
public void setContext(ActionContext context) {
super.setContext(context);
if (fBuildGroup != null) {
fBuildGroup.setContext(context);
}
}
}

View file

@ -0,0 +1,330 @@
/*******************************************************************************
* Copyright (c) 2006 Wind River Systems, Inc. and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Anton Leherbauer (Wind River Systems) - initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.internal.ui.navigator;
import java.util.Arrays;
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
import org.eclipse.cdt.core.model.CoreModel;
import org.eclipse.cdt.core.model.ICElement;
import org.eclipse.cdt.core.model.ICModel;
import org.eclipse.cdt.internal.ui.cview.CViewContentProvider;
import org.eclipse.cdt.ui.CUIPlugin;
import org.eclipse.cdt.ui.PreferenceConstants;
import org.eclipse.core.resources.IContainer;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.IWorkspaceRoot;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.util.IPropertyChangeListener;
import org.eclipse.jface.util.PropertyChangeEvent;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.ui.IMemento;
import org.eclipse.ui.navigator.ICommonContentExtensionSite;
import org.eclipse.ui.navigator.IPipelinedTreeContentProvider;
import org.eclipse.ui.navigator.PipelinedShapeModification;
import org.eclipse.ui.navigator.PipelinedViewerUpdate;
/**
* A content provider populating a Common Navigator view with CDT model content.
*/
public class CNavigatorContentProvider extends CViewContentProvider implements IPipelinedTreeContentProvider {
/** The input object as supplied in the call to {@link #inputChanged()} */
private Object fRealInput;
private IPropertyChangeListener fPropertyChangeListener;
/*
* @see org.eclipse.ui.navigator.ICommonContentProvider#init(org.eclipse.ui.navigator.ICommonContentExtensionSite)
*/
public void init(ICommonContentExtensionSite commonContentExtensionSite) {
IMemento memento= commonContentExtensionSite.getMemento();
restoreState(memento);
fPropertyChangeListener= new IPropertyChangeListener() {
public void propertyChange(PropertyChangeEvent event) {
boolean refreshViewer= false;
String property= event.getProperty();
Object newValue= event.getNewValue();
if (property.equals(PreferenceConstants.PREF_SHOW_CU_CHILDREN)) {
boolean showCUChildren= newValue instanceof Boolean ? ((Boolean)newValue).booleanValue() : false;
setProvideMembers(showCUChildren);
refreshViewer= true;
} else if (property.equals(PreferenceConstants.CVIEW_GROUP_INCLUDES)) {
boolean groupIncludes= newValue instanceof Boolean ? ((Boolean)newValue).booleanValue() : false;
setIncludesGrouping(groupIncludes);
refreshViewer= true;
}
if (refreshViewer && getViewer() != null) {
getViewer().refresh();
}
}
};
CUIPlugin.getDefault().getPreferenceStore().addPropertyChangeListener(fPropertyChangeListener);
// TLETODO [CN] use extension state model for view options persistence
// fStateModel.addPropertyChangeListener(listener);
}
/*
* @see org.eclipse.cdt.ui.CElementContentProvider#dispose()
*/
public void dispose() {
CUIPlugin.getDefault().getPreferenceStore().removePropertyChangeListener(fPropertyChangeListener);
// TLETODO [CN] use extension state model for view options persistence
// fStateModel.removePropertyChangeListener(fPropertyChangeListener);
super.dispose();
}
/*
* @see org.eclipse.ui.navigator.IMementoAware#restoreState(org.eclipse.ui.IMemento)
*/
public void restoreState(IMemento memento) {
IPreferenceStore store= PreferenceConstants.getPreferenceStore();
boolean showCUChildren= store.getBoolean(PreferenceConstants.PREF_SHOW_CU_CHILDREN);
boolean groupIncludes= store.getBoolean(PreferenceConstants.CVIEW_GROUP_INCLUDES);
if (memento != null) {
String mementoValue= memento.getString(PreferenceConstants.PREF_SHOW_CU_CHILDREN);
if (mementoValue != null) {
showCUChildren= Boolean.parseBoolean(mementoValue);
}
mementoValue= memento.getString(PreferenceConstants.CVIEW_GROUP_INCLUDES);
if (mementoValue != null) {
groupIncludes= Boolean.parseBoolean(mementoValue);
}
}
setProvideMembers(showCUChildren);
setIncludesGrouping(groupIncludes);
setProvideWorkingCopy(true);
}
/*
* @see org.eclipse.ui.navigator.IMementoAware#saveState(org.eclipse.ui.IMemento)
*/
public void saveState(IMemento memento) {
if (memento != null) {
memento.putString(PreferenceConstants.PREF_SHOW_CU_CHILDREN, String.valueOf(getProvideMembers()));
memento.putString(PreferenceConstants.CVIEW_GROUP_INCLUDES, String.valueOf(areIncludesGroup()));
}
}
/*
* @see org.eclipse.cdt.ui.CElementContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object)
*/
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
fRealInput= newInput;
super.inputChanged(viewer, oldInput, findInputElement(newInput));
}
private Object findInputElement(Object newInput) {
if (newInput instanceof IWorkspaceRoot) {
return CoreModel.create((IWorkspaceRoot) newInput);
}
return newInput;
}
/*
* @see org.eclipse.cdt.internal.ui.BaseCElementContentProvider#getParent(java.lang.Object)
*/
public Object getParent(Object element) {
Object parent= super.getParent(element);
if (parent instanceof ICModel) {
return getViewerInput() != null ? fRealInput : parent;
}
return parent;
}
/**
* Access the viewer input.
* @return the viewer input
*/
protected Object getViewerInput() {
return fInput;
}
/**
* Access the viewer.
* @return the viewer
*/
protected Viewer getViewer() {
return fViewer;
}
/*
* @see org.eclipse.cdt.internal.ui.BaseCElementContentProvider#getElements(java.lang.Object)
*/
public Object[] getElements(Object parent) {
if (parent instanceof IWorkspaceRoot) {
return super.getElements(CoreModel.create((IWorkspaceRoot)parent));
}
return super.getElements(parent);
}
/*
* @see org.eclipse.cdt.internal.ui.cview.CViewContentProvider#getChildren(java.lang.Object)
*/
public Object[] getChildren(Object element) {
Object children[];
if (element instanceof IWorkspaceRoot) {
children = super.getChildren(CoreModel.create((IWorkspaceRoot)element));
} else {
children = super.getChildren(element);
}
return children;
}
/*
* @see org.eclipse.ui.navigator.IPipelinedTreeContentProvider#getPipelinedChildren(java.lang.Object, java.util.Set)
*/
public void getPipelinedChildren(Object parent, Set currentChildren) {
Object[] children= getChildren(parent);
for (Iterator iter= currentChildren.iterator(); iter.hasNext();) {
if (iter.next() instanceof IResource) {
iter.remove();
}
}
currentChildren.addAll(Arrays.asList(children));
}
/*
* @see org.eclipse.ui.navigator.IPipelinedTreeContentProvider#getPipelinedElements(java.lang.Object, java.util.Set)
*/
public void getPipelinedElements(Object input, Set currentElements) {
// only replace plain resource elements with custom elements
// and avoid duplicating elements already customized
// by upstream content providers
Object[] elements= getElements(input);
List elementList= Arrays.asList(elements);
for (Iterator iter= currentElements.iterator(); iter.hasNext();) {
Object element= iter.next();
IResource resource= null;
if (element instanceof IResource) {
resource= (IResource)element;
} else if (element instanceof IAdaptable) {
resource= (IResource)((IAdaptable)element).getAdapter(IResource.class);
}
if (resource != null) {
int i= elementList.indexOf(resource);
if (i >= 0) {
elements[i]= null;
}
}
}
for (int i= 0; i < elements.length; i++) {
Object element= elements[i];
if (element instanceof ICElement) {
ICElement cElement= (ICElement)element;
IResource resource= cElement.getResource();
if (resource != null) {
currentElements.remove(resource);
}
currentElements.add(element);
} else if (element != null) {
currentElements.add(element);
}
}
}
/*
* @see org.eclipse.ui.navigator.IPipelinedTreeContentProvider#getPipelinedParent(java.lang.Object, java.lang.Object)
*/
public Object getPipelinedParent(Object object, Object suggestedParent) {
return getParent(object);
}
/*
* @see org.eclipse.ui.navigator.IPipelinedTreeContentProvider#interceptAdd(org.eclipse.ui.navigator.PipelinedShapeModification)
*/
public PipelinedShapeModification interceptAdd(PipelinedShapeModification addModification) {
convertToCElements(addModification);
return addModification;
}
/*
* @see org.eclipse.ui.navigator.IPipelinedTreeContentProvider#interceptRefresh(org.eclipse.ui.navigator.PipelinedViewerUpdate)
*/
public boolean interceptRefresh(PipelinedViewerUpdate refreshSynchronization) {
return convertToCElements(refreshSynchronization.getRefreshTargets());
}
/*
* @see org.eclipse.ui.navigator.IPipelinedTreeContentProvider#interceptRemove(org.eclipse.ui.navigator.PipelinedShapeModification)
*/
public PipelinedShapeModification interceptRemove(PipelinedShapeModification removeModification) {
convertToCElements(removeModification.getChildren());
return removeModification;
}
/*
* @see org.eclipse.ui.navigator.IPipelinedTreeContentProvider#interceptUpdate(org.eclipse.ui.navigator.PipelinedViewerUpdate)
*/
public boolean interceptUpdate(PipelinedViewerUpdate updateSynchronization) {
return convertToCElements(updateSynchronization.getRefreshTargets());
}
/**
* Converts the shape modification to use ICElements.
*
* @param modification
* the shape modification to convert
* @return <code>true</code> if the shape modification set was modified
*/
private boolean convertToCElements(
PipelinedShapeModification modification) {
Object parent= modification.getParent();
if (parent instanceof IContainer) {
ICElement element= CoreModel.getDefault().create((IContainer) parent);
if (element != null && element.exists()) {
// don't convert the root
if( !(element instanceof ICModel)) {
modification.setParent(element);
}
return convertToCElements(modification.getChildren());
}
}
return false;
}
/**
* Converts the given set to ICElements.
*
* @param currentChildren
* The set of current children that would be contributed or
* refreshed in the viewer.
* @return <code>true</code> if the input set was modified
*/
private boolean convertToCElements(Set currentChildren) {
LinkedHashSet convertedChildren= new LinkedHashSet();
ICElement newChild;
for (Iterator iter= currentChildren.iterator(); iter.hasNext();) {
Object child= iter.next();
if (child instanceof IResource) {
if ((newChild= CoreModel.getDefault().create((IResource) child)) != null
&& newChild.exists()) {
iter.remove();
convertedChildren.add(newChild);
}
}
}
if (!convertedChildren.isEmpty()) {
currentChildren.addAll(convertedChildren);
return true;
}
return false;
}
}

View file

@ -0,0 +1,63 @@
/*******************************************************************************
* Copyright (c) 2006 Wind River Systems, Inc. and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Anton Leherbauer (Wind River Systems) - initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.internal.ui.navigator;
import java.util.Iterator;
import org.eclipse.cdt.core.model.ICElement;
import org.eclipse.cdt.core.model.ISourceReference;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.swt.dnd.DragSourceEvent;
import org.eclipse.swt.dnd.Transfer;
import org.eclipse.ui.navigator.CommonDragAdapterAssistant;
import org.eclipse.ui.views.navigator.LocalSelectionTransfer;
/**
* A Common Navigator drag assistant for <code>ICElement</code>s being also
* <code>ISourceReference</code>s.
*
* @see org.eclipse.cdt.internal.ui.cview.SelectionTransferDragAdapter
* @see org.eclipse.cdt.internal.ui.cview.CView#initDrag()
*/
public class CNavigatorDragAdapterAssistant extends CommonDragAdapterAssistant {
/*
* @see org.eclipse.ui.navigator.CommonDragAdapterAssistant#getSupportedTransferTypes()
*/
public Transfer[] getSupportedTransferTypes() {
Transfer[] transfers= new Transfer[] {
LocalSelectionTransfer.getInstance()
};
return transfers;
}
/*
* @see org.eclipse.ui.navigator.CommonDragAdapterAssistant#setDragData(org.eclipse.swt.dnd.DragSourceEvent, org.eclipse.jface.viewers.IStructuredSelection)
*/
public boolean setDragData(DragSourceEvent event,
IStructuredSelection selection) {
if (selection instanceof IStructuredSelection) {
for (Iterator iter= ((IStructuredSelection)selection).iterator(); iter.hasNext();) {
Object element= iter.next();
if (element instanceof ICElement) {
if (!(element instanceof ISourceReference)) {
return false;
}
}
}
event.data = selection;
return true;
}
return false;
}
}

View file

@ -0,0 +1,258 @@
/*******************************************************************************
* Copyright (c) 2006 Wind River Systems, Inc. and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Anton Leherbauer (Wind River Systems) - initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.internal.ui.navigator;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.eclipse.cdt.core.model.CModelException;
import org.eclipse.cdt.core.model.CoreModel;
import org.eclipse.cdt.core.model.ICElement;
import org.eclipse.cdt.core.model.ISourceReference;
import org.eclipse.cdt.core.model.ITranslationUnit;
import org.eclipse.cdt.internal.ui.cview.CViewMessages;
import org.eclipse.cdt.internal.ui.util.ExceptionHandler;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.jface.dialogs.ProgressMonitorDialog;
import org.eclipse.jface.operation.IRunnableContext;
import org.eclipse.jface.operation.IRunnableWithProgress;
import org.eclipse.jface.util.LocalSelectionTransfer;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.swt.dnd.DND;
import org.eclipse.swt.dnd.DropTargetEvent;
import org.eclipse.swt.dnd.TransferData;
import org.eclipse.ui.navigator.CommonDropAdapter;
import org.eclipse.ui.navigator.CommonDropAdapterAssistant;
/**
* A Common Navigator drop adapter assistant handling dropping of <code>ICElement</code>s.
*
* @see org.eclipse.cdt.internal.ui.cview.SelectionTransferDropAdapter
* @see org.eclipse.cdt.internal.ui.cview.CView#initDrop()
*/
public class CNavigatorDropAdapterAssistant extends CommonDropAdapterAssistant {
/*
* @see org.eclipse.ui.navigator.CommonDropAdapterAssistant#handleDrop(org.eclipse.ui.navigator.CommonDropAdapter, org.eclipse.swt.dnd.DropTargetEvent, java.lang.Object)
*/
public IStatus handleDrop(CommonDropAdapter dropAdapter,
DropTargetEvent event, Object target) {
try {
switch(event.detail) {
case DND.DROP_MOVE:
return handleDropMove(target, event);
case DND.DROP_COPY:
return handleDropCopy(target, event);
}
} catch (CModelException e){
ExceptionHandler.handle(e, CViewMessages.getString("SelectionTransferDropAdapter.error.title"), CViewMessages.getString("SelectionTransferDropAdapter.error.message")); //$NON-NLS-1$ //$NON-NLS-2$
return e.getStatus();
} catch(InvocationTargetException e) {
ExceptionHandler.handle(e, CViewMessages.getString("SelectionTransferDropAdapter.error.title"), CViewMessages.getString("SelectionTransferDropAdapter.error.exception")); //$NON-NLS-1$ //$NON-NLS-2$
return Status.CANCEL_STATUS;
} catch (InterruptedException e) {
//ok
} finally {
// The drag source listener must not perform any operation
// since this drop adapter did the remove of the source even
// if we moved something.
event.detail= DND.DROP_NONE;
}
return Status.CANCEL_STATUS;
}
/*
* @see org.eclipse.ui.navigator.CommonDropAdapterAssistant#validateDrop(java.lang.Object, int, org.eclipse.swt.dnd.TransferData)
*/
public IStatus validateDrop(Object target, int operation,
TransferData transferType) {
try {
switch(operation) {
case DND.DROP_DEFAULT:
return handleValidateMove(target);
case DND.DROP_COPY:
return handleValidateCopy(target);
case DND.DROP_MOVE:
return handleValidateMove(target);
}
} catch (CModelException e){
ExceptionHandler.handle(e, CViewMessages.getString("SelectionTransferDropAdapter.error.title"), CViewMessages.getString("SelectionTransferDropAdapter.error.message")); //$NON-NLS-1$ //$NON-NLS-2$
}
return Status.CANCEL_STATUS;
}
private IStatus handleValidateCopy(Object target) throws CModelException{
if (target != null) {
ISelection selection = LocalSelectionTransfer.getTransfer().getSelection();
ICElement[] cElements= getCElements(selection);
if (!canCopyElements(cElements))
return Status.CANCEL_STATUS;
if (target instanceof ISourceReference) {
return Status.OK_STATUS;
}
}
return Status.CANCEL_STATUS;
}
private IStatus handleValidateMove(Object target) throws CModelException {
if (target != null) {
ISelection selection = LocalSelectionTransfer.getTransfer().getSelection();
ICElement[] cElements= getCElements(selection);
if (!canMoveElements(cElements))
return Status.CANCEL_STATUS;
if (target instanceof ISourceReference) {
return Status.OK_STATUS;
}
}
return Status.CANCEL_STATUS;
}
private IStatus handleDropCopy(final Object target, DropTargetEvent event) throws CModelException, InvocationTargetException, InterruptedException{
ISelection selection = LocalSelectionTransfer.getTransfer().getSelection();
final ICElement[] cElements= getCElements(selection);
if (target instanceof ICElement) {
ICElement cTarget = (ICElement)target;
ICElement parent = cTarget;
boolean isTargetTranslationUnit = cTarget instanceof ITranslationUnit;
if (!isTargetTranslationUnit) {
parent = cTarget.getParent();
}
final ICElement[] containers = new ICElement[cElements.length];
for (int i = 0; i < containers.length; ++i) {
containers[i] = parent;
}
ICElement[] neighbours = null;
if (!isTargetTranslationUnit) {
neighbours = new ICElement[cElements.length];
for (int i = 0; i < neighbours.length; ++i) {
neighbours[i] = cTarget;
}
}
final ICElement[] siblings = neighbours;
IRunnableWithProgress runnable = new IRunnableWithProgress() {
public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
try {
CoreModel.getDefault().getCModel().copy(cElements, containers, siblings, null, false, monitor);
} catch (CModelException e) {
throw new InvocationTargetException(e);
}
}
};
run(runnable);
return Status.OK_STATUS;
}
return Status.CANCEL_STATUS;
}
private IStatus handleDropMove(final Object target, DropTargetEvent event) throws CModelException, InvocationTargetException, InterruptedException{
ISelection selection = LocalSelectionTransfer.getTransfer().getSelection();
final ICElement[] cElements= getCElements(selection);
if (target instanceof ICElement) {
ICElement cTarget = (ICElement)target;
ICElement parent = cTarget;
boolean isTargetTranslationUnit = cTarget instanceof ITranslationUnit;
if (!isTargetTranslationUnit) {
parent = cTarget.getParent();
}
final ICElement[] containers = new ICElement[cElements.length];
for (int i = 0; i < containers.length; ++i) {
containers[i] = parent;
}
ICElement[] neighbours = null;
if (!isTargetTranslationUnit) {
neighbours = new ICElement[cElements.length];
for (int i = 0; i < neighbours.length; ++i) {
neighbours[i] = cTarget;
}
}
final ICElement[] siblings = neighbours;
IRunnableWithProgress runnable = new IRunnableWithProgress() {
public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
try {
CoreModel.getDefault().getCModel().move(cElements, containers, siblings, null, false, monitor);
} catch (CModelException e) {
throw new InvocationTargetException(e);
}
}
};
run(runnable);
return Status.OK_STATUS;
}
return Status.CANCEL_STATUS;
}
public void run(IRunnableWithProgress runnable) throws InterruptedException, InvocationTargetException {
IRunnableContext context= new ProgressMonitorDialog(getShell());
context.run(true, true, runnable);
}
public static ICElement[] getCElements(ISelection selection) {
if (!(selection instanceof IStructuredSelection)) {
return null;
}
List elements = ((IStructuredSelection)selection).toList();
List resources= new ArrayList(elements.size());
for (Iterator iter= elements.iterator(); iter.hasNext();) {
Object element= iter.next();
if (element instanceof ITranslationUnit) {
continue;
}
if (element instanceof ICElement)
resources.add(element);
}
return (ICElement[]) resources.toArray(new ICElement[resources.size()]);
}
private static boolean canCopyElements(ICElement[] cElements) {
if (cElements != null) {
return hasCommonParent(cElements);
}
return false;
}
private static boolean canMoveElements(ICElement[] cElements) {
if (cElements != null) {
return hasCommonParent(cElements);
}
return false;
}
private static boolean hasCommonParent(ICElement[] elements) {
if (elements.length > 1) {
ICElement parent = elements[0];
for (int i = 0; i < elements.length; ++i) {
ICElement p = elements[i].getParent();
if (parent == null && p!= null) {
return false;
} else if (!parent.equals(p)){
return false;
}
}
}
return true;
}
}

View file

@ -0,0 +1,106 @@
/*******************************************************************************
* Copyright (c) 2006 Wind River Systems, Inc. and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Anton Leherbauer (Wind River Systems) - initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.internal.ui.navigator;
import org.eclipse.cdt.core.model.IArchiveContainer;
import org.eclipse.cdt.core.model.IBinary;
import org.eclipse.cdt.core.model.IBinaryContainer;
import org.eclipse.cdt.core.model.IBinaryModule;
import org.eclipse.cdt.core.model.ICElement;
import org.eclipse.cdt.core.model.ICProject;
import org.eclipse.cdt.internal.ui.cview.CViewLabelProvider;
import org.eclipse.cdt.internal.ui.cview.CViewMessages;
import org.eclipse.cdt.internal.ui.viewsupport.AppearanceAwareLabelProvider;
import org.eclipse.cdt.internal.ui.viewsupport.CElementImageProvider;
import org.eclipse.core.resources.IResource;
import org.eclipse.ui.IMemento;
import org.eclipse.ui.model.IWorkbenchAdapter;
import org.eclipse.ui.navigator.ICommonContentExtensionSite;
import org.eclipse.ui.navigator.ICommonLabelProvider;
/**
* A label provider suitable for the Common Navigator providing also
* status message text for the current selected item.
*
* @see org.eclipse.cdt.internal.ui.cview.CView#getStatusLineMessage()
*/
public class CNavigatorLabelProvider extends CViewLabelProvider implements ICommonLabelProvider {
/**
* Create a default label provider.
*
* @see org.eclipse.cdt.internal.ui.cview.CView#createLabelProvider()
*/
public CNavigatorLabelProvider() {
super(AppearanceAwareLabelProvider.DEFAULT_TEXTFLAGS,
AppearanceAwareLabelProvider.DEFAULT_IMAGEFLAGS
| CElementImageProvider.SMALL_ICONS);
}
/*
* @see org.eclipse.ui.navigator.ICommonLabelProvider#init(org.eclipse.ui.navigator.ICommonContentExtensionSite)
*/
public void init(ICommonContentExtensionSite extensionSite) {
// no-op
}
/*
* @see org.eclipse.ui.navigator.IMementoAware#restoreState(org.eclipse.ui.IMemento)
*/
public void restoreState(IMemento memento) {
// no-op
}
/*
* @see org.eclipse.ui.navigator.IMementoAware#saveState(org.eclipse.ui.IMemento)
*/
public void saveState(IMemento memento) {
// no-op
}
/*
* @see org.eclipse.ui.navigator.IDescriptionProvider#getDescription(java.lang.Object)
*/
public String getDescription(Object element) {
if (element instanceof IResource) {
return ((IResource) element).getFullPath().makeRelative().toString();
} else if (element instanceof ICElement) {
ICElement celement = (ICElement) element;
IResource res = (IResource) celement.getAdapter(IResource.class);
if (res != null) {
return res.getFullPath().toString();
} else if (celement.getElementType() == ICElement.C_VCONTAINER) {
if (celement instanceof IBinaryContainer) {
ICProject cproj = celement.getCProject();
if (cproj != null) {
return cproj.getPath() + CViewMessages.getString("CView.binaries"); //$NON-NLS-1$
}
} else if (celement instanceof IArchiveContainer) {
ICProject cproj = celement.getCProject();
if (cproj != null) {
return cproj.getPath() + CViewMessages.getString("CView.archives"); //$NON-NLS-1$
}
} else if (celement instanceof IBinaryModule) {
IBinary bin = ((IBinaryModule) celement).getBinary();
return bin.getPath() + ":" + celement.getElementName(); //$NON-NLS-1$
}
} else if (celement.getElementType() > ICElement.C_UNIT) {
return celement.getPath().toString() + " - [" + celement.getElementName() + "]"; //$NON-NLS-1$ //$NON-NLS-2$
}
return celement.getElementName();
} else if (element instanceof IWorkbenchAdapter) {
IWorkbenchAdapter wAdapter = (IWorkbenchAdapter)element;
return wAdapter.getLabel(element);
}
return null;
}
}

View file

@ -0,0 +1,95 @@
/*******************************************************************************
* Copyright (c) 2006 Wind River Systems, Inc. and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Anton Leherbauer (Wind River Systems) - initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.internal.ui.navigator;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.ui.IActionBars;
import org.eclipse.ui.IViewPart;
import org.eclipse.ui.actions.ActionContext;
import org.eclipse.ui.navigator.CommonActionProvider;
import org.eclipse.ui.navigator.ICommonActionConstants;
import org.eclipse.ui.navigator.ICommonActionExtensionSite;
import org.eclipse.ui.navigator.ICommonViewerWorkbenchSite;
/**
* A Common Navigator action provider providing the contributions
* from the open editor action group.
*
* @see CNavigatorOpenEditorActionGroup
*/
public class CNavigatorOpenActionProvider extends CommonActionProvider {
private CNavigatorOpenEditorActionGroup fOpenGroup;
/*
* @see org.eclipse.ui.navigator.CommonActionProvider#init(org.eclipse.ui.navigator.ICommonActionExtensionSite)
*/
public void init(ICommonActionExtensionSite site) {
ICommonViewerWorkbenchSite workbenchSite = null;
if (site.getViewSite() instanceof ICommonViewerWorkbenchSite) {
workbenchSite = (ICommonViewerWorkbenchSite) site.getViewSite();
}
if (workbenchSite != null) {
if (workbenchSite.getPart() != null && workbenchSite.getPart() instanceof IViewPart) {
IViewPart viewPart = (IViewPart) workbenchSite.getPart();
fOpenGroup = new CNavigatorOpenEditorActionGroup(viewPart);
}
}
}
/*
* @see org.eclipse.ui.actions.ActionGroup#dispose()
*/
public void dispose() {
if (fOpenGroup != null) {
fOpenGroup.dispose();
fOpenGroup = null;
}
super.dispose();
}
/*
* @see org.eclipse.ui.actions.ActionGroup#fillActionBars(org.eclipse.ui.IActionBars)
*/
public void fillActionBars(IActionBars actionBars) {
if (fOpenGroup != null) {
fOpenGroup.updateActionBars();
if (fOpenGroup.getOpenAction().isEnabled()) {
actionBars.setGlobalActionHandler(ICommonActionConstants.OPEN, fOpenGroup.getOpenAction());
}
}
}
/*
* @see org.eclipse.ui.actions.ActionGroup#fillContextMenu(org.eclipse.jface.action.IMenuManager)
*/
public void fillContextMenu(IMenuManager menu) {
if (fOpenGroup != null) {
if (fOpenGroup.getOpenAction().isEnabled()) {
fOpenGroup.fillContextMenu(menu);
}
}
}
/*
* @see org.eclipse.ui.actions.ActionGroup#setContext(org.eclipse.ui.actions.ActionContext)
*/
public void setContext(ActionContext context) {
super.setContext(context);
if (fOpenGroup != null) {
fOpenGroup.setContext(context);
}
}
}

View file

@ -0,0 +1,149 @@
/*******************************************************************************
* Copyright (c) 2000, 2006 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
* Anton Leherbauer (Wind River Systems) - adaptations for Common Navigator
*******************************************************************************/
package org.eclipse.cdt.internal.ui.navigator;
import org.eclipse.cdt.internal.ui.actions.SelectionConverter;
import org.eclipse.cdt.internal.ui.cview.CViewMessages;
import org.eclipse.core.resources.IContainer;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.ui.IActionBars;
import org.eclipse.ui.IViewPart;
import org.eclipse.ui.actions.OpenFileAction;
import org.eclipse.ui.actions.OpenInNewWindowAction;
import org.eclipse.ui.actions.OpenWithMenu;
import org.eclipse.ui.navigator.ICommonMenuConstants;
/**
* This is basically a clone of {@link org.eclipse.cdt.internal.ui.OpenFileGroup},
* but without explicit dependency on CView. This opens it up for use in the
* Common Navigator framework.
* <p>
* Contributes an "Open" action for the default editor, an "Open With" sub-menu
* for all applicable editors if one or more files are selected.
* For all container selections, an "Open In New Window" action is contributed.
* </p>
*
* @see org.eclipse.cdt.internal.ui.cview.OpenFileGroup
* @see org.eclipse.ui.actions.OpenFileAction
* @see org.eclipse.ui.actions.OpenWithMenu
* @see org.eclipse.ui.actions.OpenInNewWindowAction
*/
public class CNavigatorOpenEditorActionGroup extends AbstractCNavigatorActionGroup {
/** The open file action. */
private OpenFileAction fOpenFileAction;
/**
* Create an action group for the given view part.
*
* @param viewPart
*/
public CNavigatorOpenEditorActionGroup(IViewPart viewPart) {
super(viewPart);
}
protected void makeActions() {
fOpenFileAction= new OpenCElementAction(getViewPart().getSite().getPage());
}
public void fillContextMenu(IMenuManager menu) {
IStructuredSelection celements= (IStructuredSelection) getContext().getSelection();
IStructuredSelection selection= SelectionConverter.convertSelectionToResources(celements);
fOpenFileAction.selectionChanged(celements);
if (fOpenFileAction.isEnabled()) {
menu.appendToGroup(ICommonMenuConstants.GROUP_OPEN, fOpenFileAction);
fillOpenWithMenu(menu, selection);
}
addNewWindowAction(menu, selection);
}
/**
* Adds the OpenWith submenu to the context menu.
*
* @param menu
* the context menu
* @param selection
* the current selection
*/
private void fillOpenWithMenu(IMenuManager menu, IStructuredSelection selection) {
// Only supported if exactly one file is selected.
if (selection.size() != 1) {
return;
}
Object element= selection.getFirstElement();
if (!(element instanceof IFile)) {
return;
}
MenuManager submenu= new MenuManager(CViewMessages.getString("OpenWithMenu.label"), ICommonMenuConstants.GROUP_OPEN_WITH); //$NON-NLS-1$
submenu.add(new OpenWithMenu(getViewPart().getSite().getPage(), (IFile) element));
menu.insertAfter(ICommonMenuConstants.GROUP_OPEN_WITH, submenu);
}
/**
* Adds the Open in New Window action to the context menu.
*
* @param menu
* the context menu
* @param selection
* the current selection
*/
private void addNewWindowAction(IMenuManager menu, IStructuredSelection selection) {
// Only supported if exactly one container (i.e open project or folder) is selected.
if (selection.size() != 1) {
return;
}
Object element= selection.getFirstElement();
if (!(element instanceof IContainer)) {
return;
}
if (element instanceof IProject && !(((IProject) element).isOpen())) {
return;
}
menu.appendToGroup(ICommonMenuConstants.GROUP_OPEN, new OpenInNewWindowAction(getViewPart().getSite().getWorkbenchWindow(), (IContainer) element));
}
/*
* @see org.eclipse.ui.actions.ActionGroup#fillActionBars(org.eclipse.ui.IActionBars)
*/
public void fillActionBars(IActionBars actionBars) {
}
/*
* @see org.eclipse.ui.actions.ActionGroup#updateActionBars()
*/
public void updateActionBars() {
IStructuredSelection celements= (IStructuredSelection) getContext().getSelection();
fOpenFileAction.selectionChanged(celements);
}
/**
* Returns the open action managed by this action group.
*
* @return the open action
*/
IAction getOpenAction() {
return fOpenFileAction;
}
}

View file

@ -0,0 +1,98 @@
/*******************************************************************************
* Copyright (c) 2006 Wind River Systems, Inc. and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Anton Leherbauer (Wind River Systems) - initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.internal.ui.navigator;
import org.eclipse.cdt.internal.ui.search.actions.SelectionSearchGroup;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.ui.IActionBars;
import org.eclipse.ui.IViewPart;
import org.eclipse.ui.actions.ActionContext;
import org.eclipse.ui.navigator.CommonActionProvider;
import org.eclipse.ui.navigator.ICommonActionExtensionSite;
import org.eclipse.ui.navigator.ICommonViewerWorkbenchSite;
/**
* Common Navigator action provider for the C-search sub menus.
*
* @see org.eclipse.cdt.internal.ui.search.actions.SelectionSearchGroup
*/
public class CNavigatorSearchActionProvider extends CommonActionProvider {
private SelectionSearchGroup fSearchGroup;
/*
* @see org.eclipse.ui.navigator.CommonActionProvider#init(org.eclipse.ui.navigator.ICommonActionExtensionSite)
*/
public void init(ICommonActionExtensionSite site) {
ICommonViewerWorkbenchSite workbenchSite= null;
if (site.getViewSite() instanceof ICommonViewerWorkbenchSite) {
workbenchSite= (ICommonViewerWorkbenchSite) site.getViewSite();
}
if (workbenchSite != null) {
if (workbenchSite.getPart() != null && workbenchSite.getPart() instanceof IViewPart) {
fSearchGroup= new SelectionSearchGroup(workbenchSite.getSite());
}
}
}
/*
* @see org.eclipse.ui.actions.ActionGroup#dispose()
*/
public void dispose() {
if (fSearchGroup != null) {
fSearchGroup.dispose();
fSearchGroup = null;
}
super.dispose();
}
/*
* @see org.eclipse.ui.actions.ActionGroup#fillActionBars(org.eclipse.ui.IActionBars)
*/
public void fillActionBars(IActionBars actionBars) {
if (fSearchGroup != null) {
fSearchGroup.fillActionBars(actionBars);
}
}
/*
* @see org.eclipse.ui.actions.ActionGroup#fillContextMenu(org.eclipse.jface.action.IMenuManager)
*/
public void fillContextMenu(IMenuManager menu) {
if (fSearchGroup != null) {
ISelection selection = getContext().getSelection();
if (SelectionSearchGroup.canActionBeAdded(selection)){
fSearchGroup.fillContextMenu(menu);
}
}
}
/*
* @see org.eclipse.ui.actions.ActionGroup#setContext(org.eclipse.ui.actions.ActionContext)
*/
public void setContext(ActionContext context) {
super.setContext(context);
if (fSearchGroup != null) {
fSearchGroup.setContext(context);
}
}
/*
* @see org.eclipse.ui.actions.ActionGroup#updateActionBars()
*/
public void updateActionBars() {
if (fSearchGroup != null) {
fSearchGroup.updateActionBars();
}
}
}

View file

@ -0,0 +1,65 @@
/*******************************************************************************
* Copyright (c) 2006 Wind River Systems, Inc. and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Anton Leherbauer (Wind River Systems) - initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.internal.ui.navigator;
import org.eclipse.jface.util.IPropertyChangeListener;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.IMemento;
import org.eclipse.ui.IWorkingSet;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.actions.WorkingSetFilterActionGroup;
/**
* A Common Navigator adapted <code>WorkingSetFilterActionGroup</code> adding persistency.
*
* @see org.eclipse.ui.actions.WorkingSetFilterActionGroup
*/
public class CNavigatorWorkingSetActionGroup extends WorkingSetFilterActionGroup {
private static final String TAG_WORKING_SET_NAME= "workingSetName"; //$NON-NLS-1$
/**
* Create a new working set filter action group.
* @param shell
* @param workingSetUpdater
*/
public CNavigatorWorkingSetActionGroup(Shell shell, IPropertyChangeListener workingSetUpdater) {
super(shell, workingSetUpdater);
}
/**
* Saves the state of the filter actions in a memento.
*
* @param memento the memento
*/
public void saveState(IMemento memento) {
String workingSetName= ""; //$NON-NLS-1$
IWorkingSet workingSet= getWorkingSet();
if (workingSet != null) {
workingSetName= workingSet.getName();
}
memento.putString(TAG_WORKING_SET_NAME, workingSetName);
}
/**
* Restores the state of the filter actions from a memento.
* <p>
* Note: This method does not refresh the viewer.
* </p>
* @param memento
*/
public void restoreState(IMemento memento) {
String workingSetName= memento.getString(TAG_WORKING_SET_NAME);
IWorkingSet workingSet= PlatformUI.getWorkbench().getWorkingSetManager().getWorkingSet(workingSetName);
setWorkingSet(workingSet);
}
}

View file

@ -0,0 +1,138 @@
/*******************************************************************************
* Copyright (c) 2006 Wind River Systems, Inc. and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Anton Leherbauer (Wind River Systems) - initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.internal.ui.navigator;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.Separator;
import org.eclipse.jface.util.IPropertyChangeListener;
import org.eclipse.jface.util.PropertyChangeEvent;
import org.eclipse.jface.viewers.StructuredViewer;
import org.eclipse.ui.IActionBars;
import org.eclipse.ui.IMemento;
import org.eclipse.ui.IViewPart;
import org.eclipse.ui.IWorkingSet;
import org.eclipse.ui.ResourceWorkingSetFilter;
import org.eclipse.ui.actions.ActionContext;
import org.eclipse.ui.actions.WorkingSetFilterActionGroup;
import org.eclipse.ui.navigator.CommonActionProvider;
import org.eclipse.ui.navigator.ICommonActionExtensionSite;
import org.eclipse.ui.navigator.ICommonViewerWorkbenchSite;
/**
* A Common Navigator action provider adding standard working set filter support.
*
* @see CNavigatorWorkingSetActionGroup
* @see org.eclipse.cdt.internal.ui.workingsets.WorkingSetFilter
*/
public class CNavigatorWorkingSetActionProvider extends CommonActionProvider {
private CNavigatorWorkingSetActionGroup fWorkingSetGroup;
private ResourceWorkingSetFilter fWorkingSetFilter;
private boolean fContributed;
/*
* @see org.eclipse.ui.actions.ActionGroup#fillActionBars(org.eclipse.ui.IActionBars)
*/
public void fillActionBars(IActionBars actionBars) {
if(fWorkingSetGroup != null && !fContributed) {
// contribute only once to action bars
fContributed= true;
// add an extra separator before the working set filter actions
// TLETODO [CN] add working set filter actions on top of the menu
actionBars.getMenuManager().add(new Separator());
fWorkingSetGroup.fillActionBars(actionBars);
}
}
/*
* @see org.eclipse.ui.actions.ActionGroup#fillContextMenu(org.eclipse.jface.action.IMenuManager)
*/
public void fillContextMenu(IMenuManager menu) {
if (fWorkingSetGroup != null) {
fWorkingSetGroup.fillContextMenu(menu);
}
}
/*
* @see org.eclipse.ui.navigator.CommonActionProvider#init(org.eclipse.ui.navigator.ICommonActionExtensionSite)
*/
public void init(ICommonActionExtensionSite site) {
super.init(site);
ICommonViewerWorkbenchSite workbenchSite= null;
if (site.getViewSite() instanceof ICommonViewerWorkbenchSite) {
workbenchSite= (ICommonViewerWorkbenchSite) site.getViewSite();
}
if (workbenchSite != null) {
if (workbenchSite.getPart() != null && workbenchSite.getPart() instanceof IViewPart) {
final StructuredViewer viewer= site.getStructuredViewer();
fWorkingSetFilter= new ResourceWorkingSetFilter();
viewer.addFilter(fWorkingSetFilter);
IPropertyChangeListener workingSetUpdater= new IPropertyChangeListener() {
public void propertyChange(PropertyChangeEvent event) {
String property= event.getProperty();
if (WorkingSetFilterActionGroup.CHANGE_WORKING_SET.equals(property)) {
Object newValue= event.getNewValue();
if (newValue instanceof IWorkingSet) {
fWorkingSetFilter.setWorkingSet((IWorkingSet) newValue);
viewer.refresh();
} else if (newValue == null) {
fWorkingSetFilter.setWorkingSet(null);
viewer.refresh();
}
}
}};
fWorkingSetGroup= new CNavigatorWorkingSetActionGroup(workbenchSite.getShell(), workingSetUpdater);
}
}
}
/*
* @see org.eclipse.ui.actions.ActionGroup#setContext(org.eclipse.ui.actions.ActionContext)
*/
public void setContext(ActionContext context) {
super.setContext(context);
if (fWorkingSetGroup != null) {
fWorkingSetGroup.setContext(context);
}
}
/*
* @see org.eclipse.ui.navigator.CommonActionProvider#restoreState(org.eclipse.ui.IMemento)
*/
public void restoreState(IMemento memento) {
super.restoreState(memento);
if (fWorkingSetGroup != null && memento != null) {
fWorkingSetGroup.restoreState(memento);
}
}
/*
* @see org.eclipse.ui.navigator.CommonActionProvider#saveState(org.eclipse.ui.IMemento)
*/
public void saveState(IMemento memento) {
super.saveState(memento);
if (fWorkingSetGroup != null && memento != null) {
fWorkingSetGroup.saveState(memento);
}
}
/*
* @see org.eclipse.ui.actions.ActionGroup#dispose()
*/
public void dispose() {
if (fWorkingSetGroup != null) {
fWorkingSetGroup.dispose();
fWorkingSetGroup= null;
}
super.dispose();
}
}

View file

@ -0,0 +1,72 @@
/*******************************************************************************
* Copyright (c) 2006 Wind River Systems, Inc. and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Anton Leherbauer (Wind River Systems) - initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.internal.ui.navigator;
import org.eclipse.cdt.core.model.ICElement;
import org.eclipse.cdt.core.model.ISourceReference;
import org.eclipse.cdt.internal.ui.util.EditorUtility;
import org.eclipse.cdt.ui.CUIPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.actions.OpenFileAction;
/**
* Open an editor and navigate to the source location of
* the currently selected <code>ICElement</code>.
* In case of multiple selections, opening is delegated to
* the base class {@link OpenFileAction}.
*/
public class OpenCElementAction extends OpenFileAction {
private ICElement fOpenElement;
/**
* @param page
*/
public OpenCElementAction(IWorkbenchPage page) {
super(page);
}
/*
* @see org.eclipse.ui.actions.OpenSystemEditorAction#run()
*/
public void run() {
if (fOpenElement != null) {
IEditorPart part;
try {
part= EditorUtility.openInEditor(fOpenElement);
if (fOpenElement instanceof ISourceReference) {
EditorUtility.revealInEditor(part, (ICElement)fOpenElement);
}
} catch (CoreException exc) {
CUIPlugin.getDefault().log(exc.getStatus());
}
} else {
super.run();
}
}
/*
* @see org.eclipse.ui.actions.OpenSystemEditorAction#updateSelection(org.eclipse.jface.viewers.IStructuredSelection)
*/
protected boolean updateSelection(IStructuredSelection selection) {
fOpenElement = null;
if (selection.size() == 1) {
Object element = selection.getFirstElement();
if (element instanceof ICElement && element instanceof ISourceReference) {
fOpenElement = (ICElement)element;
}
}
return fOpenElement != null || super.updateSelection(selection);
}
}

View file

@ -42,8 +42,6 @@ public class DeclarationsSearchGroup extends ActionGroup {
private FindDeclarationsProjectAction fFindDeclarationsProjectAction;
private FindDeclarationsInWorkingSetAction fFindDeclarationsInWorkingSetAction;
private ArrayList actions;
public DeclarationsSearchGroup(IWorkbenchSite site) {
fFindDeclarationsAction= new FindDeclarationsAction(site);
fFindDeclarationsProjectAction = new FindDeclarationsProjectAction(site);
@ -81,9 +79,9 @@ public class DeclarationsSearchGroup extends ActionGroup {
if (fEditor != null){
menu.appendToGroup(ITextEditorActionConstants.GROUP_FIND, declarationsMenu);
} else {
incomingMenu.appendToGroup(IContextMenuConstants.GROUP_SEARCH, declarationsMenu);
}
incomingMenu.add(declarationsMenu);
incomingMenu = declarationsMenu;
FindAction[] actions = getWorkingSetActions();

View file

@ -73,13 +73,10 @@ public class ReferencesSearchGroup extends ActionGroup {
if (fEditor != null){
menu.appendToGroup(ITextEditorActionConstants.GROUP_FIND, refsMenu);
} else {
incomingMenu.appendToGroup(IContextMenuConstants.GROUP_SEARCH, refsMenu);
}
// /setReferenceMenuEnabled();
incomingMenu.add(refsMenu);
incomingMenu = refsMenu;
FindAction[] actions = getWorkingSetActions();