/******************************************************************************* * Copyright (c) 2004, 2010 BREDEX GmbH. * 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: * BREDEX GmbH - initial API and implementation and/or initial documentation *******************************************************************************/ package org.eclipse.jubula.app.core; import org.eclipse.jface.action.ActionContributionItem; import org.eclipse.jface.action.GroupMarker; 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.jubula.app.i18n.Messages; import org.eclipse.jubula.client.ui.utils.CommandHelper; import org.eclipse.swt.SWT; import org.eclipse.ui.ISharedImages; import org.eclipse.ui.IWorkbenchActionConstants; import org.eclipse.ui.IWorkbenchCommandConstants; 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.application.IWorkbenchWindowConfigurer; import org.eclipse.ui.ide.IDEActionFactory; import org.eclipse.ui.internal.IWorkbenchHelpContextIds; import org.eclipse.ui.internal.WorkbenchMessages; import org.eclipse.ui.internal.handlers.IActionCommandMappingService; import org.eclipse.ui.menus.CommandContributionItem; import org.eclipse.ui.menus.CommandContributionItemParameter; /** * @author BREDEX GmbH * @created 23.08.2005 */ public class JubulaActionBarAdvisor extends ActionBarAdvisor { /** WorkbenchWindow */ private IWorkbenchWindow m_window; /** Action: quit application */ private ActionFactory.IWorkbenchAction m_quitAction; /** Action: preferences */ private ActionFactory.IWorkbenchAction m_prefAction; /** Action: help */ private ActionFactory.IWorkbenchAction m_helpCont; /** Action: welcome screen */ private ActionFactory.IWorkbenchAction m_intro; /** Action: save */ private ActionFactory.IWorkbenchAction m_fileSave; /** Action: save_all */ private ActionFactory.IWorkbenchAction m_fileSaveAll; /** Action: redo */ private IWorkbenchAction m_redo; /** Action: undo */ private IWorkbenchAction m_undo; /** Action: choose workspace */ private IWorkbenchAction m_openWorkspaceAction; /** * @param configurer IActionBarConfigurer * @param windowConfigurer IWorkbenchWindowConfigurer */ public JubulaActionBarAdvisor(IActionBarConfigurer configurer, IWorkbenchWindowConfigurer windowConfigurer) { super(configurer); m_window = configurer.getWindowConfigurer().getWindow(); } /** * {@inheritDoc} */ public void fillActionBars(int flags) { if ((flags & ActionBarAdvisor.FILL_PROXY) != 0) { return; } fillActionBars(getActionBarConfigurer(), flags); } /** * * @param configurer * IactionBarConfigurer * @param flags * int */ public void fillActionBars(IActionBarConfigurer configurer, int flags) { if ((flags & ActionBarAdvisor.FILL_PROXY) == 0) { makeActions(configurer); } if ((flags & ActionBarAdvisor.FILL_MENU_BAR) != 0) { fillMenuBar(configurer.getMenuManager()); } if ((flags & ActionBarAdvisor.FILL_COOL_BAR) != 0) { fillCoolBar(configurer.getCoolBarManager()); } } /** * actions of the menu entries * @param configurer * IactionBarConfigurer */ private void makeActions(IActionBarConfigurer configurer) { m_intro = ActionFactory.INTRO.create(m_window); register(m_intro); m_helpCont = ActionFactory.HELP_CONTENTS.create(m_window); register(m_helpCont); m_quitAction = ActionFactory.QUIT.create(m_window); register(m_quitAction); m_prefAction = ActionFactory.PREFERENCES.create(m_window); register(m_prefAction); m_fileSaveAll = ActionFactory.SAVE_ALL.create(m_window); register(m_fileSaveAll); m_fileSave = ActionFactory.SAVE.create(m_window); register(m_fileSave); m_openWorkspaceAction = IDEActionFactory.OPEN_WORKSPACE .create(m_window); register(m_openWorkspaceAction); m_redo = ActionFactory.REDO.create(m_window); register(m_redo); m_undo = ActionFactory.UNDO.create(m_window); register(m_undo); } /** * designs the menubar * * @param menuBar * IMenuManager */ public void fillMenuBar(IMenuManager menuBar) { menuBar.add(createFileMenu()); menuBar.add(createEditMenu()); menuBar.add(createSearchMenu()); menuBar.add(createRunMenu()); menuBar.add(createWindowMenu()); menuBar.add(createHelpMenu()); } /** * Creates Edit menu. * * @return IMenuManager. */ private IMenuManager createEditMenu() { IMenuManager editMenu = new MenuManager(Messages.ActionBuilderEdit, IWorkbenchActionConstants.M_EDIT); /* * JubulaEditSeparator1 = Create> * JubulaEditSeparator1 = Add> * JubulaEditSeparator3 = Rename/Delete */ editMenu.add(m_redo); editMenu.add(m_undo); editMenu.add(new Separator()); editMenu.add(getCutItem()); CommandHelper.createContributionPushItem(editMenu, IWorkbenchCommandConstants.EDIT_COPY); editMenu.add(getPasteItem()); editMenu.add(new Separator()); editMenu.add(new GroupMarker("JubulaEditSeparator1")); //$NON-NLS-1$ editMenu.add(new Separator()); editMenu.add(new GroupMarker("JubulaEditSeparator2")); //$NON-NLS-1$ editMenu.add(new Separator()); editMenu.add(new GroupMarker("JubulaEditSeparator3")); //$NON-NLS-1$ return editMenu; } /** * Creates a Search menu. * * @return the menu manager for the created menu. */ private IMenuManager createSearchMenu() { IMenuManager searchMenu = new MenuManager(Messages.ActionBuilderSearch, "org.eclipse.search.menu"); //$NON-NLS-1$ return searchMenu; } /** * Creates a Run menu. * * @return the menu manager for the created menu. */ private IMenuManager createRunMenu() { IMenuManager runMenu = new MenuManager(Messages.ActionBuilderRun, "org.eclipse.ui.run"); //$NON-NLS-1$ return runMenu; } /** * Creates a File menu. * * @return the menu manager for the created menu. */ private IMenuManager createFileMenu() { IMenuManager fileMenu = new MenuManager( Messages.ActionBuilderMyFileEntry, IWorkbenchActionConstants.M_FILE); fileMenu.add(m_fileSave); fileMenu.add(m_fileSaveAll); fileMenu.add(new Separator()); CommandHelper.createContributionPushItem(fileMenu, IWorkbenchCommandConstants.FILE_RENAME); fileMenu.add(getRefreshItem()); fileMenu.add(new Separator()); fileMenu.add(m_openWorkspaceAction); CommandHelper.createContributionPushItem(fileMenu, IWorkbenchCommandConstants.FILE_RESTART); fileMenu.add(new Separator()); CommandHelper.createContributionPushItem(fileMenu, ActionFactory.IMPORT.getCommandId()); CommandHelper.createContributionPushItem(fileMenu, ActionFactory.EXPORT.getCommandId()); fileMenu.add(new Separator()); fileMenu.add(m_quitAction); return fileMenu; } /** * Creates the Window menu. * @return IMenuManager. */ private IMenuManager createWindowMenu() { IMenuManager windowMenu = new MenuManager(Messages .ActionBuilderWindowEntry, IWorkbenchActionConstants.M_WINDOW); windowMenu.add(createOpenPersp()); windowMenu.add(createShowView()); windowMenu.add(new Separator()); windowMenu.add(getResetPerspectiveItem()); windowMenu.add(new Separator()); windowMenu.add(m_prefAction); return windowMenu; } /** * Creates Show View menu. * @return IMenuManager. */ private IMenuManager createShowView() { IMenuManager showView = new MenuManager(Messages.ActionBuildershowView); showView.add( ContributionItemFactory.VIEWS_SHORTLIST.create(m_window)); return showView; } /** * Creates Open Perspective * * @return IMenuManager. */ private IMenuManager createOpenPersp() { IMenuManager openPersp = new MenuManager( Messages.ActionBuilderopenPerspective); openPersp.add(ContributionItemFactory.PERSPECTIVES_SHORTLIST .create(m_window)); return openPersp; } /** * Creates the help menu. * @return an IMenuManager. */ private IMenuManager createHelpMenu() { IMenuManager helpMenu = new MenuManager(Messages .ActionBuilderMyHelpEntry, IWorkbenchActionConstants.M_HELP); helpMenu.add(m_intro); helpMenu.add(m_helpCont); helpMenu.add(new Separator("helpEnd")); //$NON-NLS-1$ helpMenu.add(new Separator()); helpMenu.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS)); helpMenu.add(new Separator()); CommandHelper.createContributionPushItem( helpMenu, IWorkbenchCommandConstants.HELP_ABOUT); return helpMenu; } /** * designs the toolbar * * @param coolBar * ICoolBarManager */ public void fillCoolBar(ICoolBarManager coolBar) { IToolBarManager toolBar = new ToolBarManager(SWT.FLAT | SWT.RIGHT); toolBar.add(new ActionContributionItem(m_fileSave)); coolBar.add(new ToolBarContributionItem(toolBar, "main")); //$NON-NLS-1$ coolBar.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS)); } /** * * disposes the actions */ public void dispose() { if (m_fileSave != null) { m_fileSave.dispose(); } if (m_helpCont != null) { m_helpCont.dispose(); } if (m_prefAction != null) { m_prefAction.dispose(); } if (m_quitAction != null) { m_quitAction.dispose(); } if (m_openWorkspaceAction != null) { m_openWorkspaceAction.dispose(); } } /** * @return the reset perspective item */ private IContributionItem getResetPerspectiveItem() { return getItem( ActionFactory.RESET_PERSPECTIVE.getId(), ActionFactory.RESET_PERSPECTIVE.getCommandId(), null, null, WorkbenchMessages.ResetPerspective_text, WorkbenchMessages.ResetPerspective_toolTip, IWorkbenchHelpContextIds.RESET_PERSPECTIVE_ACTION); } /** * @return the refresh item */ private IContributionItem getRefreshItem() { return getItem(ActionFactory.REFRESH.getId(), ActionFactory.REFRESH.getCommandId(), null, null, WorkbenchMessages.Workbench_refresh, WorkbenchMessages.Workbench_refreshToolTip, null); } /** * @return the paste item */ private IContributionItem getPasteItem() { return getItem( ActionFactory.PASTE.getId(), ActionFactory.PASTE.getCommandId(), ISharedImages.IMG_TOOL_PASTE, ISharedImages.IMG_TOOL_PASTE_DISABLED, WorkbenchMessages.Workbench_paste, WorkbenchMessages.Workbench_pasteToolTip, null); } /** * @return the cut item */ private IContributionItem getCutItem() { return getItem( ActionFactory.CUT.getId(), ActionFactory.CUT.getCommandId(), ISharedImages.IMG_TOOL_CUT, ISharedImages.IMG_TOOL_CUT_DISABLED, WorkbenchMessages.Workbench_cut, WorkbenchMessages.Workbench_cutToolTip, null); } /** * @param actionId * the action id * @param commandId * the command id * @param image * the image * @param disabledImage * the disabled image * @param label * the label * @param tooltip * the tooltip * @param helpContextId * the help id * @return an item instance */ private IContributionItem getItem(String actionId, String commandId, String image, String disabledImage, String label, String tooltip, String helpContextId) { IWorkbenchWindow window = m_window; ISharedImages sharedImages = window.getWorkbench().getSharedImages(); IActionCommandMappingService acms = window .getService(IActionCommandMappingService.class); acms.map(actionId, commandId); CommandContributionItemParameter commandParm = new CommandContributionItemParameter( window, actionId, commandId, null, sharedImages.getImageDescriptor(image), sharedImages.getImageDescriptor(disabledImage), null, label, null, tooltip, CommandContributionItem.STYLE_PUSH, null, false); return new CommandContributionItem(commandParm); } }