mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-08-04 14:55:41 +02:00
Fix for 172144, defines context for CDT-Views to enable kbd-shortcuts.
This commit is contained in:
parent
50c791143e
commit
c22550e30e
11 changed files with 504 additions and 31 deletions
|
@ -373,3 +373,7 @@ TextProposalCategory= &Word Proposals
|
||||||
SpecificContentAssist.name= C/C++ Content Assist
|
SpecificContentAssist.name= C/C++ Content Assist
|
||||||
SpecificContentAssist.desc= A parameterizable command that invokes content assist with a single completion proposal category
|
SpecificContentAssist.desc= A parameterizable command that invokes content assist with a single completion proposal category
|
||||||
SpecificContentAssist.param= type
|
SpecificContentAssist.param= type
|
||||||
|
|
||||||
|
# CView context
|
||||||
|
cViewScope.name = In C/C++ Views
|
||||||
|
cViewScope.description = In C/C++ Views
|
||||||
|
|
|
@ -913,8 +913,15 @@
|
||||||
id="org.eclipse.cdt.ui.cEditorScope">
|
id="org.eclipse.cdt.ui.cEditorScope">
|
||||||
</context>
|
</context>
|
||||||
</extension>
|
</extension>
|
||||||
<extension
|
<extension point="org.eclipse.ui.contexts">
|
||||||
point="org.eclipse.ui.bindings">
|
<context
|
||||||
|
name="%cViewScope.name"
|
||||||
|
description="%cViewScope.description"
|
||||||
|
id="org.eclipse.cdt.ui.cViewScope"
|
||||||
|
parentId="org.eclipse.ui.contexts.window"
|
||||||
|
/>
|
||||||
|
</extension>
|
||||||
|
<extension point="org.eclipse.ui.bindings">
|
||||||
<!-- win32: M1=CTRL, M2=SHIFT, M3=ALT, M4=-
|
<!-- win32: M1=CTRL, M2=SHIFT, M3=ALT, M4=-
|
||||||
carbon: M1=COMMAND, M2=SHIFT, M3=ALT, M4=CTRL -->
|
carbon: M1=COMMAND, M2=SHIFT, M3=ALT, M4=CTRL -->
|
||||||
<key
|
<key
|
||||||
|
@ -947,16 +954,27 @@
|
||||||
contextId="org.eclipse.cdt.ui.cEditorScope"
|
contextId="org.eclipse.cdt.ui.cEditorScope"
|
||||||
commandId="org.eclipse.cdt.ui.edit.open.call.hierarchy"
|
commandId="org.eclipse.cdt.ui.edit.open.call.hierarchy"
|
||||||
schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"/>
|
schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"/>
|
||||||
|
<key
|
||||||
|
sequence="M1+M3+H"
|
||||||
|
contextId="org.eclipse.cdt.ui.cViewScope"
|
||||||
|
commandId="org.eclipse.cdt.ui.edit.open.call.hierarchy"
|
||||||
|
schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"/>
|
||||||
|
<!--removed, see bug 167162
|
||||||
<key
|
<key
|
||||||
sequence="M1+F3"
|
sequence="M1+F3"
|
||||||
contextId="org.eclipse.cdt.ui.cEditorScope"
|
contextId="org.eclipse.cdt.ui.cEditorScope"
|
||||||
commandId="org.eclipse.cdt.ui.edit.opendef"
|
commandId="org.eclipse.cdt.ui.edit.opendef"
|
||||||
schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"/>
|
schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"/-->
|
||||||
<key
|
<key
|
||||||
sequence="F3"
|
sequence="F3"
|
||||||
contextId="org.eclipse.cdt.ui.cEditorScope"
|
contextId="org.eclipse.cdt.ui.cEditorScope"
|
||||||
commandId="org.eclipse.cdt.ui.edit.opendecl"
|
commandId="org.eclipse.cdt.ui.edit.opendecl"
|
||||||
schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"/>
|
schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"/>
|
||||||
|
<key
|
||||||
|
sequence="F3"
|
||||||
|
contextId="org.eclipse.cdt.ui.cViewScope"
|
||||||
|
commandId="org.eclipse.cdt.ui.edit.opendecl"
|
||||||
|
schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"/>
|
||||||
<key
|
<key
|
||||||
sequence="M1+M2+T"
|
sequence="M1+M2+T"
|
||||||
contextId="org.eclipse.cdt.ui.cEditorScope"
|
contextId="org.eclipse.cdt.ui.cEditorScope"
|
||||||
|
@ -967,16 +985,31 @@
|
||||||
sequence="M1+M2+G"
|
sequence="M1+M2+G"
|
||||||
contextId="org.eclipse.cdt.ui.cEditorScope"
|
contextId="org.eclipse.cdt.ui.cEditorScope"
|
||||||
schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"/>
|
schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"/>
|
||||||
|
<key
|
||||||
|
commandId="org.eclipse.cdt.ui.search.findrefs"
|
||||||
|
sequence="M1+M2+G"
|
||||||
|
contextId="org.eclipse.cdt.ui.cViewScope"
|
||||||
|
schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"/>
|
||||||
<key
|
<key
|
||||||
commandId="org.eclipse.cdt.ui.search.finddecl"
|
commandId="org.eclipse.cdt.ui.search.finddecl"
|
||||||
sequence="M1+G"
|
sequence="M1+G"
|
||||||
contextId="org.eclipse.cdt.ui.cEditorScope"
|
contextId="org.eclipse.cdt.ui.cEditorScope"
|
||||||
schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"/>
|
schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"/>
|
||||||
|
<key
|
||||||
|
commandId="org.eclipse.cdt.ui.search.finddecl"
|
||||||
|
sequence="M1+G"
|
||||||
|
contextId="org.eclipse.cdt.ui.cViewScope"
|
||||||
|
schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"/>
|
||||||
<key
|
<key
|
||||||
sequence="F4"
|
sequence="F4"
|
||||||
contextId="org.eclipse.cdt.ui.cEditorScope"
|
contextId="org.eclipse.cdt.ui.cEditorScope"
|
||||||
commandId="org.eclipse.cdt.ui.edit.open.type.hierarchy"
|
commandId="org.eclipse.cdt.ui.edit.open.type.hierarchy"
|
||||||
schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"/>
|
schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"/>
|
||||||
|
<key
|
||||||
|
sequence="F4"
|
||||||
|
contextId="org.eclipse.cdt.ui.cViewScope"
|
||||||
|
commandId="org.eclipse.cdt.ui.edit.open.type.hierarchy"
|
||||||
|
schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"/>
|
||||||
<!--key
|
<!--key
|
||||||
sequence="M1+M2+H"
|
sequence="M1+M2+H"
|
||||||
contextId="org.eclipse.cdt.ui.cEditorScope"
|
contextId="org.eclipse.cdt.ui.cEditorScope"
|
||||||
|
@ -1626,6 +1659,13 @@
|
||||||
<instanceof value="org.eclipse.cdt.core.model.ICElement"/>
|
<instanceof value="org.eclipse.cdt.core.model.ICElement"/>
|
||||||
</enablement>
|
</enablement>
|
||||||
</actionProvider>
|
</actionProvider>
|
||||||
|
<actionProvider
|
||||||
|
class="org.eclipse.cdt.internal.ui.navigator.CNavigatorOpenViewActionProvider"
|
||||||
|
id="org.eclipse.cdt.ui.navigator.actions.open.view">
|
||||||
|
<enablement>
|
||||||
|
<instanceof value="org.eclipse.cdt.core.model.ICElement"/>
|
||||||
|
</enablement>
|
||||||
|
</actionProvider>
|
||||||
<actionProvider
|
<actionProvider
|
||||||
class="org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionProvider"
|
class="org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionProvider"
|
||||||
id="org.eclipse.cdt.ui.navigator.actions.edit"
|
id="org.eclipse.cdt.ui.navigator.actions.edit"
|
||||||
|
@ -1768,5 +1808,4 @@
|
||||||
class="org.eclipse.cdt.internal.ui.navigator.CNavigatorDragAdapterAssistant"
|
class="org.eclipse.cdt.internal.ui.navigator.CNavigatorDragAdapterAssistant"
|
||||||
viewerId="org.eclipse.ui.navigator.ProjectExplorer"/>
|
viewerId="org.eclipse.ui.navigator.ProjectExplorer"/>
|
||||||
</extension>
|
</extension>
|
||||||
|
|
||||||
</plugin>
|
</plugin>
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Copyright (c) 2006 Wind River Systems, Inc. and others.
|
* Copyright (c) 2006, 2007 Wind River Systems, Inc. and others.
|
||||||
* All rights reserved. This program and the accompanying materials
|
* All rights reserved. This program and the accompanying materials
|
||||||
* are made available under the terms of the Eclipse Public License v1.0
|
* are made available under the terms of the Eclipse Public License v1.0
|
||||||
* which accompanies this distribution, and is available at
|
* which accompanies this distribution, and is available at
|
||||||
|
@ -53,6 +53,8 @@ import org.eclipse.ui.IWorkbenchPartSite;
|
||||||
import org.eclipse.ui.IWorkingSet;
|
import org.eclipse.ui.IWorkingSet;
|
||||||
import org.eclipse.ui.PartInitException;
|
import org.eclipse.ui.PartInitException;
|
||||||
import org.eclipse.ui.actions.ActionFactory;
|
import org.eclipse.ui.actions.ActionFactory;
|
||||||
|
import org.eclipse.ui.contexts.IContextActivation;
|
||||||
|
import org.eclipse.ui.contexts.IContextService;
|
||||||
import org.eclipse.ui.part.PageBook;
|
import org.eclipse.ui.part.PageBook;
|
||||||
import org.eclipse.ui.part.ViewPart;
|
import org.eclipse.ui.part.ViewPart;
|
||||||
|
|
||||||
|
@ -130,6 +132,7 @@ public class CHViewPart extends ViewPart {
|
||||||
private OpenViewActionGroup fOpenViewActionGroup;
|
private OpenViewActionGroup fOpenViewActionGroup;
|
||||||
private SelectionSearchGroup fSelectionSearchGroup;
|
private SelectionSearchGroup fSelectionSearchGroup;
|
||||||
private CRefactoringActionGroup fRefactoringActionGroup;
|
private CRefactoringActionGroup fRefactoringActionGroup;
|
||||||
|
private IContextActivation fContextActivation;
|
||||||
|
|
||||||
|
|
||||||
public void setFocus() {
|
public void setFocus() {
|
||||||
|
@ -190,9 +193,21 @@ public class CHViewPart extends ViewPart {
|
||||||
setMessage(CHMessages.CHViewPart_emptyPageMessage);
|
setMessage(CHMessages.CHViewPart_emptyPageMessage);
|
||||||
|
|
||||||
initializeActionStates();
|
initializeActionStates();
|
||||||
|
|
||||||
|
IContextService ctxService = (IContextService) getSite().getService(IContextService.class);
|
||||||
|
if (ctxService != null) {
|
||||||
|
fContextActivation= ctxService.activateContext(CUIPlugin.CVIEWS_SCOPE);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void dispose() {
|
public void dispose() {
|
||||||
|
if (fContextActivation != null) {
|
||||||
|
IContextService ctxService = (IContextService)getSite().getService(IContextService.class);
|
||||||
|
if (ctxService != null) {
|
||||||
|
ctxService.deactivateContext(fContextActivation);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (fOpenViewActionGroup != null) {
|
if (fOpenViewActionGroup != null) {
|
||||||
fOpenViewActionGroup.dispose();
|
fOpenViewActionGroup.dispose();
|
||||||
fOpenViewActionGroup= null;
|
fOpenViewActionGroup= null;
|
||||||
|
@ -310,6 +325,8 @@ public class CHViewPart extends ViewPart {
|
||||||
private void createActions() {
|
private void createActions() {
|
||||||
// action gruops
|
// action gruops
|
||||||
fOpenViewActionGroup= new OpenViewActionGroup(this);
|
fOpenViewActionGroup= new OpenViewActionGroup(this);
|
||||||
|
fOpenViewActionGroup.setSuppressCallHierarchy(true);
|
||||||
|
fOpenViewActionGroup.setSuppressProperties(true);
|
||||||
fSelectionSearchGroup= new SelectionSearchGroup(getSite());
|
fSelectionSearchGroup= new SelectionSearchGroup(getSite());
|
||||||
fRefactoringActionGroup= new CRefactoringActionGroup(this);
|
fRefactoringActionGroup= new CRefactoringActionGroup(this);
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Copyright (c) 2000, 2006 QNX Software Systems and others.
|
* Copyright (c) 2000, 2007 QNX Software Systems and others.
|
||||||
* All rights reserved. This program and the accompanying materials
|
* All rights reserved. This program and the accompanying materials
|
||||||
* are made available under the terms of the Eclipse Public License v1.0
|
* are made available under the terms of the Eclipse Public License v1.0
|
||||||
* which accompanies this distribution, and is available at
|
* which accompanies this distribution, and is available at
|
||||||
|
@ -68,6 +68,8 @@ import org.eclipse.ui.IWorkingSetManager;
|
||||||
import org.eclipse.ui.PartInitException;
|
import org.eclipse.ui.PartInitException;
|
||||||
import org.eclipse.ui.ResourceWorkingSetFilter;
|
import org.eclipse.ui.ResourceWorkingSetFilter;
|
||||||
import org.eclipse.ui.actions.ActionContext;
|
import org.eclipse.ui.actions.ActionContext;
|
||||||
|
import org.eclipse.ui.contexts.IContextActivation;
|
||||||
|
import org.eclipse.ui.contexts.IContextService;
|
||||||
import org.eclipse.ui.model.IWorkbenchAdapter;
|
import org.eclipse.ui.model.IWorkbenchAdapter;
|
||||||
import org.eclipse.ui.part.ISetSelectionTarget;
|
import org.eclipse.ui.part.ISetSelectionTarget;
|
||||||
import org.eclipse.ui.part.IShowInSource;
|
import org.eclipse.ui.part.IShowInSource;
|
||||||
|
@ -239,6 +241,7 @@ public class CView extends ViewPart implements ISetSelectionTarget, IPropertyCha
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
private IContextActivation fContextActivation;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handles an open event from the viewer.
|
* Handles an open event from the viewer.
|
||||||
|
@ -576,7 +579,11 @@ public class CView extends ViewPart implements ISetSelectionTarget, IPropertyCha
|
||||||
}
|
}
|
||||||
memento = null;
|
memento = null;
|
||||||
|
|
||||||
}
|
IContextService ctxService = (IContextService) getSite().getService(IContextService.class);
|
||||||
|
if (ctxService != null) {
|
||||||
|
fContextActivation= ctxService.activateContext(CUIPlugin.CVIEWS_SCOPE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
protected ProblemTreeViewer createViewer(Composite parent) {
|
protected ProblemTreeViewer createViewer(Composite parent) {
|
||||||
return new RemoteTreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
|
return new RemoteTreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
|
||||||
|
@ -598,6 +605,13 @@ public class CView extends ViewPart implements ISetSelectionTarget, IPropertyCha
|
||||||
* (non-Javadoc) Method declared on IWorkbenchPart.
|
* (non-Javadoc) Method declared on IWorkbenchPart.
|
||||||
*/
|
*/
|
||||||
public void dispose() {
|
public void dispose() {
|
||||||
|
if (fContextActivation != null) {
|
||||||
|
IContextService ctxService = (IContextService)getSite().getService(IContextService.class);
|
||||||
|
if (ctxService != null) {
|
||||||
|
ctxService.deactivateContext(fContextActivation);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
getSite().getPage().removePartListener(partListener);
|
getSite().getPage().removePartListener(partListener);
|
||||||
CUIPlugin.getDefault().getPreferenceStore().removePropertyChangeListener(this);
|
CUIPlugin.getDefault().getPreferenceStore().removePropertyChangeListener(this);
|
||||||
if (viewer != null) {
|
if (viewer != null) {
|
||||||
|
|
|
@ -82,6 +82,7 @@ public interface ICEditorActionDefinitionIds extends ITextEditorActionDefinition
|
||||||
/**
|
/**
|
||||||
* Action definition ID of the open definition action
|
* Action definition ID of the open definition action
|
||||||
* (value <code>"org.eclipse.cdt.ui.edit.opendef"</code>).
|
* (value <code>"org.eclipse.cdt.ui.edit.opendef"</code>).
|
||||||
|
* @deprecated see bug 167162
|
||||||
*/
|
*/
|
||||||
public static final String OPEN_DEF= "org.eclipse.cdt.ui.edit.opendef"; //$NON-NLS-1$
|
public static final String OPEN_DEF= "org.eclipse.cdt.ui.edit.opendef"; //$NON-NLS-1$
|
||||||
|
|
||||||
|
|
|
@ -61,6 +61,8 @@ import org.eclipse.ui.PartInitException;
|
||||||
import org.eclipse.ui.actions.ActionFactory;
|
import org.eclipse.ui.actions.ActionFactory;
|
||||||
import org.eclipse.ui.actions.ContributionItemFactory;
|
import org.eclipse.ui.actions.ContributionItemFactory;
|
||||||
import org.eclipse.ui.actions.OpenFileAction;
|
import org.eclipse.ui.actions.OpenFileAction;
|
||||||
|
import org.eclipse.ui.contexts.IContextActivation;
|
||||||
|
import org.eclipse.ui.contexts.IContextService;
|
||||||
import org.eclipse.ui.part.IShowInSource;
|
import org.eclipse.ui.part.IShowInSource;
|
||||||
import org.eclipse.ui.part.IShowInTarget;
|
import org.eclipse.ui.part.IShowInTarget;
|
||||||
import org.eclipse.ui.part.IShowInTargetList;
|
import org.eclipse.ui.part.IShowInTargetList;
|
||||||
|
@ -133,6 +135,8 @@ public class IBViewPart extends ViewPart
|
||||||
private Action fPreviousAction;
|
private Action fPreviousAction;
|
||||||
private Action fRefreshAction;
|
private Action fRefreshAction;
|
||||||
private Action fHistoryAction;
|
private Action fHistoryAction;
|
||||||
|
private IContextActivation fContextActivation;
|
||||||
|
private WorkingSetFilterUI fWorkingSetFilterUI;
|
||||||
|
|
||||||
|
|
||||||
public void setFocus() {
|
public void setFocus() {
|
||||||
|
@ -215,8 +219,25 @@ public class IBViewPart extends ViewPart
|
||||||
initializeActionStates();
|
initializeActionStates();
|
||||||
restoreInput();
|
restoreInput();
|
||||||
fMemento= null;
|
fMemento= null;
|
||||||
|
|
||||||
|
IContextService ctxService = (IContextService) getSite().getService(IContextService.class);
|
||||||
|
if (ctxService != null) {
|
||||||
|
fContextActivation= ctxService.activateContext(CUIPlugin.CVIEWS_SCOPE);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void dispose() {
|
||||||
|
if (fContextActivation != null) {
|
||||||
|
IContextService ctxService = (IContextService)getSite().getService(IContextService.class);
|
||||||
|
if (ctxService != null) {
|
||||||
|
ctxService.deactivateContext(fContextActivation);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (fWorkingSetFilterUI != null) {
|
||||||
|
fWorkingSetFilterUI.dispose();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void initializeActionStates() {
|
private void initializeActionStates() {
|
||||||
boolean includedBy= true;
|
boolean includedBy= true;
|
||||||
boolean filterSystem= false;
|
boolean filterSystem= false;
|
||||||
|
@ -348,7 +369,7 @@ public class IBViewPart extends ViewPart
|
||||||
}
|
}
|
||||||
|
|
||||||
private void createActions() {
|
private void createActions() {
|
||||||
WorkingSetFilterUI wsFilterUI= new WorkingSetFilterUI(this, fMemento, KEY_WORKING_SET_FILTER) {
|
fWorkingSetFilterUI= new WorkingSetFilterUI(this, fMemento, KEY_WORKING_SET_FILTER) {
|
||||||
protected void onWorkingSetChange() {
|
protected void onWorkingSetChange() {
|
||||||
updateWorkingSetFilter(this);
|
updateWorkingSetFilter(this);
|
||||||
}
|
}
|
||||||
|
@ -506,7 +527,7 @@ public class IBViewPart extends ViewPart
|
||||||
// tm.add(fNext);
|
// tm.add(fNext);
|
||||||
// tm.add(fPrevious);
|
// tm.add(fPrevious);
|
||||||
// tm.add(new Separator());
|
// tm.add(new Separator());
|
||||||
wsFilterUI.fillActionBars(actionBars);
|
fWorkingSetFilterUI.fillActionBars(actionBars);
|
||||||
mm.add(fIncludedByAction);
|
mm.add(fIncludedByAction);
|
||||||
mm.add(fIncludesToAction);
|
mm.add(fIncludesToAction);
|
||||||
mm.add(new Separator());
|
mm.add(new Separator());
|
||||||
|
|
|
@ -0,0 +1,96 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* Copyright (c) 2007 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:
|
||||||
|
* Markus Schorn - initial API and implementation
|
||||||
|
*******************************************************************************/
|
||||||
|
|
||||||
|
package org.eclipse.cdt.internal.ui.navigator;
|
||||||
|
|
||||||
|
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;
|
||||||
|
|
||||||
|
import org.eclipse.cdt.ui.actions.OpenViewActionGroup;
|
||||||
|
|
||||||
|
import org.eclipse.cdt.internal.ui.search.actions.SelectionSearchGroup;
|
||||||
|
|
||||||
|
public class CNavigatorOpenViewActionProvider extends CommonActionProvider {
|
||||||
|
|
||||||
|
private OpenViewActionGroup fOpenViewActionGroup;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @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) {
|
||||||
|
fOpenViewActionGroup= new OpenViewActionGroup(workbenchSite.getPart());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @see org.eclipse.ui.actions.ActionGroup#dispose()
|
||||||
|
*/
|
||||||
|
public void dispose() {
|
||||||
|
if (fOpenViewActionGroup != null) {
|
||||||
|
fOpenViewActionGroup.dispose();
|
||||||
|
fOpenViewActionGroup = null;
|
||||||
|
}
|
||||||
|
super.dispose();
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @see org.eclipse.ui.actions.ActionGroup#fillActionBars(org.eclipse.ui.IActionBars)
|
||||||
|
*/
|
||||||
|
public void fillActionBars(IActionBars actionBars) {
|
||||||
|
if (fOpenViewActionGroup != null) {
|
||||||
|
fOpenViewActionGroup.fillActionBars(actionBars);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @see org.eclipse.ui.actions.ActionGroup#fillContextMenu(org.eclipse.jface.action.IMenuManager)
|
||||||
|
*/
|
||||||
|
public void fillContextMenu(IMenuManager menu) {
|
||||||
|
if (fOpenViewActionGroup != null) {
|
||||||
|
ISelection selection = getContext().getSelection();
|
||||||
|
if (SelectionSearchGroup.canActionBeAdded(selection)){
|
||||||
|
fOpenViewActionGroup.fillContextMenu(menu);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @see org.eclipse.ui.actions.ActionGroup#setContext(org.eclipse.ui.actions.ActionContext)
|
||||||
|
*/
|
||||||
|
public void setContext(ActionContext context) {
|
||||||
|
super.setContext(context);
|
||||||
|
if (fOpenViewActionGroup != null) {
|
||||||
|
fOpenViewActionGroup.setContext(context);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @see org.eclipse.ui.actions.ActionGroup#updateActionBars()
|
||||||
|
*/
|
||||||
|
public void updateActionBars() {
|
||||||
|
if (fOpenViewActionGroup != null) {
|
||||||
|
fOpenViewActionGroup.updateActionBars();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -65,6 +65,8 @@ import org.eclipse.ui.IWorkbenchPartSite;
|
||||||
import org.eclipse.ui.IWorkingSet;
|
import org.eclipse.ui.IWorkingSet;
|
||||||
import org.eclipse.ui.PartInitException;
|
import org.eclipse.ui.PartInitException;
|
||||||
import org.eclipse.ui.actions.ActionFactory;
|
import org.eclipse.ui.actions.ActionFactory;
|
||||||
|
import org.eclipse.ui.contexts.IContextActivation;
|
||||||
|
import org.eclipse.ui.contexts.IContextService;
|
||||||
import org.eclipse.ui.part.PageBook;
|
import org.eclipse.ui.part.PageBook;
|
||||||
import org.eclipse.ui.part.ViewPart;
|
import org.eclipse.ui.part.ViewPart;
|
||||||
import org.eclipse.ui.progress.IWorkbenchSiteProgressService;
|
import org.eclipse.ui.progress.IWorkbenchSiteProgressService;
|
||||||
|
@ -177,6 +179,7 @@ public class THViewPart extends ViewPart implements ITHModelPresenter {
|
||||||
private OpenViewActionGroup fOpenViewActionGroup;
|
private OpenViewActionGroup fOpenViewActionGroup;
|
||||||
private SelectionSearchGroup fSelectionSearchGroup;
|
private SelectionSearchGroup fSelectionSearchGroup;
|
||||||
private CRefactoringActionGroup fRefactoringActionGroup;
|
private CRefactoringActionGroup fRefactoringActionGroup;
|
||||||
|
private IContextActivation fContextActivation;
|
||||||
|
|
||||||
public void setFocus() {
|
public void setFocus() {
|
||||||
fPagebook.setFocus();
|
fPagebook.setFocus();
|
||||||
|
@ -222,16 +225,21 @@ public class THViewPart extends ViewPart implements ITHModelPresenter {
|
||||||
|
|
||||||
setMessage(Messages.THViewPart_instruction);
|
setMessage(Messages.THViewPart_instruction);
|
||||||
initializeActionStates();
|
initializeActionStates();
|
||||||
|
|
||||||
|
IContextService ctxService = (IContextService) getSite().getService(IContextService.class);
|
||||||
|
if (ctxService != null) {
|
||||||
|
fContextActivation= ctxService.activateContext(CUIPlugin.CVIEWS_SCOPE);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initSelectionProvider() {
|
|
||||||
SelectionProviderMediator mediator= new SelectionProviderMediator();
|
|
||||||
mediator.addViewer(fHierarchyTreeViewer);
|
|
||||||
mediator.addViewer(fMemberViewer);
|
|
||||||
getSite().setSelectionProvider(new AdaptingSelectionProvider(ICElement.class, mediator));
|
|
||||||
}
|
|
||||||
|
|
||||||
public void dispose() {
|
public void dispose() {
|
||||||
|
if (fContextActivation != null) {
|
||||||
|
IContextService ctxService = (IContextService)getSite().getService(IContextService.class);
|
||||||
|
if (ctxService != null) {
|
||||||
|
ctxService.deactivateContext(fContextActivation);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (fOpenViewActionGroup != null) {
|
if (fOpenViewActionGroup != null) {
|
||||||
fOpenViewActionGroup.dispose();
|
fOpenViewActionGroup.dispose();
|
||||||
fOpenViewActionGroup= null;
|
fOpenViewActionGroup= null;
|
||||||
|
@ -251,6 +259,13 @@ public class THViewPart extends ViewPart implements ITHModelPresenter {
|
||||||
super.dispose();
|
super.dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void initSelectionProvider() {
|
||||||
|
SelectionProviderMediator mediator= new SelectionProviderMediator();
|
||||||
|
mediator.addViewer(fHierarchyTreeViewer);
|
||||||
|
mediator.addViewer(fMemberViewer);
|
||||||
|
getSite().setSelectionProvider(new AdaptingSelectionProvider(ICElement.class, mediator));
|
||||||
|
}
|
||||||
|
|
||||||
private void initializeActionStates() {
|
private void initializeActionStates() {
|
||||||
int mode= THHierarchyModel.TYPE_HIERARCHY;
|
int mode= THHierarchyModel.TYPE_HIERARCHY;
|
||||||
int orientation= ORIENTATION_AUTOMATIC;
|
int orientation= ORIENTATION_AUTOMATIC;
|
||||||
|
@ -518,6 +533,8 @@ public class THViewPart extends ViewPart implements ITHModelPresenter {
|
||||||
private void createActions() {
|
private void createActions() {
|
||||||
// action gruops
|
// action gruops
|
||||||
fOpenViewActionGroup= new OpenViewActionGroup(this);
|
fOpenViewActionGroup= new OpenViewActionGroup(this);
|
||||||
|
fOpenViewActionGroup.setSuppressTypeHierarchy(true);
|
||||||
|
fOpenViewActionGroup.setSuppressProperties(true);
|
||||||
fSelectionSearchGroup= new SelectionSearchGroup(getSite());
|
fSelectionSearchGroup= new SelectionSearchGroup(getSite());
|
||||||
fRefactoringActionGroup= new CRefactoringActionGroup(this);
|
fRefactoringActionGroup= new CRefactoringActionGroup(this);
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,245 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* Copyright (c) 2007 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:
|
||||||
|
* Markus Schorn - initial API and implementation
|
||||||
|
*******************************************************************************/
|
||||||
|
|
||||||
|
package org.eclipse.cdt.internal.ui.viewsupport;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Iterator;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import org.eclipse.jface.viewers.ISelection;
|
||||||
|
import org.eclipse.jface.viewers.ISelectionChangedListener;
|
||||||
|
import org.eclipse.jface.viewers.ISelectionProvider;
|
||||||
|
import org.eclipse.jface.viewers.IStructuredSelection;
|
||||||
|
import org.eclipse.jface.viewers.SelectionChangedEvent;
|
||||||
|
import org.eclipse.ui.IPartListener2;
|
||||||
|
import org.eclipse.ui.IWindowListener;
|
||||||
|
import org.eclipse.ui.IWorkbench;
|
||||||
|
import org.eclipse.ui.IWorkbenchPage;
|
||||||
|
import org.eclipse.ui.IWorkbenchPart;
|
||||||
|
import org.eclipse.ui.IWorkbenchPartReference;
|
||||||
|
import org.eclipse.ui.IWorkbenchPartSite;
|
||||||
|
import org.eclipse.ui.IWorkbenchWindow;
|
||||||
|
import org.eclipse.ui.PlatformUI;
|
||||||
|
import org.eclipse.ui.contexts.IContextActivation;
|
||||||
|
import org.eclipse.ui.contexts.IContextService;
|
||||||
|
import org.eclipse.ui.navigator.CommonNavigator;
|
||||||
|
import org.eclipse.ui.part.IPage;
|
||||||
|
import org.eclipse.ui.views.contentoutline.ContentOutline;
|
||||||
|
|
||||||
|
import org.eclipse.cdt.core.model.ICElement;
|
||||||
|
import org.eclipse.cdt.ui.CUIPlugin;
|
||||||
|
|
||||||
|
import org.eclipse.cdt.internal.ui.editor.CContentOutlinePage;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Once registered as windows listener, observes all part activations. Whenever the
|
||||||
|
* CDT outline view is brought to the front, the CDT context is set.
|
||||||
|
*/
|
||||||
|
public class CDTContextActivator implements IWindowListener, IPartListener2 {
|
||||||
|
private static CDTContextActivator sInstance= new CDTContextActivator();
|
||||||
|
|
||||||
|
private Map fActivationPerOutline = new HashMap();
|
||||||
|
private Map fActivationPerNavigator= new HashMap();
|
||||||
|
private Collection fWindows= new HashSet();
|
||||||
|
|
||||||
|
|
||||||
|
private CDTContextActivator() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public static CDTContextActivator getInstance() {
|
||||||
|
return sInstance;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void install() {
|
||||||
|
IWorkbench workbench = PlatformUI.getWorkbench();
|
||||||
|
if (workbench != null) {
|
||||||
|
// listen for new windows
|
||||||
|
workbench.addWindowListener(this);
|
||||||
|
IWorkbenchWindow[] wnds= workbench.getWorkbenchWindows();
|
||||||
|
for (int i = 0; i < wnds.length; i++) {
|
||||||
|
IWorkbenchWindow window = wnds[i];
|
||||||
|
register(window);
|
||||||
|
}
|
||||||
|
// register open windows
|
||||||
|
IWorkbenchWindow ww= PlatformUI.getWorkbench().getActiveWorkbenchWindow();
|
||||||
|
if (ww != null) {
|
||||||
|
IWorkbenchPage activePage = ww.getActivePage();
|
||||||
|
if (activePage != null) {
|
||||||
|
IWorkbenchPartReference part= activePage.getActivePartReference();
|
||||||
|
if (part != null) {
|
||||||
|
partActivated(part);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void uninstall() {
|
||||||
|
for (Iterator iterator = fWindows.iterator(); iterator.hasNext();) {
|
||||||
|
IWorkbenchWindow window = (IWorkbenchWindow) iterator.next();
|
||||||
|
unregister(window);
|
||||||
|
}
|
||||||
|
for (Iterator iterator = fActivationPerNavigator.values().iterator(); iterator.hasNext();) {
|
||||||
|
SelectionListener l= (SelectionListener) iterator.next();
|
||||||
|
l.uninstall();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void register(IWorkbenchWindow wnd) {
|
||||||
|
wnd.getPartService().addPartListener(this);
|
||||||
|
fWindows.add(wnd);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void unregister(IWorkbenchWindow wnd) {
|
||||||
|
wnd.getPartService().removePartListener(this);
|
||||||
|
fWindows.remove(wnd);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void windowOpened(IWorkbenchWindow window) {
|
||||||
|
register(window);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void windowClosed(IWorkbenchWindow window) {
|
||||||
|
unregister(window);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void windowActivated(IWorkbenchWindow window) {
|
||||||
|
}
|
||||||
|
|
||||||
|
public void windowDeactivated(IWorkbenchWindow window) {
|
||||||
|
}
|
||||||
|
|
||||||
|
private void onContentOutlineClosed(ContentOutline outline) {
|
||||||
|
fActivationPerOutline.remove(outline);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void onContentOutlineActivated(ContentOutline outline) {
|
||||||
|
IPage page = outline.getCurrentPage();
|
||||||
|
if (page instanceof CContentOutlinePage) {
|
||||||
|
if (!fActivationPerOutline.containsKey(outline)){
|
||||||
|
// cdt outline activated for the first time
|
||||||
|
IContextService ctxtService = (IContextService)outline.getViewSite().getService(IContextService.class);
|
||||||
|
IContextActivation activateContext = ctxtService.activateContext(CUIPlugin.CVIEWS_SCOPE);
|
||||||
|
fActivationPerOutline.put(outline,activateContext);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
IContextActivation activation = (IContextActivation) fActivationPerOutline.remove(outline);
|
||||||
|
if (activation != null) {
|
||||||
|
// other outline page brought to front
|
||||||
|
IContextService ctxtService = (IContextService)outline.getViewSite().getService(IContextService.class);
|
||||||
|
ctxtService.deactivateContext(activation);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static class SelectionListener implements ISelectionChangedListener {
|
||||||
|
private IWorkbenchPartSite fSite;
|
||||||
|
private IContextService fCtxService;
|
||||||
|
private IContextActivation fActivation;
|
||||||
|
|
||||||
|
public SelectionListener(IWorkbenchPartSite site) {
|
||||||
|
fSite= site;
|
||||||
|
fCtxService= (IContextService)fSite.getService(IContextService.class);
|
||||||
|
ISelectionProvider sp= site.getSelectionProvider();
|
||||||
|
|
||||||
|
if (sp != null && fCtxService != null) {
|
||||||
|
sp.addSelectionChangedListener(this);
|
||||||
|
onNewSelection(sp.getSelection());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void uninstall() {
|
||||||
|
ISelectionProvider sp= fSite.getSelectionProvider();
|
||||||
|
if (sp != null && fCtxService != null) {
|
||||||
|
onNewSelection(null);
|
||||||
|
sp.removeSelectionChangedListener(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void selectionChanged(SelectionChangedEvent event) {
|
||||||
|
onNewSelection(event.getSelection());
|
||||||
|
}
|
||||||
|
|
||||||
|
private void onNewSelection(ISelection selection) {
|
||||||
|
boolean isRelevant= false;
|
||||||
|
if (selection instanceof IStructuredSelection && !selection.isEmpty()) {
|
||||||
|
if (((IStructuredSelection) selection).getFirstElement() instanceof ICElement) {
|
||||||
|
isRelevant = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (isRelevant) {
|
||||||
|
if (fActivation == null) {
|
||||||
|
fActivation= fCtxService.activateContext(CUIPlugin.CVIEWS_SCOPE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (fActivation != null) {
|
||||||
|
fCtxService.deactivateContext(fActivation);
|
||||||
|
fActivation= null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void onCommonNavigatorActivated(CommonNavigator part) {
|
||||||
|
SelectionListener l= (SelectionListener) fActivationPerNavigator.get(part);
|
||||||
|
if (l == null) {
|
||||||
|
l= new SelectionListener(part.getSite());
|
||||||
|
fActivationPerNavigator.put(part, l);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void onCommonNavigatorClosed(CommonNavigator part) {
|
||||||
|
fActivationPerNavigator.remove(part);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void partActivated(IWorkbenchPartReference partRef) {
|
||||||
|
IWorkbenchPart part= partRef.getPart(false);
|
||||||
|
if (part instanceof ContentOutline) {
|
||||||
|
onContentOutlineActivated((ContentOutline) part);
|
||||||
|
}
|
||||||
|
else if (part instanceof CommonNavigator) {
|
||||||
|
onCommonNavigatorActivated((CommonNavigator) part);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void partClosed(IWorkbenchPartReference partRef) {
|
||||||
|
IWorkbenchPart part= partRef.getPart(false);
|
||||||
|
if (part instanceof ContentOutline) {
|
||||||
|
onContentOutlineClosed((ContentOutline)part);
|
||||||
|
}
|
||||||
|
else if (part instanceof CommonNavigator) {
|
||||||
|
onCommonNavigatorClosed((CommonNavigator) part);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void partBroughtToTop(IWorkbenchPartReference partRef) {
|
||||||
|
}
|
||||||
|
|
||||||
|
public void partDeactivated(IWorkbenchPartReference partRef) {
|
||||||
|
}
|
||||||
|
|
||||||
|
public void partOpened(IWorkbenchPartReference partRef) {
|
||||||
|
}
|
||||||
|
|
||||||
|
public void partHidden(IWorkbenchPartReference partRef) {
|
||||||
|
}
|
||||||
|
|
||||||
|
public void partVisible(IWorkbenchPartReference partRef) {
|
||||||
|
}
|
||||||
|
|
||||||
|
public void partInputChanged(IWorkbenchPartReference partRef) {
|
||||||
|
}
|
||||||
|
}
|
|
@ -87,6 +87,7 @@ import org.eclipse.cdt.internal.ui.text.folding.CFoldingStructureProviderRegistr
|
||||||
import org.eclipse.cdt.internal.ui.util.ImageDescriptorRegistry;
|
import org.eclipse.cdt.internal.ui.util.ImageDescriptorRegistry;
|
||||||
import org.eclipse.cdt.internal.ui.util.ProblemMarkerManager;
|
import org.eclipse.cdt.internal.ui.util.ProblemMarkerManager;
|
||||||
import org.eclipse.cdt.internal.ui.util.Util;
|
import org.eclipse.cdt.internal.ui.util.Util;
|
||||||
|
import org.eclipse.cdt.internal.ui.viewsupport.CDTContextActivator;
|
||||||
|
|
||||||
public class CUIPlugin extends AbstractUIPlugin {
|
public class CUIPlugin extends AbstractUIPlugin {
|
||||||
|
|
||||||
|
@ -199,6 +200,13 @@ public class CUIPlugin extends AbstractUIPlugin {
|
||||||
*/
|
*/
|
||||||
public static final String ID_CELEMENT_CREATION_ACTION_SET= "org.eclipse.cdt.ui.CElementCreationActionSet"; //$NON-NLS-1$
|
public static final String ID_CELEMENT_CREATION_ACTION_SET= "org.eclipse.cdt.ui.CElementCreationActionSet"; //$NON-NLS-1$
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The id of the scope used by all the CDT views
|
||||||
|
* (value <code>"org.eclipse.cdt.ui.scope"</code>).
|
||||||
|
* @since 4.0
|
||||||
|
*/
|
||||||
|
public static final String CVIEWS_SCOPE = "org.eclipse.cdt.ui.cViewScope"; //$NON-NLS-1$
|
||||||
|
|
||||||
// -------- static methods --------
|
// -------- static methods --------
|
||||||
|
|
||||||
static {
|
static {
|
||||||
|
@ -455,12 +463,14 @@ public class CUIPlugin extends AbstractUIPlugin {
|
||||||
|
|
||||||
// init ast provider
|
// init ast provider
|
||||||
getASTProvider();
|
getASTProvider();
|
||||||
|
CDTContextActivator.getInstance().install();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
|
* @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
|
||||||
*/
|
*/
|
||||||
public void stop(BundleContext context) throws Exception {
|
public void stop(BundleContext context) throws Exception {
|
||||||
|
CDTContextActivator.getInstance().uninstall();
|
||||||
if (fASTProvider != null) {
|
if (fASTProvider != null) {
|
||||||
fASTProvider.dispose();
|
fASTProvider.dispose();
|
||||||
fASTProvider= null;
|
fASTProvider= null;
|
||||||
|
|
|
@ -19,22 +19,20 @@ import org.eclipse.jface.viewers.ISelection;
|
||||||
import org.eclipse.jface.viewers.ISelectionProvider;
|
import org.eclipse.jface.viewers.ISelectionProvider;
|
||||||
import org.eclipse.jface.viewers.IStructuredSelection;
|
import org.eclipse.jface.viewers.IStructuredSelection;
|
||||||
import org.eclipse.ui.IActionBars;
|
import org.eclipse.ui.IActionBars;
|
||||||
import org.eclipse.ui.IViewPart;
|
import org.eclipse.ui.IWorkbenchPart;
|
||||||
import org.eclipse.ui.IWorkbenchSite;
|
import org.eclipse.ui.IWorkbenchSite;
|
||||||
import org.eclipse.ui.actions.ActionFactory;
|
import org.eclipse.ui.actions.ActionFactory;
|
||||||
import org.eclipse.ui.actions.ActionGroup;
|
import org.eclipse.ui.actions.ActionGroup;
|
||||||
import org.eclipse.ui.dialogs.PropertyDialogAction;
|
import org.eclipse.ui.dialogs.PropertyDialogAction;
|
||||||
import org.eclipse.ui.part.Page;
|
import org.eclipse.ui.part.Page;
|
||||||
|
import org.eclipse.ui.texteditor.ITextEditor;
|
||||||
|
|
||||||
import org.eclipse.cdt.core.model.ICElement;
|
import org.eclipse.cdt.core.model.ICElement;
|
||||||
|
|
||||||
import org.eclipse.cdt.internal.ui.IContextMenuConstants;
|
import org.eclipse.cdt.internal.ui.IContextMenuConstants;
|
||||||
import org.eclipse.cdt.internal.ui.callhierarchy.CHViewPart;
|
|
||||||
import org.eclipse.cdt.internal.ui.callhierarchy.OpenCallHierarchyAction;
|
import org.eclipse.cdt.internal.ui.callhierarchy.OpenCallHierarchyAction;
|
||||||
import org.eclipse.cdt.internal.ui.editor.CEditor;
|
|
||||||
import org.eclipse.cdt.internal.ui.editor.ICEditorActionDefinitionIds;
|
import org.eclipse.cdt.internal.ui.editor.ICEditorActionDefinitionIds;
|
||||||
import org.eclipse.cdt.internal.ui.typehierarchy.OpenTypeHierarchyAction;
|
import org.eclipse.cdt.internal.ui.typehierarchy.OpenTypeHierarchyAction;
|
||||||
import org.eclipse.cdt.internal.ui.typehierarchy.THViewPart;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Action group that adds actions to open a new CDT view part or an external
|
* Action group that adds actions to open a new CDT view part or an external
|
||||||
|
@ -49,8 +47,9 @@ import org.eclipse.cdt.internal.ui.typehierarchy.THViewPart;
|
||||||
public class OpenViewActionGroup extends ActionGroup {
|
public class OpenViewActionGroup extends ActionGroup {
|
||||||
|
|
||||||
private boolean fEditorIsOwner;
|
private boolean fEditorIsOwner;
|
||||||
private boolean fIsTypeHiararchyViewerOwner;
|
private boolean fSuppressTypeHierarchy;
|
||||||
private boolean fIsCallHiararchyViewerOwner;
|
private boolean fSuppressCallHierarchy;
|
||||||
|
private boolean fSuppressProperties;
|
||||||
private IWorkbenchSite fSite;
|
private IWorkbenchSite fSite;
|
||||||
private String fGroupName= IContextMenuConstants.GROUP_OPEN;
|
private String fGroupName= IContextMenuConstants.GROUP_OPEN;
|
||||||
|
|
||||||
|
@ -78,16 +77,14 @@ public class OpenViewActionGroup extends ActionGroup {
|
||||||
*
|
*
|
||||||
* @param part the view part that owns this action group
|
* @param part the view part that owns this action group
|
||||||
*/
|
*/
|
||||||
public OpenViewActionGroup(IViewPart part) {
|
public OpenViewActionGroup(IWorkbenchPart part) {
|
||||||
createSiteActions(part.getSite());
|
createSiteActions(part.getSite());
|
||||||
fIsCallHiararchyViewerOwner= part instanceof CHViewPart;
|
|
||||||
fIsTypeHiararchyViewerOwner= part instanceof THViewPart;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Note: This constructor is for internal use only. Clients should not call this constructor.
|
* Note: This constructor is for internal use only. Clients should not call this constructor.
|
||||||
*/
|
*/
|
||||||
public OpenViewActionGroup(CEditor part) {
|
public OpenViewActionGroup(ITextEditor part) {
|
||||||
fEditorIsOwner= true;
|
fEditorIsOwner= true;
|
||||||
|
|
||||||
// fOpenSuperImplementation= new OpenSuperImplementationAction(part);
|
// fOpenSuperImplementation= new OpenSuperImplementationAction(part);
|
||||||
|
@ -165,16 +162,16 @@ public class OpenViewActionGroup extends ActionGroup {
|
||||||
public void fillContextMenu(IMenuManager menu) {
|
public void fillContextMenu(IMenuManager menu) {
|
||||||
super.fillContextMenu(menu);
|
super.fillContextMenu(menu);
|
||||||
if (!fEditorIsOwner) {
|
if (!fEditorIsOwner) {
|
||||||
if (!fIsTypeHiararchyViewerOwner && fOpenTypeHierarchy.isEnabled()) {
|
if (!fSuppressTypeHierarchy && fOpenTypeHierarchy.isEnabled()) {
|
||||||
menu.appendToGroup(fGroupName, fOpenTypeHierarchy);
|
menu.appendToGroup(fGroupName, fOpenTypeHierarchy);
|
||||||
}
|
}
|
||||||
if (!fIsCallHiararchyViewerOwner && fOpenCallHierarchy.isEnabled()) {
|
if (!fSuppressCallHierarchy && fOpenCallHierarchy.isEnabled()) {
|
||||||
menu.appendToGroup(fGroupName, fOpenCallHierarchy);
|
menu.appendToGroup(fGroupName, fOpenCallHierarchy);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// appendToGroup(menu, fOpenSuperImplementation);
|
// appendToGroup(menu, fOpenSuperImplementation);
|
||||||
IStructuredSelection selection= getStructuredSelection();
|
IStructuredSelection selection= getStructuredSelection();
|
||||||
if (!fIsCallHiararchyViewerOwner && !fIsTypeHiararchyViewerOwner) {
|
if (!fSuppressProperties) {
|
||||||
if (fOpenPropertiesDialog != null && fOpenPropertiesDialog.isEnabled() && selection != null &&fOpenPropertiesDialog.isApplicableForSelection(selection)) {
|
if (fOpenPropertiesDialog != null && fOpenPropertiesDialog.isEnabled() && selection != null &&fOpenPropertiesDialog.isApplicableForSelection(selection)) {
|
||||||
menu.appendToGroup(IContextMenuConstants.GROUP_PROPERTIES, fOpenPropertiesDialog);
|
menu.appendToGroup(IContextMenuConstants.GROUP_PROPERTIES, fOpenPropertiesDialog);
|
||||||
}
|
}
|
||||||
|
@ -240,4 +237,16 @@ public class OpenViewActionGroup extends ActionGroup {
|
||||||
public void setAppendToGroup(String groupName) {
|
public void setAppendToGroup(String groupName) {
|
||||||
fGroupName= groupName;
|
fGroupName= groupName;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setSuppressTypeHierarchy(boolean suppressTypeHierarchy) {
|
||||||
|
fSuppressTypeHierarchy = suppressTypeHierarchy;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSuppressCallHierarchy(boolean suppressCallHierarchy) {
|
||||||
|
fSuppressCallHierarchy = suppressCallHierarchy;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSuppressProperties(boolean suppressProperties) {
|
||||||
|
fSuppressProperties = suppressProperties;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue