1
/*******************************************************************************
2
* Copyright (c) 2006, 2008 IBM Corporation and others.
3
* All rights reserved. This program and the accompanying materials
4
* are made available under the terms of the Eclipse Public License v1.0
5
* which accompanies this distribution, and is available at
6
* http://www.eclipse.org/legal/epl-v10.html
9
* IBM Corporation - initial API and implementation
10
*******************************************************************************/
12
package org.eclipse.cdt.internal.ui.navigator;
14
import org.eclipse.core.commands.operations.IUndoContext;
15
import org.eclipse.core.resources.ResourcesPlugin;
16
import org.eclipse.jface.action.IMenuManager;
17
import org.eclipse.jface.viewers.ISelection;
18
import org.eclipse.swt.widgets.Tree;
19
import org.eclipse.ui.IActionBars;
20
import org.eclipse.ui.IWorkbenchPartSite;
21
import org.eclipse.ui.actions.ActionContext;
22
import org.eclipse.ui.navigator.CommonActionProvider;
23
import org.eclipse.ui.navigator.ICommonActionExtensionSite;
24
import org.eclipse.ui.navigator.ICommonViewerWorkbenchSite;
25
import org.eclipse.ui.operations.UndoRedoActionGroup;
27
import org.eclipse.cdt.ui.refactoring.actions.CRefactoringActionGroup;
29
import org.eclipse.cdt.internal.ui.actions.SelectionConverter;
32
* A clone of org.eclipse.ui.internal.navigator.resources.actions.RefactorActionProvider.
34
public class CNavigatorRefactorActionProvider extends CommonActionProvider {
36
private UndoRedoActionGroup undoRedoGroup;
37
private CNavigatorRefactorActionGroup resourceRefactorGroup;
38
private CRefactoringActionGroup cElementRefactorGroup;
41
* @see org.eclipse.ui.navigator.CommonActionProvider#init(org.eclipse.ui.navigator.ICommonActionExtensionSite)
44
public void init(ICommonActionExtensionSite actionSite) {
45
super.init(actionSite);
46
ICommonViewerWorkbenchSite workbenchSite= null;
47
if (actionSite.getViewSite() instanceof ICommonViewerWorkbenchSite) {
48
workbenchSite = (ICommonViewerWorkbenchSite) actionSite.getViewSite();
50
if (workbenchSite != null) {
51
final IWorkbenchPartSite partSite= workbenchSite.getSite();
52
resourceRefactorGroup= new CNavigatorRefactorActionGroup(partSite, (Tree)actionSite.getStructuredViewer().getControl());
53
IUndoContext workspaceContext= (IUndoContext) ResourcesPlugin.getWorkspace().getAdapter(IUndoContext.class);
54
undoRedoGroup = new UndoRedoActionGroup(partSite, workspaceContext, true);
55
cElementRefactorGroup= new CRefactoringActionGroup(workbenchSite.getPart());
60
public void dispose() {
61
undoRedoGroup.dispose();
62
resourceRefactorGroup.dispose();
63
cElementRefactorGroup.dispose();
67
public void fillActionBars(IActionBars actionBars) {
68
undoRedoGroup.fillActionBars(actionBars);
69
resourceRefactorGroup.fillActionBars(actionBars);
70
cElementRefactorGroup.updateActionBars();
71
cElementRefactorGroup.fillActionBars(actionBars);
75
public void fillContextMenu(IMenuManager menu) {
76
undoRedoGroup.fillContextMenu(menu);
77
resourceRefactorGroup.fillContextMenu(menu);
78
cElementRefactorGroup.fillContextMenu(menu);
82
public void setContext(ActionContext context) {
83
undoRedoGroup.setContext(context);
84
resourceRefactorGroup.setContext(convertToResources(context));
85
cElementRefactorGroup.setContext(context);
89
public void updateActionBars() {
90
undoRedoGroup.updateActionBars();
91
resourceRefactorGroup.updateActionBars();
92
cElementRefactorGroup.updateActionBars();
97
* @return context with selection elements converted to IResources
99
private ActionContext convertToResources(ActionContext context) {
100
if (context != null) {
101
// convert non-IResource to IResources
102
ISelection selection = SelectionConverter.convertSelectionToResources(context.getSelection());
103
return new ActionContext(selection);