Java tutorial
/******************************************************************************* * Copyright (c) 2010, 2011 LogSaw project 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: * LogSaw project committers - initial API and implementation *******************************************************************************/ package net.sf.logsaw.rcp; import org.eclipse.jface.action.ActionContributionItem; import org.eclipse.jface.action.GroupMarker; import org.eclipse.jface.action.IContributionItem; import org.eclipse.jface.action.IContributionManagerOverrides; import org.eclipse.jface.action.IMenuManager; import org.eclipse.jface.action.MenuManager; import org.eclipse.jface.action.Separator; import org.eclipse.jface.util.Util; import org.eclipse.ui.IWorkbenchActionConstants; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.actions.ActionFactory; import org.eclipse.ui.actions.ActionFactory.IWorkbenchAction; import org.eclipse.ui.actions.ContributionItemFactory; import org.eclipse.ui.application.ActionBarAdvisor; import org.eclipse.ui.application.IActionBarConfigurer; import org.eclipse.ui.menus.CommandContributionItem; /** * An action bar advisor is responsible for creating, adding, and disposing of * the actions added to a workbench window. Each window will be populated with * new actions. */ public class ApplicationActionBarAdvisor extends ActionBarAdvisor { // Actions - important to allocate these only in makeActions, and then use // them // in the fill methods. This ensures that the actions aren't recreated // when fillActionBars is called with FILL_PROXY. private IWorkbenchAction quitAction; private IContributionItem showViewItem; private IWorkbenchAction newEditorAction; private IWorkbenchAction resetPerspectiveAction; private IWorkbenchAction openPreferencesAction; private IWorkbenchAction showHelpAction; private IWorkbenchAction searchHelpAction; private IWorkbenchAction dynamicHelpAction; private IWorkbenchAction aboutAction; /** * Constructor. * @param configurer */ public ApplicationActionBarAdvisor(IActionBarConfigurer configurer) { super(configurer); } @Override protected void makeActions(final IWorkbenchWindow window) { // Creates the actions and registers them. // Registering is needed to ensure that key bindings work. // The corresponding commands keybindings are defined in the plugin.xml // file. // Registering also provides automatic disposal of the actions when // the window is closed. quitAction = ActionFactory.QUIT.create(window); register(quitAction); showViewItem = ContributionItemFactory.VIEWS_SHORTLIST.create(window); newEditorAction = ActionFactory.NEW_EDITOR.create(window); register(newEditorAction); resetPerspectiveAction = ActionFactory.RESET_PERSPECTIVE.create(window); register(resetPerspectiveAction); openPreferencesAction = ActionFactory.PREFERENCES.create(window); register(openPreferencesAction); showHelpAction = ActionFactory.HELP_CONTENTS.create(window); register(showHelpAction); searchHelpAction = ActionFactory.HELP_SEARCH.create(window); register(searchHelpAction); dynamicHelpAction = ActionFactory.DYNAMIC_HELP.create(window); register(dynamicHelpAction); aboutAction = ActionFactory.ABOUT.create(window); register(aboutAction); } @Override protected void fillMenuBar(IMenuManager menuBar) { MenuManager fileMenu = new MenuManager(Messages.ApplicationActionBarAdvisor_menu_file, IWorkbenchActionConstants.M_FILE); menuBar.add(fileMenu); { fileMenu.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS)); fileMenu.add(new Separator()); // If we're on OS X we shouldn't show this command in the File menu. It // should be invisible to the user. However, we should not remove it - // the carbon UI code will do a search through our menu structure // looking for it when Cmd-Q is invoked (or Quit is chosen from the // application menu. ActionContributionItem quitItem = new ActionContributionItem(quitAction); quitItem.setVisible(!Util.isMac()); fileMenu.add(quitItem); } MenuManager windowMenu = new MenuManager(Messages.ApplicationActionBarAdvisor_menu_window, IWorkbenchActionConstants.M_WINDOW); menuBar.add(windowMenu); { MenuManager openViewMenu = new MenuManager(Messages.ApplicationActionBarAdvisor_menu_showView, "showView"); //$NON-NLS-1$ openViewMenu.add(showViewItem); windowMenu.add(newEditorAction); windowMenu.add(new Separator()); windowMenu.add(openViewMenu); windowMenu.add(new Separator()); windowMenu.add(resetPerspectiveAction); Separator sep = new Separator(IWorkbenchActionConstants.MB_ADDITIONS); sep.setVisible(!Util.isMac()); windowMenu.add(sep); // See comment above at quitAction ActionContributionItem openPreferencesItem = new ActionContributionItem(openPreferencesAction); openPreferencesItem.setVisible(!Util.isMac()); windowMenu.add(openPreferencesItem); } MenuManager helpMenu = new MenuManager(Messages.ApplicationActionBarAdvisor_menu_help, IWorkbenchActionConstants.M_HELP); helpMenu.setOverrides(new IContributionManagerOverrides() { /* (non-Javadoc) * @see org.eclipse.jface.action.IContributionManagerOverrides#getVisible(org.eclipse.jface.action.IContributionItem) */ @Override public Boolean getVisible(IContributionItem item) { if ((item instanceof CommandContributionItem) && ((CommandContributionItem) item).getId() .equals("org.eclipse.equinox.p2.ui.sdk.install")) { // Hide the 'Install New Software' action return Boolean.FALSE; } return null; } /* (non-Javadoc) * @see org.eclipse.jface.action.IContributionManagerOverrides#getText(org.eclipse.jface.action.IContributionItem) */ @Override public String getText(IContributionItem item) { return null; } /* (non-Javadoc) * @see org.eclipse.jface.action.IContributionManagerOverrides#getEnabled(org.eclipse.jface.action.IContributionItem) */ @Override public Boolean getEnabled(IContributionItem item) { return null; } /* (non-Javadoc) * @see org.eclipse.jface.action.IContributionManagerOverrides#getAcceleratorText(org.eclipse.jface.action.IContributionItem) */ @Override public String getAcceleratorText(IContributionItem item) { return null; } /* (non-Javadoc) * @see org.eclipse.jface.action.IContributionManagerOverrides#getAccelerator(org.eclipse.jface.action.IContributionItem) */ @Override public Integer getAccelerator(IContributionItem item) { return null; } }); menuBar.add(helpMenu); { helpMenu.add(showHelpAction); helpMenu.add(searchHelpAction); helpMenu.add(dynamicHelpAction); helpMenu.add(new Separator()); helpMenu.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS)); helpMenu.add(new Separator()); helpMenu.add(aboutAction); } } }