Java tutorial
/* * Copyright (c) 2012 European Synchrotron Radiation Facility, * Diamond Light Source Ltd. * * 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 */ package fable.framework.ui.internal; 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.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.ui.IWorkbenchActionConstants; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.actions.ActionFactory; import org.eclipse.ui.actions.ContributionItemFactory; import org.eclipse.ui.actions.ActionFactory.IWorkbenchAction; import org.eclipse.ui.application.ActionBarAdvisor; import org.eclipse.ui.application.IActionBarConfigurer; import fable.framework.ui.actions.UpdateAction; /** * A class to create the standard fable main menu bar for all fable rcp * applications. 01/23/2009 : add perspective short list to windows menu. * * @author Andy Gotz * */ public class MainMenuBar extends ActionBarAdvisor { /** * Switch to add a Test menu to the Window menu. The test menu is defined in * TestMenu. */ private static final boolean DO_TESTS = false; public MainMenuBar(IActionBarConfigurer configurer) { super(configurer); } public MenuManager fileMenu; public MenuManager editMenu; public MenuManager windowMenu; public MenuManager helpMenu; /** Other action. For wizard... */ private IWorkbenchAction newAction; private IWorkbenchAction exitAction; private IWorkbenchAction newWorkbenchAction; private IWorkbenchAction preferencesAction; private IWorkbenchAction perspectiveCustomizeAction; private IWorkbenchAction perspectiveSaveAsAction; private IWorkbenchAction perspectiveResetAction; private IWorkbenchAction perspectiveCloseAction; private IWorkbenchAction perspectiveCloseAllAction; private IWorkbenchAction helpAction; private IWorkbenchAction aboutAction; private IContributionItem viewsShortList; private IContributionItem perspectivesShortList; private UpdateAction updateAction; // Export, import private IWorkbenchAction exportProject; private IWorkbenchAction importProject; /** * Make fable main menu bar actions. * * @param window * - workbench window */ public void makeActions(IWorkbenchWindow window) { newAction = ActionFactory.NEW.create(window); register(newAction); exitAction = ActionFactory.QUIT.create(window); register(exitAction); newWorkbenchAction = ActionFactory.OPEN_NEW_WINDOW.create(window); register(newWorkbenchAction); perspectivesShortList = ContributionItemFactory.PERSPECTIVES_SHORTLIST.create(window); viewsShortList = ContributionItemFactory.VIEWS_SHORTLIST.create(window); perspectiveCustomizeAction = ActionFactory.EDIT_ACTION_SETS.create(window); register(perspectiveCustomizeAction); perspectiveSaveAsAction = ActionFactory.SAVE_PERSPECTIVE.create(window); register(perspectiveSaveAsAction); perspectiveResetAction = ActionFactory.RESET_PERSPECTIVE.create(window); register(perspectiveResetAction); perspectiveCloseAction = ActionFactory.CLOSE_PERSPECTIVE.create(window); register(perspectiveCloseAction); perspectiveCloseAllAction = ActionFactory.CLOSE_ALL_PERSPECTIVES.create(window); register(perspectiveCloseAllAction); preferencesAction = ActionFactory.PREFERENCES.create(window); register(preferencesAction); helpAction = ActionFactory.HELP_CONTENTS.create(window); register(helpAction); aboutAction = ActionFactory.ABOUT.create(window); register(aboutAction); updateAction = new UpdateAction(window); register(updateAction); /* * what are all these actions used for - andy ? -->Gaelle : Text Editor * plugin */ registerAsGlobal(ActionFactory.SAVE.create(window)); registerAsGlobal(ActionFactory.SAVE_AS.create(window)); registerAsGlobal(ActionFactory.ABOUT.create(window)); registerAsGlobal(ActionFactory.SAVE_ALL.create(window)); registerAsGlobal(ActionFactory.UNDO.create(window)); registerAsGlobal(ActionFactory.REDO.create(window)); registerAsGlobal(ActionFactory.CUT.create(window)); registerAsGlobal(ActionFactory.COPY.create(window)); registerAsGlobal(ActionFactory.PASTE.create(window)); registerAsGlobal(ActionFactory.SELECT_ALL.create(window)); registerAsGlobal(ActionFactory.FIND.create(window)); registerAsGlobal(ActionFactory.CLOSE.create(window)); registerAsGlobal(ActionFactory.CLOSE_ALL.create(window)); registerAsGlobal(ActionFactory.CLOSE_ALL_SAVED.create(window)); registerAsGlobal(ActionFactory.REVERT.create(window)); registerAsGlobal(ActionFactory.QUIT.create(window)); /***/ exportProject = ActionFactory.EXPORT.create(window); register(exportProject); importProject = ActionFactory.IMPORT.create(window); register(importProject); } /** * Fill fable menu bar with standard actions. * */ public void fillMenuBar(IMenuManager menuBar) { createMenuFile(); menuBar.add(fileMenu); createMenuEdit(); menuBar.add(editMenu); menuBar.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS)); createMenuWindows(); menuBar.add(windowMenu); menuBar.add(new GroupMarker(IWorkbenchActionConstants.M_HELP)); createMenuHelp(); menuBar.add(helpMenu); // common Fable menu } // @Override /* * protected void fillCoolBar(ICoolBarManager cbManager) { cbManager.add(new * GroupMarker("group.file")); //$NON-NLS-1$ { // File Group IToolBarManager * fileToolBar = new ToolBarManager(cbManager .getStyle()); * fileToolBar.add(new Separator(IWorkbenchActionConstants.NEW_GROUP)); * fileToolBar .add(new GroupMarker(IWorkbenchActionConstants.OPEN_EXT)); * fileToolBar.add(new GroupMarker( IWorkbenchActionConstants.SAVE_GROUP)); * fileToolBar.add(getAction(ActionFactory.SAVE.getId())); * * 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(IWorkbenchActionConstants.GROUP_EDITOR)); } */ public void fillCoolBar(ICoolBarManager cbManager) { cbManager.add(new GroupMarker("group.file")); //$NON-NLS-1$ { // File Group IToolBarManager fileToolBar = new ToolBarManager(cbManager.getStyle()); fileToolBar.add(new Separator(IWorkbenchActionConstants.NEW_GROUP)); fileToolBar.add(new GroupMarker(IWorkbenchActionConstants.OPEN_EXT)); fileToolBar.add(new GroupMarker(IWorkbenchActionConstants.SAVE_GROUP)); fileToolBar.add(getAction(ActionFactory.SAVE.getId())); fileToolBar.add(getAction(ActionFactory.SAVE_AS.getId())); 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(IWorkbenchActionConstants.GROUP_EDITOR)); } /** * Registers the action as global action and registers it for disposal. * * @param action * the action to register */ private void registerAsGlobal(IAction action) { getActionBarConfigurer().registerGlobalAction(action); register(action); } /** * This methods creates a menu File. * <p> * <UL> * <LI>close action <code>(ActionFactory.CLOSE)</code> * <LI>Close all action <code>(ActionFactory.CLOSE_ALL)</code> * <LI>Close and exit <code>(ActionFactory.CLOSE_EXT)</code> * <LI>Save editor <code>(ActionFactory.SAVE)</code> * <LI>Save as opened editor <code>(ActionFactory.SAVE_AS)</code> * <LI>Save all opened editors <code>(ActionFactory.SAVE_ALL)</code> * <LI>Revert <code>(ActionFactory.REVERT)</code> * <LI>Open last editor <code>(ActionFactory.REOPEN_EDITORS)</code> * <LI>Exit application <code>(ActionFactory.QUIT)</code> * </UL> * </p> */ private void createMenuFile() { fileMenu = new MenuManager("&File", IWorkbenchActionConstants.M_FILE); MenuManager newMenu = new MenuManager("New", IWorkbenchActionConstants.M_PROJECT); fileMenu.add(newMenu); newMenu.add(newAction); fileMenu.add(new GroupMarker(IWorkbenchActionConstants.FILE_START)); fileMenu.add(new GroupMarker(IWorkbenchActionConstants.NEW_EXT)); fileMenu.add(getAction(ActionFactory.CLOSE.getId())); fileMenu.add(getAction(ActionFactory.CLOSE_ALL.getId())); // menu.add(closeAllSavedAction); fileMenu.add(new GroupMarker(IWorkbenchActionConstants.CLOSE_EXT)); fileMenu.add(new Separator()); fileMenu.add(getAction(ActionFactory.SAVE.getId())); fileMenu.add(getAction(ActionFactory.SAVE_AS.getId())); fileMenu.add(getAction(ActionFactory.SAVE_ALL.getId())); fileMenu.add(new GroupMarker(IWorkbenchActionConstants.IMPORT_EXT)); fileMenu.add(new Separator()); fileMenu.add(exportProject); fileMenu.add(importProject); fileMenu.add(getAction(ActionFactory.REVERT.getId())); fileMenu.add(ContributionItemFactory.REOPEN_EDITORS .create(getActionBarConfigurer().getWindowConfigurer().getWindow())); fileMenu.add(new GroupMarker(IWorkbenchActionConstants.MRU)); fileMenu.add(new Separator()); fileMenu.add(getAction(ActionFactory.QUIT.getId())); fileMenu.add(new GroupMarker(IWorkbenchActionConstants.FILE_END)); } /** * This methods add menu Edit and its actions to MainMenuBar. * <p> * <UL> * <LI>Undo action <code>(ActionFactory.UNDO)</code> * <LI>Redo action <code>(ActionFactory.REDO)</code> * <LI>Cut action<code>(ActionFactory.CUT)</code> * <LI>Copy action <code>(ActionFactory.COPY)</code> * <LI>Paste opened editor <code>(ActionFactory.PASTE)</code> * <LI><code>(ActionFactory.CUT_EXT)</code> * <LI>Select all action <code>(ActionFactory.SELECT_ALL)</code> * <LI><code>(ActionFactory.FIND_EXT)</code> * <LI><code>(ActionFactory.ADD_EXT)</code> * <LI><code>(ActionFactory.EDIT_END)</code> * </UL> * </p> */ private void createMenuEdit() { editMenu = new MenuManager("&Edit", IWorkbenchActionConstants.M_EDIT); //$NON-NLS-1$ editMenu.add(new GroupMarker(IWorkbenchActionConstants.EDIT_START)); editMenu.add(getAction(ActionFactory.UNDO.getId())); editMenu.add(getAction(ActionFactory.REDO.getId())); editMenu.add(new GroupMarker(IWorkbenchActionConstants.UNDO_EXT)); editMenu.add(getAction(ActionFactory.CUT.getId())); editMenu.add(getAction(ActionFactory.COPY.getId())); editMenu.add(getAction(ActionFactory.PASTE.getId())); editMenu.add(new GroupMarker(IWorkbenchActionConstants.CUT_EXT)); editMenu.add(getAction(ActionFactory.SELECT_ALL.getId())); editMenu.add(new Separator()); editMenu.add(getAction(ActionFactory.FIND.getId())); editMenu.add(new GroupMarker(IWorkbenchActionConstants.FIND_EXT)); editMenu.add(new GroupMarker(IWorkbenchActionConstants.ADD_EXT)); editMenu.add(new GroupMarker(IWorkbenchActionConstants.EDIT_END)); editMenu.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS)); } /** * This method creates menu Window. */ private void createMenuWindows() { windowMenu = new MenuManager("&Window", IWorkbenchActionConstants.M_WINDOW); windowMenu.add(newWorkbenchAction); windowMenu.add(new Separator()); MenuManager perspectiveMenu = new MenuManager("Open Perspective"); windowMenu.add(perspectiveMenu); perspectiveMenu.add(perspectivesShortList); MenuManager viewsMenu = new MenuManager("Show View"); viewsMenu.add(viewsShortList); windowMenu.add(viewsMenu); windowMenu.add(new Separator()); windowMenu.add(perspectiveCustomizeAction); windowMenu.add(perspectiveSaveAsAction); windowMenu.add(perspectiveResetAction); windowMenu.add(perspectiveCloseAction); windowMenu.add(perspectiveCloseAllAction); if (DO_TESTS) { MenuManager testMenu = TestMenu.createTestMenu(); if (testMenu != null) { windowMenu.add(new Separator()); windowMenu.add(testMenu); } } windowMenu.add(new Separator()); windowMenu.add(preferencesAction); } /** * This method creates menu Help.<br> * <UL> * <LI>Help action : Opens online help. * <LI>Update action : open update box to install new features or to update * installed features for the bundle. * <LI>About Action : opens plugin about box. * </UL> */ private void createMenuHelp() { helpMenu = new MenuManager("&Help", IWorkbenchActionConstants.M_HELP); helpMenu.add(helpAction); helpMenu.add(updateAction); helpMenu.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS)); helpMenu.add(new Separator()); helpMenu.add(aboutAction); } @Override public void dispose() { super.dispose(); aboutAction.dispose(); exitAction.dispose(); helpAction.dispose(); newAction.dispose(); newWorkbenchAction.dispose(); perspectiveCustomizeAction.dispose(); perspectiveSaveAsAction.dispose(); perspectiveResetAction.dispose(); perspectiveCloseAction.dispose(); perspectiveCloseAllAction.dispose(); preferencesAction.dispose(); } }