package com.tibco.as.spacebar.rcp; import org.eclipse.jface.action.Action; 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.IMenuListener; import org.eclipse.jface.action.IMenuManager; import org.eclipse.jface.action.MenuManager; import org.eclipse.jface.action.Separator; import org.eclipse.jface.action.ToolBarManager; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.resource.ImageRegistry; import org.eclipse.swt.SWT; import org.eclipse.ui.ISharedImages; import org.eclipse.ui.IWorkbench; import org.eclipse.ui.IWorkbenchActionConstants; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.actions.ActionFactory; import org.eclipse.ui.actions.ContributionItemFactory; import org.eclipse.ui.application.ActionBarAdvisor; import org.eclipse.ui.application.IActionBarConfigurer; import org.eclipse.ui.keys.IBindingService; import org.eclipse.ui.menus.CommandContributionItem; import org.eclipse.ui.menus.CommandContributionItemParameter; import org.eclipse.ui.plugin.AbstractUIPlugin; import com.tibco.as.spacebar.ui.Image; import com.tibco.as.spacebar.ui.SpaceBarPlugin; public class ApplicationActionBarAdvisor extends ActionBarAdvisor { private IContributionItem showViewItem; private IContributionItem fOpenWindowsItem; private IWorkbenchWindow window; private IContributionItem newWizardItem; public ApplicationActionBarAdvisor(IActionBarConfigurer configurer) { super(configurer); window = configurer.getWindowConfigurer().getWindow(); } @Override protected void makeActions(final IWorkbenchWindow window) { register(ActionFactory.NEW_WIZARD_DROP_DOWN.create(window)); register(ActionFactory.SAVE_AS.create(window)); register(ActionFactory.CLOSE.create(window)); register(ActionFactory.CLOSE_ALL.create(window)); register(ActionFactory.PRINT.create(window)); register(ActionFactory.QUIT.create(window)); register(ActionFactory.CUT.create(window)); register(ActionFactory.COPY.create(window)); register(ActionFactory.PASTE.create(window)); register(ActionFactory.DELETE.create(window)); register(ActionFactory.SELECT_ALL.create(window)); register(ActionFactory.IMPORT.create(window)); register(ActionFactory.EXPORT.create(window)); register(ActionFactory.PROPERTIES.create(window)); register(ActionFactory.PREFERENCES.create(window)); showViewItem = ContributionItemFactory.VIEWS_SHORTLIST.create(window); register(ActionFactory.OPEN_NEW_WINDOW.create(window)); getAction(ActionFactory.OPEN_NEW_WINDOW.getId()).setText("&New Window"); fOpenWindowsItem = ContributionItemFactory.OPEN_WINDOWS.create(window); register(ActionFactory.ABOUT.create(window)); getAction(ActionFactory.ABOUT.getId()).setText("&About SpaceBar"); register(ActionFactory.LOCK_TOOL_BAR.create(window)); newWizardItem = ContributionItemFactory.NEW_WIZARD_SHORTLIST .create(window); } protected void fillMenuBar(IMenuManager menuBar) { createFileMenu(menuBar); createEditMenu(menuBar); menuBar.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS)); createWindowMenu(menuBar); createHelpMenu(menuBar); } private void createFileMenu(IMenuManager menuBar) { MenuManager fileMenu = new MenuManager("&File", IWorkbenchActionConstants.M_FILE); menuBar.add(fileMenu); fileMenu.add(new GroupMarker(IWorkbenchActionConstants.FILE_START)); fileMenu.add(new GroupMarker(IWorkbenchActionConstants.NEW_EXT)); MenuManager newMenuManager = new MenuManager("New", "new"); newMenuManager.add(newWizardItem); fileMenu.add(newMenuManager); fileMenu.add(new Separator()); fileMenu.add(getAction(ActionFactory.CLOSE.getId())); fileMenu.add(getAction(ActionFactory.CLOSE_ALL.getId())); fileMenu.add(new GroupMarker(IWorkbenchActionConstants.CLOSE_EXT)); fileMenu.add(new Separator()); fileMenu.add(getAction(ActionFactory.SAVE_AS.getId())); fileMenu.add(new Separator()); fileMenu.add(getAction(ActionFactory.PRINT.getId())); fileMenu.add(new Separator()); fileMenu.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS)); fileMenu.add(new Separator()); fileMenu.add(getAction(ActionFactory.IMPORT.getId())); fileMenu.add(getAction(ActionFactory.EXPORT.getId())); fileMenu.add(new GroupMarker(IWorkbenchActionConstants.FILE_END)); fileMenu.add(new Separator()); if (Application.IS_LINUX) { fileMenu.add(getPropertiesItem()); fileMenu.add(new Separator()); } fileMenu.add(getAction(ActionFactory.QUIT.getId())); } private IContributionItem getPropertiesItem() { return getItem(ActionFactory.PROPERTIES.getId(), ActionFactory.PROPERTIES.getCommandId(), null, null, "P&roperties", "Properties", null); } private void createEditMenu(IMenuManager menuBar) { MenuManager editMenu = new MenuManager("&Edit", IWorkbenchActionConstants.M_EDIT); editMenu.add(getAction(ActionFactory.COPY.getId())); // Dummy action menuBar.add(editMenu); editMenu.setRemoveAllWhenShown(true); editMenu.addMenuListener(new IMenuListener() { public void menuAboutToShow(IMenuManager editMenu) { editMenu.add(new GroupMarker( IWorkbenchActionConstants.EDIT_START)); editMenu.add(new Separator()); editMenu.add(new GroupMarker(IWorkbenchActionConstants.UNDO_EXT)); editMenu.add(new Separator()); editMenu.add(getAction(ActionFactory.CUT.getId())); editMenu.add(getAction(ActionFactory.COPY.getId())); editMenu.add(getAction(ActionFactory.PASTE.getId())); editMenu.add(new Separator()); editMenu.add(getAction(ActionFactory.DELETE.getId())); editMenu.add(getAction(ActionFactory.SELECT_ALL.getId())); editMenu.add(new Separator()); editMenu.add(new GroupMarker(IWorkbenchActionConstants.EDIT_END)); editMenu.add(new Separator()); if (Application.IS_LINUX) { IAction preferences = getAction(ActionFactory.PREFERENCES .getId()); preferences .setImageDescriptor(getDescriptor("preferences.gif")); //$NON-NLS-1$ editMenu.add(preferences); } else { editMenu.add(getPropertiesItem()); } } }); } private static ImageDescriptor getDescriptor(String key) { ImageRegistry registry = SpaceBarPlugin.getDefault().getImageRegistry(); ImageDescriptor descriptor = registry.getDescriptor(key); if (descriptor == null) { descriptor = AbstractUIPlugin.imageDescriptorFromPlugin( "spacebar.rcp", "icons/" + key); registry.put(key, descriptor); } return descriptor; } private void createWindowMenu(IMenuManager menuBar) { MenuManager windowMenu = new MenuManager("&Window", IWorkbenchActionConstants.M_WINDOW); menuBar.add(windowMenu); MenuManager showViewMenuManager = new MenuManager("Show &View"); showViewMenuManager.add(showViewItem); windowMenu.add(showViewMenuManager); IAction openNewWindowAction = getAction(ActionFactory.OPEN_NEW_WINDOW .getId()); openNewWindowAction.setImageDescriptor(SpaceBarPlugin.getDefault() .getImageDescriptor(Image.NEW_WINDOW)); windowMenu.add(openNewWindowAction); windowMenu.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS)); windowMenu.add(fOpenWindowsItem); if (!Application.IS_LINUX) { windowMenu.add(new Separator()); IAction preferences = getAction(ActionFactory.PREFERENCES.getId()); preferences.setImageDescriptor(getDescriptor("preferences.gif")); //$NON-NLS-1$ windowMenu.add(preferences); if (Application.IS_MAC) { IContributionItem item = windowMenu .find(ActionFactory.PREFERENCES.getId()); if (item != null) item.setVisible(false); } } } private void createHelpMenu(IMenuManager menuBar) { MenuManager helpMenu = new MenuManager("&Help", IWorkbenchActionConstants.M_HELP); menuBar.add(helpMenu); helpMenu.add(new GroupMarker(IWorkbenchActionConstants.HELP_START)); helpMenu.add(new Separator()); helpMenu.add(new Action("&Show Key Bindings") { @Override public void run() { IWorkbench workbench = PlatformUI.getWorkbench(); IBindingService bindingService = (IBindingService) workbench .getService(IBindingService.class); bindingService.openKeyAssistDialog(); } }); helpMenu.add(new Separator()); helpMenu.add(new GroupMarker(IWorkbenchActionConstants.HELP_END)); helpMenu.add(new Separator()); helpMenu.add(getAction(ActionFactory.ABOUT.getId())); if (Application.IS_MAC) { IContributionItem item = helpMenu.find(ActionFactory.ABOUT.getId()); if (item != null) item.setVisible(false); } } private IContributionItem getItem(String actionId, String commandId, String image, String disabledImage, String label, String tooltip, String helpContextId) { ISharedImages sharedImages = window.getWorkbench().getSharedImages(); 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); } @Override protected void fillCoolBar(ICoolBarManager coolBar) { super.fillCoolBar(coolBar); ToolBarManager toolbar = new ToolBarManager(SWT.FLAT); toolbar.add(getAction(ActionFactory.NEW_WIZARD_DROP_DOWN.getId())); coolBar.add(toolbar); } }