blob: 095342ad43143ad113b4acaaeba1f8327f0f984b [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 2003 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Common Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/cpl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.ui.internal.ide;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.Preferences;
import org.eclipse.jface.action.ActionContributionItem;
import org.eclipse.jface.action.GroupMarker;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.action.IContributionItem;
import org.eclipse.jface.action.ICoolBarManager;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.IStatusLineManager;
import org.eclipse.jface.action.IToolBarManager;
import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.action.Separator;
import org.eclipse.jface.action.ToolBarContributionItem;
import org.eclipse.jface.action.ToolBarManager;
import org.eclipse.jface.util.IPropertyChangeListener;
import org.eclipse.jface.util.PropertyChangeEvent;
import org.eclipse.ui.IPageListener;
import org.eclipse.ui.IPerspectiveDescriptor;
import org.eclipse.ui.IPerspectiveListener;
import org.eclipse.ui.IWorkbenchActionConstants;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.actions.ActionFactory;
import org.eclipse.ui.actions.ContributionItemFactory;
import org.eclipse.ui.actions.NewWizardMenu;
import org.eclipse.ui.actions.ActionFactory.IWorkbenchAction;
import org.eclipse.ui.application.IActionBarConfigurer;
import org.eclipse.ui.application.IWorkbenchConfigurer;
import org.eclipse.ui.ide.IDEActionFactory;
import org.eclipse.ui.ide.IIDEActionConstants;
import org.eclipse.ui.internal.IPreferenceConstants;
import org.eclipse.ui.internal.WorkbenchPlugin;
import org.eclipse.ui.internal.ide.actions.BuildSetMenu;
import org.eclipse.ui.internal.ide.actions.QuickMenuAction;
import org.eclipse.ui.internal.util.StatusLineContributionItem;
/**
* Adds actions to a workbench window.
*/
public final class WorkbenchActionBuilder {
private IWorkbenchWindow window;
/**
* A convience variable and method so that the actionConfigurer doesn't need to
* get passed into registerGlobalAction every time it's called.
*/
private IActionBarConfigurer actionBarConfigurer;
// generic actions
private IWorkbenchAction closeAction;
private IWorkbenchAction closeAllAction;
private IWorkbenchAction closeAllSavedAction;
private IWorkbenchAction saveAction;
private IWorkbenchAction saveAllAction;
private IWorkbenchAction helpContentsAction;
private IWorkbenchAction aboutAction;
private IWorkbenchAction openPreferencesAction;
private IWorkbenchAction saveAsAction;
private IWorkbenchAction hideShowEditorAction;
private IWorkbenchAction savePerspectiveAction;
private IWorkbenchAction resetPerspectiveAction;
private IWorkbenchAction editActionSetAction;
private IWorkbenchAction closePerspAction;
private IWorkbenchAction lockToolBarAction;
private IWorkbenchAction closeAllPerspsAction;
private IWorkbenchAction showViewMenuAction;
private IWorkbenchAction showPartPaneMenuAction;
private IWorkbenchAction nextPartAction;
private IWorkbenchAction prevPartAction;
private IWorkbenchAction nextEditorAction;
private IWorkbenchAction prevEditorAction;
private IWorkbenchAction nextPerspectiveAction;
private IWorkbenchAction prevPerspectiveAction;
private IWorkbenchAction activateEditorAction;
private IWorkbenchAction maximizePartAction;
private IWorkbenchAction workbenchEditorsAction;
private IWorkbenchAction workbookEditorsAction;
private IWorkbenchAction backwardHistoryAction;
private IWorkbenchAction forwardHistoryAction;
// generic retarget actions
private IWorkbenchAction undoAction;
private IWorkbenchAction redoAction;
private IWorkbenchAction cutAction;
private IWorkbenchAction copyAction;
private IWorkbenchAction pasteAction;
private IWorkbenchAction deleteAction;
private IWorkbenchAction selectAllAction;
private IWorkbenchAction findAction;
private IWorkbenchAction printAction;
private IWorkbenchAction revertAction;
private IWorkbenchAction refreshAction;
private IWorkbenchAction propertiesAction;
private IWorkbenchAction quitAction;
private IWorkbenchAction moveAction;
private IWorkbenchAction renameAction;
private IWorkbenchAction goIntoAction;
private IWorkbenchAction backAction;
private IWorkbenchAction forwardAction;
private IWorkbenchAction upAction;
private IWorkbenchAction nextAction;
private IWorkbenchAction previousAction;
// IDE-specific actions
private IWorkbenchAction openWorkspaceAction;
private IWorkbenchAction projectPropertyDialogAction;
private IWorkbenchAction newWizardAction;
private IWorkbenchAction newWizardDropDownAction;
private IWorkbenchAction importResourcesAction;
private IWorkbenchAction exportResourcesAction;
IWorkbenchAction buildAllAction; // Incremental workspace build
private IWorkbenchAction cleanAction;
private IWorkbenchAction toggleAutoBuildAction;
MenuManager buildWorkingSetMenu;
private IWorkbenchAction quickStartAction;
private IWorkbenchAction tipsAndTricksAction;
private QuickMenuAction showInQuickMenu;
private QuickMenuAction newQuickMenu;
private IWorkbenchAction introAction;
// IDE-specific retarget actions
private IWorkbenchAction addBookmarkAction;
private IWorkbenchAction addTaskAction;
IWorkbenchAction buildProjectAction;
private IWorkbenchAction openProjectAction;
private IWorkbenchAction closeProjectAction;
// contribution items
// @issue should obtain from ContributionItemFactory
private NewWizardMenu newWizardMenu;
private IContributionItem pinEditorContributionItem;
// @issue class is workbench internal
private StatusLineContributionItem statusLineItem;
private Preferences.IPropertyChangeListener prefListener;
// listener for the "close editors automatically"
// preference change
private IPropertyChangeListener propPrefListener;
private IPageListener pageListener;
private IPerspectiveListener perspectiveListener;
/**
* Constructs a new action builder which contributes actions
* to the given window.
*
* @param window the window
*/
public WorkbenchActionBuilder(IWorkbenchWindow window) {
this.window = window;
}
/**
* Returns the window to which this action builder is contributing.
*/
private IWorkbenchWindow getWindow() {
return window;
}
/**
* Hooks listeners on the preference store and the window's page, perspective and selection services.
*/
private void hookListeners() {
pageListener = new IPageListener() {
public void pageActivated(IWorkbenchPage page) {
enableActions(page.getPerspective() != null);
}
public void pageClosed(IWorkbenchPage page) {
IWorkbenchPage pg = getWindow().getActivePage();
enableActions(pg != null && pg.getPerspective() != null);
}
public void pageOpened(IWorkbenchPage page) {
// do nothing
}
};
getWindow().addPageListener(pageListener);
perspectiveListener = new IPerspectiveListener() {
public void perspectiveActivated(IWorkbenchPage page, IPerspectiveDescriptor perspective) {
enableActions(true);
}
public void perspectiveChanged(IWorkbenchPage page, IPerspectiveDescriptor perspective, String changeId) {
// do nothing
}
};
getWindow().addPerspectiveListener(perspectiveListener);
prefListener = new Preferences.IPropertyChangeListener() {
public void propertyChange(Preferences.PropertyChangeEvent event) {
if (event.getProperty().equals(ResourcesPlugin.PREF_AUTO_BUILDING)) {
final boolean autoBuild = ResourcesPlugin.getWorkspace().isAutoBuilding();
if (window.getShell() != null && !window.getShell().isDisposed()) {
// this property change notification could be from a non-ui thread
window.getShell().getDisplay().syncExec(new Runnable() {
public void run() {
updateBuildActions(autoBuild);
}
});
}
}
}
};
ResourcesPlugin.getPlugin().getPluginPreferences().addPropertyChangeListener(prefListener);
// listener for the "close editors automatically"
// preference change
propPrefListener = new IPropertyChangeListener() {
public void propertyChange(PropertyChangeEvent event) {
if (event.getProperty().equals(IPreferenceConstants.REUSE_EDITORS_BOOLEAN)) {
if (window.getShell() != null && !window.getShell().isDisposed()) {
// this property change notification could be from a non-ui thread
window.getShell().getDisplay().syncExec(new Runnable() {
public void run() {
updatePinActionToolbar();
}
});
}
}
}
};
/*
* In order to ensure that the pin action toolbar sets its size
* correctly, the pin action should set its visiblity before we call updatePinActionToolbar().
*
* In other words we always want the PinActionContributionItem to be notified before the
* WorkbenchActionBuilder.
*/
WorkbenchPlugin.getDefault().getPreferenceStore().addPropertyChangeListener(propPrefListener);
}
/**
* Enables the menu items dependent on an active
* page and perspective.
* Note, the show view action already does its own
* listening so no need to do it here.
*/
private void enableActions(boolean value) {
hideShowEditorAction.setEnabled(value);
savePerspectiveAction.setEnabled(value);
lockToolBarAction.setEnabled(value);
resetPerspectiveAction.setEnabled(value);
editActionSetAction.setEnabled(value);
closePerspAction.setEnabled(value);
closeAllPerspsAction.setEnabled(value);
newWizardMenu.setEnabled(value);
newWizardDropDownAction.setEnabled(value);
// Bug 53560. "Ctrl+N" shouldn't work if the menus are all disabled.
newWizardAction.setEnabled(value);
importResourcesAction.setEnabled(value);
exportResourcesAction.setEnabled(value);
}
/**
* Builds the actions and contributes them to the given window.
*/
public void makeAndPopulateActions(IWorkbenchConfigurer windowConfigurer, IActionBarConfigurer actionBarConfigurer) {
makeActions(windowConfigurer, actionBarConfigurer);
populateMenuBar(actionBarConfigurer);
populateCoolBar(actionBarConfigurer);
updateBuildActions(ResourcesPlugin.getWorkspace().isAutoBuilding());
populateStatusLine(actionBarConfigurer);
hookListeners();
}
/**
* Fills the coolbar with the workbench actions.
*/
public void populateCoolBar(IActionBarConfigurer configurer) {
ICoolBarManager cbManager = configurer.getCoolBarManager();
{ // Set up the context Menu
IMenuManager popUpMenu = new MenuManager();
popUpMenu.add(new ActionContributionItem(lockToolBarAction));
popUpMenu.add(new ActionContributionItem(editActionSetAction));
cbManager.setContextMenuManager(popUpMenu);
}
cbManager.add(new GroupMarker(IIDEActionConstants.GROUP_FILE));
{ // File Group
IToolBarManager fileToolBar = new ToolBarManager(cbManager.getStyle());
fileToolBar.add(new Separator(IWorkbenchActionConstants.NEW_GROUP));
fileToolBar.add(newWizardDropDownAction);
fileToolBar.add(new GroupMarker(IWorkbenchActionConstants.NEW_EXT));
fileToolBar.add(new GroupMarker(IWorkbenchActionConstants.SAVE_GROUP));
fileToolBar.add(saveAction);
fileToolBar.add(new GroupMarker(IWorkbenchActionConstants.SAVE_EXT));
fileToolBar.add(printAction);
fileToolBar.add(new GroupMarker(IWorkbenchActionConstants.PRINT_EXT));
fileToolBar.add(new Separator(IWorkbenchActionConstants.BUILD_GROUP));
fileToolBar.add(new GroupMarker(IWorkbenchActionConstants.BUILD_EXT));
fileToolBar.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
// Add to the cool bar manager
cbManager.add(new ToolBarContributionItem(fileToolBar,IWorkbenchActionConstants.TOOLBAR_FILE));
}
cbManager.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS));
cbManager.add(new GroupMarker(IIDEActionConstants.GROUP_NAV));
{ // Navigate group
IToolBarManager navToolBar = new ToolBarManager(cbManager.getStyle());
navToolBar.add(new Separator(IWorkbenchActionConstants.HISTORY_GROUP));
navToolBar.add(new GroupMarker(IWorkbenchActionConstants.GROUP_APP));
navToolBar.add(backwardHistoryAction);
navToolBar.add(forwardHistoryAction);
navToolBar.add(new Separator(IWorkbenchActionConstants.PIN_GROUP));
navToolBar.add(pinEditorContributionItem);
// Add to the cool bar manager
cbManager.add(new ToolBarContributionItem(navToolBar,IWorkbenchActionConstants.TOOLBAR_NAVIGATE));
}
cbManager.add(new GroupMarker(IWorkbenchActionConstants.GROUP_EDITOR));
}
/**
* Fills the menu bar with the workbench actions.
*/
public void populateMenuBar(IActionBarConfigurer configurer) {
IMenuManager menubar = configurer.getMenuManager();
menubar.add(createFileMenu());
menubar.add(createEditMenu());
menubar.add(createNavigateMenu());
menubar.add(createProjectMenu());
menubar.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS));
menubar.add(createWindowMenu());
menubar.add(createHelpMenu());
}
/**
* Creates and returns the File menu.
*/
private MenuManager createFileMenu() {
MenuManager menu = new MenuManager(IDEWorkbenchMessages.getString("Workbench.file"), IWorkbenchActionConstants.M_FILE); //$NON-NLS-1$
menu.add(new GroupMarker(IWorkbenchActionConstants.FILE_START));
{
// create the New submenu, using the same id for it as the New action
String newText = IDEWorkbenchMessages.getString("Workbench.new"); //$NON-NLS-1$
String newId = ActionFactory.NEW.getId();
MenuManager newMenu = new MenuManager(newText, newId) {
public String getMenuText() {
String result= super.getMenuText();
if (newQuickMenu == null)
return result;
String shortCut = newQuickMenu.getShortCutString();
if (shortCut == null)
return result;
return result + "\t" + shortCut; //$NON-NLS-1$
}
};
newMenu.add(new Separator(newId));
this.newWizardMenu = new NewWizardMenu(getWindow());
newMenu.add(this.newWizardMenu);
newMenu.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
menu.add(newMenu);
}
menu.add(new GroupMarker(IWorkbenchActionConstants.NEW_EXT));
menu.add(new Separator());
menu.add(closeAction);
menu.add(closeAllAction);
// menu.add(closeAllSavedAction);
menu.add(new GroupMarker(IWorkbenchActionConstants.CLOSE_EXT));
menu.add(new Separator());
menu.add(saveAction);
menu.add(saveAsAction);
menu.add(saveAllAction);
menu.add(revertAction);
menu.add(new Separator());
menu.add(moveAction);
menu.add(renameAction);
menu.add(refreshAction);
menu.add(new GroupMarker(IWorkbenchActionConstants.SAVE_EXT));
menu.add(new Separator());
menu.add(printAction);
menu.add(new GroupMarker(IWorkbenchActionConstants.PRINT_EXT));
menu.add(new Separator());
menu.add(openWorkspaceAction);
menu.add(new GroupMarker(IWorkbenchActionConstants.OPEN_EXT));
menu.add(new Separator());
menu.add(importResourcesAction);
menu.add(exportResourcesAction);
menu.add(new GroupMarker(IWorkbenchActionConstants.IMPORT_EXT));
menu.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
menu.add(new Separator());
menu.add(propertiesAction);
menu.add(ContributionItemFactory.REOPEN_EDITORS.create(getWindow()));
menu.add(new GroupMarker(IWorkbenchActionConstants.MRU));
menu.add(new Separator());
menu.add(quitAction);
menu.add(new GroupMarker(IWorkbenchActionConstants.FILE_END));
return menu;
}
/**
* Creates and returns the Edit menu.
*/
private MenuManager createEditMenu() {
MenuManager menu = new MenuManager(IDEWorkbenchMessages.getString("Workbench.edit"), IWorkbenchActionConstants.M_EDIT); //$NON-NLS-1$
menu.add(new GroupMarker(IWorkbenchActionConstants.EDIT_START));
menu.add(undoAction);
menu.add(redoAction);
menu.add(new GroupMarker(IWorkbenchActionConstants.UNDO_EXT));
menu.add(new Separator());
menu.add(cutAction);
menu.add(copyAction);
menu.add(pasteAction);
menu.add(new GroupMarker(IWorkbenchActionConstants.CUT_EXT));
menu.add(new Separator());
menu.add(deleteAction);
menu.add(selectAllAction);
menu.add(new Separator());
menu.add(findAction);
menu.add(new GroupMarker(IWorkbenchActionConstants.FIND_EXT));
menu.add(new Separator());
menu.add(addBookmarkAction);
menu.add(addTaskAction);
menu.add(new GroupMarker(IWorkbenchActionConstants.ADD_EXT));
menu.add(new GroupMarker(IWorkbenchActionConstants.EDIT_END));
menu.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
return menu;
}
/**
* Creates and returns the Navigate menu.
*/
private MenuManager createNavigateMenu() {
MenuManager menu = new MenuManager(IDEWorkbenchMessages.getString("Workbench.navigate"), IWorkbenchActionConstants.M_NAVIGATE); //$NON-NLS-1$
menu.add(new GroupMarker(IWorkbenchActionConstants.NAV_START));
menu.add(goIntoAction);
MenuManager goToSubMenu = new MenuManager(IDEWorkbenchMessages.getString("Workbench.goTo"), IWorkbenchActionConstants.GO_TO); //$NON-NLS-1$
menu.add(goToSubMenu);
goToSubMenu.add(backAction);
goToSubMenu.add(forwardAction);
goToSubMenu.add(upAction);
goToSubMenu.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
menu.add(new Separator(IWorkbenchActionConstants.OPEN_EXT));
for (int i = 2; i < 5; ++i) {
menu.add(new Separator(IWorkbenchActionConstants.OPEN_EXT + i));
}
menu.add(new Separator(IWorkbenchActionConstants.SHOW_EXT));
{
MenuManager showInSubMenu = new MenuManager(IDEWorkbenchMessages.getString("Workbench.showIn"), "showIn") { //$NON-NLS-1$ //$NON-NLS-2$
public String getMenuText() {
String result= super.getMenuText();
if (showInQuickMenu == null)
return null;
String shortCut= showInQuickMenu.getShortCutString();
if (shortCut == null)
return result;
return result + "\t" + shortCut; //$NON-NLS-1$
}
};
showInSubMenu.add(ContributionItemFactory.VIEWS_SHOW_IN.create(getWindow()));
menu.add(showInSubMenu);
}
for (int i = 2; i < 5; ++i) {
menu.add(new Separator(IWorkbenchActionConstants.SHOW_EXT + i));
}
menu.add(new Separator());
menu.add(nextAction);
menu.add(previousAction);
menu.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
menu.add(new GroupMarker(IWorkbenchActionConstants.NAV_END));
//TBD: Location of this actions
menu.add(new Separator());
menu.add(backwardHistoryAction);
menu.add(forwardHistoryAction);
return menu;
}
/**
* Creates and returns the Project menu.
*/
private MenuManager createProjectMenu() {
MenuManager menu = new MenuManager(IDEWorkbenchMessages.getString("Workbench.project"), IWorkbenchActionConstants.M_PROJECT); //$NON-NLS-1$
menu.add(new Separator(IWorkbenchActionConstants.PROJ_START));
menu.add(openProjectAction);
menu.add(closeProjectAction);
menu.add(new GroupMarker(IWorkbenchActionConstants.OPEN_EXT));
menu.add(new Separator());
menu.add(buildAllAction);
menu.add(buildProjectAction);
addWorkingSetBuildActions(menu);
menu.add(cleanAction);
menu.add(toggleAutoBuildAction);
menu.add(new GroupMarker(IWorkbenchActionConstants.BUILD_EXT));
menu.add(new Separator());
menu.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS));
menu.add(new GroupMarker(IWorkbenchActionConstants.PROJ_END));
menu.add(new Separator());
menu.add(projectPropertyDialogAction);
return menu;
}
/**
* Creates and returns the Window menu.
*/
private MenuManager createWindowMenu() {
MenuManager menu = new MenuManager(IDEWorkbenchMessages.getString("Workbench.window"), IWorkbenchActionConstants.M_WINDOW); //$NON-NLS-1$
IWorkbenchAction action = ActionFactory.OPEN_NEW_WINDOW.create(getWindow());
action.setText(IDEWorkbenchMessages.getString("Workbench.openNewWindow")); //$NON-NLS-1$
menu.add(action);
menu.add(new Separator());
addPerspectiveActions(menu);
menu.add(new Separator());
addKeyboardShortcuts(menu);
menu.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
menu.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS + "end")); //$NON-NLS-1$
menu.add(openPreferencesAction);
menu.add(ContributionItemFactory.OPEN_WINDOWS.create(getWindow()));
return menu;
}
/**
* Adds the perspective actions to the specified menu.
*/
private void addPerspectiveActions(MenuManager menu) {
{
String openText = IDEWorkbenchMessages.getString("Workbench.openPerspective"); //$NON-NLS-1$
MenuManager changePerspMenuMgr = new MenuManager(openText, "openPerspective"); //$NON-NLS-1$
IContributionItem changePerspMenuItem =
ContributionItemFactory.PERSPECTIVES_SHORTLIST.create(getWindow());
changePerspMenuMgr.add(changePerspMenuItem);
menu.add(changePerspMenuMgr);
}
{
MenuManager showViewMenuMgr = new MenuManager(IDEWorkbenchMessages.getString("Workbench.showView"), "showView"); //$NON-NLS-1$ //$NON-NLS-2$
IContributionItem showViewMenu = ContributionItemFactory.VIEWS_SHORTLIST.create(getWindow());
showViewMenuMgr.add(showViewMenu);
menu.add(showViewMenuMgr);
}
menu.add(new Separator());
menu.add(editActionSetAction);
menu.add(savePerspectiveAction);
menu.add(resetPerspectiveAction);
menu.add(closePerspAction);
menu.add(closeAllPerspsAction);
}
/**
* Adds the keyboard navigation submenu to the specified menu.
*/
private void addWorkingSetBuildActions(MenuManager menu) {
buildWorkingSetMenu= new MenuManager(IDEWorkbenchMessages.getString("Workbench.buildSet")); //$NON-NLS-1$
IContributionItem workingSetBuilds = new BuildSetMenu(window, actionBarConfigurer);
buildWorkingSetMenu.add(workingSetBuilds);
menu.add(buildWorkingSetMenu);
}
/**
* Adds the keyboard navigation submenu to the specified menu.
*/
private void addKeyboardShortcuts(MenuManager menu) {
MenuManager subMenu = new MenuManager(IDEWorkbenchMessages.getString("Workbench.shortcuts"), "shortcuts"); //$NON-NLS-1$ //$NON-NLS-2$
menu.add(subMenu);
subMenu.add(showPartPaneMenuAction);
subMenu.add(showViewMenuAction);
subMenu.add(new Separator());
subMenu.add(maximizePartAction);
subMenu.add(new Separator());
subMenu.add(activateEditorAction);
subMenu.add(nextEditorAction);
subMenu.add(prevEditorAction);
subMenu.add(workbookEditorsAction);
subMenu.add(new Separator());
subMenu.add(nextPartAction);
subMenu.add(prevPartAction);
subMenu.add(new Separator());
subMenu.add(nextPerspectiveAction);
subMenu.add(prevPerspectiveAction);
}
/**
* Creates and returns the Help menu.
*/
private MenuManager createHelpMenu() {
MenuManager menu = new MenuManager(IDEWorkbenchMessages.getString("Workbench.help"), IWorkbenchActionConstants.M_HELP); //$NON-NLS-1$
// See if a welcome or intro page is specified
if (introAction != null)
menu.add(introAction);
else if (quickStartAction != null)
menu.add(quickStartAction);
menu.add(helpContentsAction);
// See if a tips and tricks page is specified
if (tipsAndTricksAction != null)
menu.add(tipsAndTricksAction);
menu.add(new GroupMarker(IWorkbenchActionConstants.HELP_START));
menu.add(new GroupMarker(IWorkbenchActionConstants.HELP_END));
menu.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS));
// about should always be at the bottom
menu.add(new Separator());
menu.add(aboutAction);
/*
final IMutableContextActivationService contextActivationServiceA = ContextActivationServiceFactory.getMutableContextActivationService();
contextActivationServiceA.setActiveContextIds(new HashSet(Collections.singletonList("A")));
final IMutableContextActivationService contextActivationServiceB = ContextActivationServiceFactory.getMutableContextActivationService();
contextActivationServiceB.setActiveContextIds(new HashSet(Collections.singletonList("B")));
menu.add(new Separator());
menu.add(new Action("Add context A to the workbench") {
public void run() {
IWorkbench workbench = PlatformUI.getWorkbench();
IWorkbenchContextSupport workbenchContextSupport = (IWorkbenchContextSupport) workbench.getContextSupport();
workbenchContextSupport.getCompoundContextActivationService().addContextActivationService(contextActivationServiceA);
}
});
menu.add(new Action("Remove context A from the workbench") {
public void run() {
IWorkbench workbench = PlatformUI.getWorkbench();
IWorkbenchContextSupport workbenchContextSupport = (IWorkbenchContextSupport) workbench.getContextSupport();
workbenchContextSupport.getCompoundContextActivationService().removeContextActivationService(contextActivationServiceA);
}
});
menu.add(new Action("Add context B to the workbench") {
public void run() {
IWorkbench workbench = PlatformUI.getWorkbench();
IWorkbenchContextSupport workbenchContextSupport = (IWorkbenchContextSupport) workbench.getContextSupport();
workbenchContextSupport.getCompoundContextActivationService().addContextActivationService(contextActivationServiceB);
}
});
menu.add(new Action("Remove context B from the workbench") {
public void run() {
IWorkbench workbench = PlatformUI.getWorkbench();
IWorkbenchContextSupport workbenchContextSupport = (IWorkbenchContextSupport) workbench.getContextSupport();
workbenchContextSupport.getCompoundContextActivationService().removeContextActivationService(contextActivationServiceB);
}
});
menu.add(new Separator());
menu.add(new Action("Add context A to the workbench page") {
public void run() {
IWorkbench workbench = PlatformUI.getWorkbench();
IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow();
if (workbenchWindow != null) {
IWorkbenchPage workbenchPage = workbenchWindow.getActivePage();
if (workbenchPage != null) {
IWorkbenchPageContextSupport workbenchPageContextSupport = (IWorkbenchPageContextSupport) workbenchPage.getContextSupport();
workbenchPageContextSupport.getCompoundContextActivationService().addContextActivationService(contextActivationServiceA);
}
}
}
});
menu.add(new Action("Remove context A from the workbench page") {
public void run() {
IWorkbench workbench = PlatformUI.getWorkbench();
IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow();
if (workbenchWindow != null) {
IWorkbenchPage workbenchPage = workbenchWindow.getActivePage();
if (workbenchPage != null) {
IWorkbenchPageContextSupport workbenchPageContextSupport = (IWorkbenchPageContextSupport) workbenchPage.getContextSupport();
workbenchPageContextSupport.getCompoundContextActivationService().removeContextActivationService(contextActivationServiceA);
}
}
}
});
menu.add(new Action("Add context B to the workbench page") {
public void run() {
IWorkbench workbench = PlatformUI.getWorkbench();
IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow();
if (workbenchWindow != null) {
IWorkbenchPage workbenchPage = workbenchWindow.getActivePage();
if (workbenchPage != null) {
IWorkbenchPageContextSupport workbenchPageContextSupport = (IWorkbenchPageContextSupport) workbenchPage.getContextSupport();
workbenchPageContextSupport.getCompoundContextActivationService().addContextActivationService(contextActivationServiceB);
}
}
}
});
menu.add(new Action("Remove context B from the workbench page") {
public void run() {
IWorkbench workbench = PlatformUI.getWorkbench();
IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow();
if (workbenchWindow != null) {
IWorkbenchPage workbenchPage = workbenchWindow.getActivePage();
if (workbenchPage != null) {
IWorkbenchPageContextSupport workbenchPageContextSupport = (IWorkbenchPageContextSupport) workbenchPage.getContextSupport();
workbenchPageContextSupport.getCompoundContextActivationService().removeContextActivationService(contextActivationServiceB);
}
}
}
});
IHandler handlerA = new IHandler() {
public void execute() {
}
public void execute(Event event) {
}
public boolean isEnabled() {
return false;
}
};
IHandler handlerB = new IHandler() {
public void execute() {
}
public void execute(Event event) {
}
public boolean isEnabled() {
return false;
}
};
final IMutableCommandHandlerService commandHandlerServiceA = CommandHandlerServiceFactory.getMutableCommandHandlerService();
commandHandlerServiceA.setHandlersByCommandId(new HashMap(Collections.singletonMap("command", handlerA)));
final IMutableCommandHandlerService commandHandlerServiceB = CommandHandlerServiceFactory.getMutableCommandHandlerService();
commandHandlerServiceB.setHandlersByCommandId(new HashMap(Collections.singletonMap("command", handlerB)));
menu.add(new Separator());
menu.add(new Action("Add handler A to the workbench") {
public void run() {
IWorkbench workbench = PlatformUI.getWorkbench();
IWorkbenchCommandSupport workbenchCommandSupport = (IWorkbenchCommandSupport) workbench.getCommandSupport();
workbenchCommandSupport.getCompoundCommandHandlerService().addCommandHandlerService(commandHandlerServiceA);
}
});
menu.add(new Action("Remove handler A from the workbench") {
public void run() {
IWorkbench workbench = PlatformUI.getWorkbench();
IWorkbenchCommandSupport workbenchCommandSupport = (IWorkbenchCommandSupport) workbench.getCommandSupport();
workbenchCommandSupport.getCompoundCommandHandlerService().removeCommandHandlerService(commandHandlerServiceA);
}
});
menu.add(new Action("Add handler B to the workbench") {
public void run() {
IWorkbench workbench = PlatformUI.getWorkbench();
IWorkbenchCommandSupport workbenchCommandSupport = (IWorkbenchCommandSupport) workbench.getCommandSupport();
workbenchCommandSupport.getCompoundCommandHandlerService().addCommandHandlerService(commandHandlerServiceB);
}
});
menu.add(new Action("Remove handler B from the workbench") {
public void run() {
IWorkbench workbench = PlatformUI.getWorkbench();
IWorkbenchCommandSupport workbenchCommandSupport = (IWorkbenchCommandSupport) workbench.getCommandSupport();
workbenchCommandSupport.getCompoundCommandHandlerService().removeCommandHandlerService(commandHandlerServiceB);
}
});
menu.add(new Separator());
menu.add(new Action("Add handler A to the workbench page") {
public void run() {
IWorkbench workbench = PlatformUI.getWorkbench();
IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow();
if (workbenchWindow != null) {
IWorkbenchPage workbenchPage = workbenchWindow.getActivePage();
if (workbenchPage != null) {
IWorkbenchPageCommandSupport workbenchPageCommandSupport = (IWorkbenchPageCommandSupport) workbenchPage.getCommandSupport();
workbenchPageCommandSupport.getCompoundCommandHandlerService().addCommandHandlerService(commandHandlerServiceA);
}
}
}
});
menu.add(new Action("Remove handler A from the workbench page") {
public void run() {
IWorkbench workbench = PlatformUI.getWorkbench();
IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow();
if (workbenchWindow != null) {
IWorkbenchPage workbenchPage = workbenchWindow.getActivePage();
if (workbenchPage != null) {
IWorkbenchPageCommandSupport workbenchPageCommandSupport = (IWorkbenchPageCommandSupport) workbenchPage.getCommandSupport();
workbenchPageCommandSupport.getCompoundCommandHandlerService().removeCommandHandlerService(commandHandlerServiceA);
}
}
}
});
menu.add(new Action("Add handler B to the workbench page") {
public void run() {
IWorkbench workbench = PlatformUI.getWorkbench();
IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow();
if (workbenchWindow != null) {
IWorkbenchPage workbenchPage = workbenchWindow.getActivePage();
if (workbenchPage != null) {
IWorkbenchPageCommandSupport workbenchPageCommandSupport = (IWorkbenchPageCommandSupport) workbenchPage.getCommandSupport();
workbenchPageCommandSupport.getCompoundCommandHandlerService().addCommandHandlerService(commandHandlerServiceB);
}
}
}
});
menu.add(new Action("Remove handler B from the workbench page") {
public void run() {
IWorkbench workbench = PlatformUI.getWorkbench();
IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow();
if (workbenchWindow != null) {
IWorkbenchPage workbenchPage = workbenchWindow.getActivePage();
if (workbenchPage != null) {
IWorkbenchPageCommandSupport workbenchPageCommandSupport = (IWorkbenchPageCommandSupport) workbenchPage.getCommandSupport();
workbenchPageCommandSupport.getCompoundCommandHandlerService().removeCommandHandlerService(commandHandlerServiceB);
}
}
}
});
*/
return menu;
}
/**
* Disposes any resources and unhooks any listeners that are no longer needed.
* Called when the window is closed.
*/
public void dispose() {
actionBarConfigurer.getStatusLineManager().remove(statusLineItem);
if (pageListener != null) {
window.removePageListener(pageListener);
pageListener = null;
}
if (perspectiveListener == null) {
window.removePerspectiveListener(perspectiveListener);
perspectiveListener = null;
}
if (prefListener != null) {
ResourcesPlugin.getPlugin().getPluginPreferences().removePropertyChangeListener(
prefListener);
prefListener = null;
}
if (propPrefListener != null) {
WorkbenchPlugin.getDefault().getPreferenceStore().removePropertyChangeListener(propPrefListener);
propPrefListener = null;
}
closeAction.dispose();
closeAllAction.dispose();
closeAllSavedAction.dispose();
saveAction.dispose();
saveAllAction.dispose();
aboutAction.dispose();
openPreferencesAction.dispose();
saveAsAction.dispose();
hideShowEditorAction.dispose();
savePerspectiveAction.dispose();
resetPerspectiveAction.dispose();
editActionSetAction.dispose();
closePerspAction.dispose();
lockToolBarAction.dispose();
closeAllPerspsAction.dispose();
showViewMenuAction.dispose();
showPartPaneMenuAction.dispose();
nextPartAction.dispose();
prevPartAction.dispose();
nextEditorAction.dispose();
prevEditorAction.dispose();
nextPerspectiveAction.dispose();
prevPerspectiveAction.dispose();
activateEditorAction.dispose();
maximizePartAction.dispose();
workbenchEditorsAction.dispose();
workbookEditorsAction.dispose();
backwardHistoryAction.dispose();
forwardHistoryAction.dispose();
undoAction.dispose();
redoAction.dispose();
cutAction.dispose();
copyAction.dispose();
pasteAction.dispose();
deleteAction.dispose();
selectAllAction.dispose();
findAction.dispose();
printAction.dispose();
revertAction.dispose();
refreshAction.dispose();
propertiesAction.dispose();
quitAction.dispose();
moveAction.dispose();
renameAction.dispose();
goIntoAction.dispose();
backAction.dispose();
forwardAction.dispose();
upAction.dispose();
nextAction.dispose();
previousAction.dispose();
// editorsDropDownAction is not currently an IWorkbenchAction
// editorsDropDownAction.dispose();
openWorkspaceAction.dispose();
projectPropertyDialogAction.dispose();
newWizardAction.dispose();
newWizardDropDownAction.dispose();
importResourcesAction.dispose();
exportResourcesAction.dispose();
cleanAction.dispose();
toggleAutoBuildAction.dispose();
buildAllAction.dispose();
if (quickStartAction != null) {
quickStartAction.dispose();
}
if (tipsAndTricksAction != null) {
tipsAndTricksAction.dispose();
}
addBookmarkAction.dispose();
addTaskAction.dispose();
buildProjectAction.dispose();
openProjectAction.dispose();
closeProjectAction.dispose();
pinEditorContributionItem.dispose();
if (introAction != null) {
introAction.dispose();
}
showInQuickMenu.dispose();
newQuickMenu.dispose();
// null out actions to make leak debugging easier
closeAction = null;
closeAllAction = null;
closeAllSavedAction = null;
saveAction = null;
saveAllAction = null;
helpContentsAction = null;
aboutAction = null;
openPreferencesAction = null;
saveAsAction = null;
hideShowEditorAction = null;
savePerspectiveAction = null;
resetPerspectiveAction = null;
editActionSetAction = null;
closePerspAction = null;
lockToolBarAction = null;
closeAllPerspsAction = null;
showViewMenuAction = null;
showPartPaneMenuAction = null;
nextPartAction = null;
prevPartAction = null;
nextEditorAction = null;
prevEditorAction = null;
nextPerspectiveAction = null;
prevPerspectiveAction = null;
activateEditorAction = null;
maximizePartAction = null;
workbenchEditorsAction = null;
workbookEditorsAction = null;
backwardHistoryAction = null;
forwardHistoryAction = null;
undoAction = null;
redoAction = null;
cutAction = null;
copyAction = null;
pasteAction = null;
deleteAction = null;
selectAllAction = null;
findAction = null;
printAction = null;
revertAction = null;
refreshAction = null;
propertiesAction = null;
quitAction = null;
moveAction = null;
renameAction = null;
goIntoAction = null;
backAction = null;
forwardAction = null;
upAction = null;
nextAction = null;
previousAction = null;
openWorkspaceAction = null;
projectPropertyDialogAction = null;
newWizardAction = null;
newWizardDropDownAction = null;
importResourcesAction = null;
exportResourcesAction = null;
buildAllAction = null;
cleanAction = null;
toggleAutoBuildAction = null;
buildWorkingSetMenu = null;
quickStartAction = null;
tipsAndTricksAction = null;
showInQuickMenu = null;
newQuickMenu = null;
addBookmarkAction = null;
addTaskAction = null;
buildProjectAction = null;
openProjectAction = null;
closeProjectAction = null;
newWizardMenu = null;
pinEditorContributionItem = null;
statusLineItem = null;
prefListener = null;
propPrefListener = null;
introAction = null;
}
void updateModeLine(final String text) {
statusLineItem.setText(text);
}
/**
* Returns true if the menu with the given ID should
* be considered as an OLE container menu. Container menus
* are preserved in OLE menu merging.
*/
public boolean isContainerMenu(String menuId) {
if (menuId.equals(IWorkbenchActionConstants.M_FILE))
return true;
if (menuId.equals(IWorkbenchActionConstants.M_WINDOW))
return true;
return false;
}
/**
* Return whether or not given id matches the id of the coolitems that
* the workbench creates.
*/
public boolean isWorkbenchCoolItemId(String id) {
if (IWorkbenchActionConstants.TOOLBAR_FILE.equalsIgnoreCase(id)) return true;
if (IWorkbenchActionConstants.TOOLBAR_NAVIGATE.equalsIgnoreCase(id)) return true;
return false;
}
/**
* Fills the status line with the workbench contribution items.
*/
public void populateStatusLine(IActionBarConfigurer configurer) {
IStatusLineManager statusLine = configurer.getStatusLineManager();
statusLine.add(statusLineItem);
}
/**
* Creates actions (and contribution items) for the menu bar, toolbar and status line.
*/
private void makeActions(IWorkbenchConfigurer workbenchConfigurer, IActionBarConfigurer actionBarConfigurer) {
// The actions in jface do not have menu vs. enable, vs. disable vs. color
// There are actions in here being passed the workbench - problem
setCurrentActionBarConfigurer(actionBarConfigurer);
// @issue should obtain from ConfigurationItemFactory
statusLineItem = new StatusLineContributionItem("ModeContributionItem"); //$NON-NLS-1$
newWizardAction = ActionFactory.NEW.create(getWindow());
registerGlobalAction(newWizardAction);
newWizardDropDownAction = IDEActionFactory.NEW_WIZARD_DROP_DOWN.create(getWindow());
importResourcesAction = ActionFactory.IMPORT.create(getWindow());
registerGlobalAction(importResourcesAction);
exportResourcesAction = ActionFactory.EXPORT.create(getWindow());
registerGlobalAction(exportResourcesAction);
buildAllAction = IDEActionFactory.BUILD.create(getWindow());
registerGlobalAction(buildAllAction);
cleanAction = IDEActionFactory.BUILD_CLEAN.create(getWindow());
registerGlobalAction(cleanAction);
toggleAutoBuildAction = IDEActionFactory.BUILD_AUTOMATICALLY.create(getWindow());
registerGlobalAction(toggleAutoBuildAction);
saveAction = ActionFactory.SAVE.create(getWindow());
registerGlobalAction(saveAction);
saveAsAction = ActionFactory.SAVE_AS.create(getWindow());
registerGlobalAction(saveAsAction);
saveAllAction = ActionFactory.SAVE_ALL.create(getWindow());
registerGlobalAction(saveAllAction);
undoAction = ActionFactory.UNDO.create(getWindow());
registerGlobalAction(undoAction);
redoAction = ActionFactory.REDO.create(getWindow());
registerGlobalAction(redoAction);
cutAction = ActionFactory.CUT.create(getWindow());
registerGlobalAction(cutAction);
copyAction = ActionFactory.COPY.create(getWindow());
registerGlobalAction(copyAction);
pasteAction = ActionFactory.PASTE.create(getWindow());
registerGlobalAction(pasteAction);
printAction = ActionFactory.PRINT.create(getWindow());
registerGlobalAction(printAction);
selectAllAction = ActionFactory.SELECT_ALL.create(getWindow());
registerGlobalAction(selectAllAction);
findAction = ActionFactory.FIND.create(getWindow());
registerGlobalAction(findAction);
closeAction = ActionFactory.CLOSE.create(getWindow());
registerGlobalAction(closeAction);
closeAllAction = ActionFactory.CLOSE_ALL.create(getWindow());
registerGlobalAction(closeAllAction);
closeAllSavedAction = ActionFactory.CLOSE_ALL_SAVED.create(getWindow());
registerGlobalAction(closeAllSavedAction);
helpContentsAction = ActionFactory.HELP_CONTENTS.create(getWindow());
registerGlobalAction(helpContentsAction);
aboutAction = ActionFactory.ABOUT.create(getWindow());
aboutAction
.setImageDescriptor(IDEInternalWorkbenchImages
.getImageDescriptor(IDEInternalWorkbenchImages.IMG_OBJS_DEFAULT_PROD));
registerGlobalAction(aboutAction);
openPreferencesAction = ActionFactory.PREFERENCES.create(getWindow());
registerGlobalAction(openPreferencesAction);
addBookmarkAction = IDEActionFactory.BOOKMARK.create(getWindow());
registerGlobalAction(addBookmarkAction);
addTaskAction = IDEActionFactory.ADD_TASK.create(getWindow());
registerGlobalAction(addTaskAction);
deleteAction = ActionFactory.DELETE.create(getWindow());
registerGlobalAction(deleteAction);
AboutInfo[] infos = IDEWorkbenchPlugin.getDefault().getFeatureInfos();
// See if a welcome page is specified
for (int i = 0; i < infos.length; i++) {
if (infos[i].getWelcomePageURL() != null) {
quickStartAction = IDEActionFactory.QUICK_START.create(getWindow());
registerGlobalAction(quickStartAction);
break;
}
}
// See if a tips and tricks page is specified
for (int i = 0; i < infos.length; i++) {
if (infos[i].getTipsAndTricksHref() != null) {
tipsAndTricksAction = IDEActionFactory.TIPS_AND_TRICKS.create(getWindow());
registerGlobalAction(tipsAndTricksAction);
break;
}
}
// Actions for invisible accelerators
showViewMenuAction = ActionFactory.SHOW_VIEW_MENU.create(getWindow());
registerGlobalAction(showViewMenuAction);
showPartPaneMenuAction = ActionFactory.SHOW_PART_PANE_MENU.create(getWindow());
registerGlobalAction(showPartPaneMenuAction);
nextEditorAction = ActionFactory.NEXT_EDITOR.create(getWindow());
prevEditorAction = ActionFactory.PREVIOUS_EDITOR.create(getWindow());
ActionFactory.linkCycleActionPair(nextEditorAction, prevEditorAction);
registerGlobalAction(nextEditorAction);
registerGlobalAction(prevEditorAction);
nextPartAction = ActionFactory.NEXT_PART.create(getWindow());
prevPartAction = ActionFactory.PREVIOUS_PART.create(getWindow());
ActionFactory.linkCycleActionPair(nextPartAction, prevPartAction);
registerGlobalAction(nextPartAction);
registerGlobalAction(prevPartAction);
nextPerspectiveAction = ActionFactory.NEXT_PERSPECTIVE.create(getWindow());
prevPerspectiveAction = ActionFactory.PREVIOUS_PERSPECTIVE.create(getWindow());
ActionFactory.linkCycleActionPair(nextPerspectiveAction, prevPerspectiveAction);
registerGlobalAction(nextPerspectiveAction);
registerGlobalAction(prevPerspectiveAction);
activateEditorAction = ActionFactory.ACTIVATE_EDITOR.create(getWindow());
registerGlobalAction(activateEditorAction);
maximizePartAction = ActionFactory.MAXIMIZE.create(getWindow());
registerGlobalAction(maximizePartAction);
workbenchEditorsAction = ActionFactory.SHOW_OPEN_EDITORS.create(getWindow());
registerGlobalAction(workbenchEditorsAction);
workbookEditorsAction = ActionFactory.SHOW_WORKBOOK_EDITORS.create(getWindow());
registerGlobalAction(workbookEditorsAction);
hideShowEditorAction = ActionFactory.SHOW_EDITOR.create(getWindow());
registerGlobalAction(hideShowEditorAction);
savePerspectiveAction = ActionFactory.SAVE_PERSPECTIVE.create(getWindow());
registerGlobalAction(savePerspectiveAction);
editActionSetAction = ActionFactory.EDIT_ACTION_SETS.create(getWindow());
registerGlobalAction(editActionSetAction);
lockToolBarAction = ActionFactory.LOCK_TOOL_BAR.create(getWindow());
registerGlobalAction(lockToolBarAction);
resetPerspectiveAction = ActionFactory.RESET_PERSPECTIVE.create(getWindow());
registerGlobalAction(resetPerspectiveAction);
closePerspAction = ActionFactory.CLOSE_PERSPECTIVE.create(getWindow());
registerGlobalAction(closePerspAction);
closeAllPerspsAction = ActionFactory.CLOSE_ALL_PERSPECTIVES.create(getWindow());
registerGlobalAction(closeAllPerspsAction);
forwardHistoryAction = ActionFactory.FORWARD_HISTORY.create(getWindow());
registerGlobalAction(forwardHistoryAction);
backwardHistoryAction = ActionFactory.BACKWARD_HISTORY.create(getWindow());
registerGlobalAction(backwardHistoryAction);
revertAction = ActionFactory.REVERT.create(getWindow());
registerGlobalAction(revertAction);
refreshAction = ActionFactory.REFRESH.create(getWindow());
registerGlobalAction(refreshAction);
propertiesAction = ActionFactory.PROPERTIES.create(getWindow());
registerGlobalAction(propertiesAction);
quitAction = ActionFactory.QUIT.create(getWindow());
registerGlobalAction(quitAction);
moveAction = ActionFactory.MOVE.create(getWindow());
registerGlobalAction(moveAction);
renameAction = ActionFactory.RENAME.create(getWindow());
registerGlobalAction(renameAction);
goIntoAction = ActionFactory.GO_INTO.create(getWindow());
registerGlobalAction(goIntoAction);
backAction = ActionFactory.BACK.create(getWindow());
registerGlobalAction(backAction);
forwardAction = ActionFactory.FORWARD.create(getWindow());
registerGlobalAction(forwardAction);
upAction = ActionFactory.UP.create(getWindow());
registerGlobalAction(upAction);
nextAction = ActionFactory.NEXT.create(getWindow());
nextAction.setImageDescriptor(
IDEInternalWorkbenchImages.getImageDescriptor(
IDEInternalWorkbenchImages.IMG_ETOOL_NEXT_NAV));
registerGlobalAction(nextAction);
previousAction = ActionFactory.PREVIOUS.create(getWindow());
previousAction.setImageDescriptor(
IDEInternalWorkbenchImages.getImageDescriptor(
IDEInternalWorkbenchImages.IMG_ETOOL_PREVIOUS_NAV));
registerGlobalAction(previousAction);
buildProjectAction = IDEActionFactory.BUILD_PROJECT.create(getWindow());
registerGlobalAction(buildProjectAction);
openProjectAction = IDEActionFactory.OPEN_PROJECT.create(getWindow());
registerGlobalAction(openProjectAction);
closeProjectAction = IDEActionFactory.CLOSE_PROJECT.create(getWindow());
registerGlobalAction(closeProjectAction);
openWorkspaceAction = IDEActionFactory.OPEN_WORKSPACE.create(getWindow());
registerGlobalAction(openWorkspaceAction);
projectPropertyDialogAction = IDEActionFactory.OPEN_PROJECT_PROPERTIES.create(getWindow());
registerGlobalAction(projectPropertyDialogAction);
if (getWindow().getWorkbench().getIntroManager().hasIntro()) {
introAction = ActionFactory.INTRO.create(window);
registerGlobalAction(introAction);
}
final String showInQuickMenuId= "org.eclipse.ui.navigate.showInQuickMenu"; //$NON-NLS-1$
showInQuickMenu= new QuickMenuAction(showInQuickMenuId) {
protected void fillMenu(IMenuManager menu) {
menu.add(ContributionItemFactory.VIEWS_SHOW_IN.create(getWindow()));
}
};
registerGlobalAction(showInQuickMenu);
final String newQuickMenuId= "org.eclipse.ui.file.newQuickMenu"; //$NON-NLS-1$
newQuickMenu= new QuickMenuAction(newQuickMenuId) {
protected void fillMenu(IMenuManager menu) {
menu.add(new NewWizardMenu(getWindow()));
}
};
registerGlobalAction(newQuickMenu);
pinEditorContributionItem = ContributionItemFactory.PIN_EDITOR.create(getWindow());
}
private void setCurrentActionBarConfigurer(IActionBarConfigurer actionBarConfigurer)
{
this.actionBarConfigurer = actionBarConfigurer;
}
private void registerGlobalAction(IAction action) {
actionBarConfigurer.registerGlobalAction(action);
}
/**
* Update the build actions on the toolbar and menu bar based on the
* current state of autobuild
*/
void updateBuildActions(boolean autoBuilding) {
//update menu bar actions in project menu
buildAllAction.setEnabled(!autoBuilding);
buildProjectAction.setEnabled(!autoBuilding);
toggleAutoBuildAction.setChecked(autoBuilding);
//update the cool bar build button
ICoolBarManager coolBarManager = actionBarConfigurer.getCoolBarManager();
IContributionItem cbItem = coolBarManager.find(IWorkbenchActionConstants.TOOLBAR_FILE);
if (!(cbItem instanceof ToolBarContributionItem)) {
// This should not happen
IDEWorkbenchPlugin.log("File toolbar contribution item is missing"); //$NON-NLS-1$
return;
}
ToolBarContributionItem toolBarItem = (ToolBarContributionItem)cbItem;
IToolBarManager toolBarManager = toolBarItem.getToolBarManager();
if (toolBarManager == null) {
// error if this happens, file toolbar assumed to always exist
IDEWorkbenchPlugin.log("File toolbar is missing"); //$NON-NLS-1$
return;
}
//add the build button if autobuild is on, and remove it otherwise
if (!autoBuilding) {
toolBarManager.appendToGroup(IWorkbenchActionConstants.BUILD_GROUP, buildAllAction);
toolBarManager.update(false);
toolBarItem.update(ICoolBarManager.SIZE);
} else if (buildAllAction != null) {
toolBarManager.remove(buildAllAction.getId());
toolBarManager.update(false);
toolBarItem.update(ICoolBarManager.SIZE);
}
}
/**
* Update the pin action's tool bar
*/
void updatePinActionToolbar() {
ICoolBarManager coolBarManager = actionBarConfigurer.getCoolBarManager();
IContributionItem cbItem = coolBarManager.find(IWorkbenchActionConstants.TOOLBAR_NAVIGATE);
if (!(cbItem instanceof ToolBarContributionItem)) {
// This should not happen
IDEWorkbenchPlugin.log("Navigation toolbar contribution item is missing"); //$NON-NLS-1$
return;
}
ToolBarContributionItem toolBarItem = (ToolBarContributionItem)cbItem;
IToolBarManager toolBarManager = toolBarItem.getToolBarManager();
if (toolBarManager == null) {
// error if this happens, navigation toolbar assumed to always exist
IDEWorkbenchPlugin.log("Navigate toolbar is missing"); //$NON-NLS-1$
return;
}
toolBarManager.update(false);
toolBarItem.update(ICoolBarManager.SIZE);
}
}