| /******************************************************************************* |
| * Copyright (c) 2006, 2007 IBM Corporation 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: |
| * IBM Corporation - initial API and implementation |
| *******************************************************************************/ |
| |
| package org.eclipse.ui.tests.menus; |
| |
| import org.eclipse.core.expressions.EvaluationResult; |
| import org.eclipse.core.expressions.Expression; |
| import org.eclipse.core.expressions.IEvaluationContext; |
| import org.eclipse.core.runtime.CoreException; |
| import org.eclipse.jface.action.GroupMarker; |
| import org.eclipse.jface.action.MenuManager; |
| import org.eclipse.jface.action.Separator; |
| import org.eclipse.jface.resource.ImageDescriptor; |
| import org.eclipse.swt.SWT; |
| import org.eclipse.swt.widgets.Composite; |
| import org.eclipse.swt.widgets.Control; |
| import org.eclipse.swt.widgets.Text; |
| import org.eclipse.ui.PlatformUI; |
| import org.eclipse.ui.menus.AbstractContributionFactory; |
| import org.eclipse.ui.menus.CommandContributionItem; |
| import org.eclipse.ui.menus.IContributionRoot; |
| import org.eclipse.ui.menus.IMenuService; |
| import org.eclipse.ui.menus.WorkbenchWindowControlContribution; |
| import org.eclipse.ui.plugin.AbstractUIPlugin; |
| import org.eclipse.ui.services.IServiceLocator; |
| import org.eclipse.ui.tests.TestPlugin; |
| import org.eclipse.ui.tests.commands.ActiveActionSetExpression; |
| |
| /** |
| * @since 3.3 |
| * |
| */ |
| public class MenuBuilder { |
| private static AbstractContributionFactory viewMenuAddition = null; |
| |
| private static AbstractContributionFactory viewToolbarAddition = null; |
| |
| public static void addMenuContribution() { |
| if (!PlatformUI.isWorkbenchRunning()) { |
| return; |
| } |
| IMenuService menuService = (IMenuService) PlatformUI.getWorkbench() |
| .getService(IMenuService.class); |
| if (menuService==null) { |
| return; |
| } |
| viewMenuAddition = new AbstractContributionFactory( |
| "menu:org.eclipse.ui.tests.api.MenuTestHarness?after=additions", TestPlugin.PLUGIN_ID) { |
| public void createContributionItems(IServiceLocator serviceLocator, |
| IContributionRoot additions) { |
| CommandContributionItem item = new CommandContributionItem(serviceLocator, |
| "org.eclipse.ui.tests.menus.itemX20", |
| "org.eclipse.ui.tests.menus.enabledWorld", null, null, |
| null, null, "Item X20", null, null, |
| CommandContributionItem.STYLE_PUSH); |
| additions.addContributionItem(item, null); |
| |
| MenuManager submenu = new MenuManager("Menu X21", |
| "org.eclipse.ui.tests.menus.menuX21"); |
| item = new CommandContributionItem(serviceLocator, |
| "org.eclipse.ui.tests.menus.itemX22", |
| "org.eclipse.ui.tests.menus.updateWorld", null, null, |
| null, null, "Item X22", null, null, |
| CommandContributionItem.STYLE_PUSH); |
| submenu.add(item); |
| item = new CommandContributionItem(serviceLocator, |
| "org.eclipse.ui.tests.menus.itemX23", |
| "org.eclipse.ui.tests.menus.enabledWorld", null, null, |
| null, null, "Item X23", null, null, |
| CommandContributionItem.STYLE_PUSH); |
| submenu.add(item); |
| |
| additions.addContributionItem(submenu, null); |
| |
| item = new CommandContributionItem(serviceLocator, |
| "org.eclipse.ui.tests.menus.itemX24", |
| "org.eclipse.ui.tests.menus.enabledWorld", null, null, |
| null, null, "Item X24", null, null, |
| CommandContributionItem.STYLE_PUSH); |
| additions.addContributionItem(item, null); |
| } |
| }; |
| menuService.addContributionFactory(viewMenuAddition); |
| |
| viewToolbarAddition = new AbstractContributionFactory( |
| "toolbar:org.eclipse.ui.tests.api.MenuTestHarness", TestPlugin.PLUGIN_ID) { |
| public void createContributionItems(IServiceLocator serviceLocator, |
| IContributionRoot additions) { |
| CommandContributionItem item = new CommandContributionItem(serviceLocator, |
| "org.eclipse.ui.tests.menus.itemX25", |
| "org.eclipse.ui.tests.menus.updateWorld", null, null, |
| null, null, "Item X25", null, null, |
| CommandContributionItem.STYLE_PUSH); |
| additions.addContributionItem(item, null); |
| WorkbenchWindowControlContribution widget = new WorkbenchWindowControlContribution( |
| "org.eclipse.ui.tests.menus.itemX26") { |
| protected Control createControl(Composite parent) { |
| Text textCtrl = new Text(parent, SWT.BORDER); |
| textCtrl.setText("ABCDEFGHI"); |
| return textCtrl; |
| } |
| }; |
| additions.addContributionItem(widget, null); |
| } |
| }; |
| menuService.addContributionFactory(viewToolbarAddition); |
| } |
| |
| public static void removeMenuContribution() { |
| if (!PlatformUI.isWorkbenchRunning()) { |
| return; |
| } |
| IMenuService menuService = (IMenuService) PlatformUI.getWorkbench() |
| .getService(IMenuService.class); |
| if (menuService==null) { |
| return; |
| } |
| menuService.removeContributionFactory(viewMenuAddition); |
| viewMenuAddition = null; |
| menuService.removeContributionFactory(viewToolbarAddition); |
| viewMenuAddition = null; |
| } |
| |
| public static void addSearchMenu() { |
| IMenuService menuService = (IMenuService) PlatformUI.getWorkbench() |
| .getService(IMenuService.class); |
| |
| AbstractContributionFactory searchContribution = new AbstractContributionFactory( |
| "menu:org.eclipse.ui.main.menu?after=navigate", TestPlugin.PLUGIN_ID) { |
| public void createContributionItems(IServiceLocator menuService, |
| IContributionRoot additions) { |
| MenuManager search = new MenuManager("Se&arch", |
| "org.eclipse.search.menu"); |
| |
| search.add(new GroupMarker("internalDialogGroup")); |
| search.add(new GroupMarker("dialogGroup")); |
| search.add(new Separator("fileSearchContextMenuActionsGroup")); |
| search.add(new Separator("contextMenuActionsGroup")); |
| search.add(new Separator("occurencesActionsGroup")); |
| search.add(new Separator("extraSearchGroup")); |
| |
| additions.addContributionItem(search, null); |
| } |
| }; |
| |
| menuService.addContributionFactory(searchContribution); |
| } |
| |
| public static void addToSearchMenu() { |
| final IMenuService menuService = (IMenuService) PlatformUI |
| .getWorkbench().getService(IMenuService.class); |
| final ActiveActionSetExpression activeSearchActionSet = new ActiveActionSetExpression( |
| "org.eclipse.jdt.ui.SearchActionSet"); |
| |
| final ImageDescriptor searchIcon = AbstractUIPlugin |
| .imageDescriptorFromPlugin("org.eclise.ui.tests", |
| "icons/full/obj16/jsearch_obj.gif"); |
| AbstractContributionFactory factory = new AbstractContributionFactory( |
| "menu:org.eclipse.search.menu?after=dialogGroup", TestPlugin.PLUGIN_ID) { |
| public void createContributionItems(IServiceLocator serviceLocator, |
| IContributionRoot additions) { |
| CommandContributionItem item = new CommandContributionItem(serviceLocator, |
| "org.eclipse.jdt.internal.ui.search.openJavaSearchPage", |
| "org.eclipse.jdt.internal.ui.search.openJavaSearchPage", |
| null, searchIcon, null, null, null, null, null, |
| CommandContributionItem.STYLE_PUSH); |
| additions.addContributionItem(item, activeSearchActionSet); |
| } |
| }; |
| menuService.addContributionFactory(factory); |
| |
| factory = new AbstractContributionFactory( |
| "menu:org.eclipse.search.menu?after=contextMenuActionsGroup", TestPlugin.PLUGIN_ID) { |
| public void createContributionItems(IServiceLocator serviceLocator |
| , |
| IContributionRoot additions) { |
| MenuManager readMenu = new MenuManager("&Read Access", |
| "readAccessSubMenu"); |
| additions.addContributionItem(readMenu, activeSearchActionSet); |
| |
| readMenu.add(new GroupMarker("group1")); |
| |
| CommandContributionItem item = new CommandContributionItem(serviceLocator, |
| "org.eclipse.jdt.ui.edit.text.java.search.read.access.in.workspace", |
| "org.eclipse.jdt.ui.edit.text.java.search.read.access.in.workspace", |
| null, null, null, null, null, "W", null, |
| CommandContributionItem.STYLE_PUSH); |
| readMenu.add(item); |
| item = new CommandContributionItem(serviceLocator, |
| "org.eclipse.jdt.ui.edit.text.java.search.read.access.in.project", |
| "org.eclipse.jdt.ui.edit.text.java.search.read.access.in.project", |
| null, null, null, null, null, "P", null, |
| CommandContributionItem.STYLE_PUSH); |
| readMenu.add(item); |
| item = new CommandContributionItem(serviceLocator, |
| "org.eclipse.jdt.ui.edit.text.java.search.read.access.in.hierarchy", |
| "org.eclipse.jdt.ui.edit.text.java.search.read.access.in.hierarchy", |
| null, null, null, null, null, "H", null, |
| CommandContributionItem.STYLE_PUSH); |
| readMenu.add(item); |
| item = new CommandContributionItem(serviceLocator, |
| "org.eclipse.jdt.ui.edit.text.java.search.read.access.in.working.set", |
| "org.eclipse.jdt.ui.edit.text.java.search.read.access.in.working.set", |
| null, null, null, null, null, "S", null, |
| CommandContributionItem.STYLE_PUSH); |
| readMenu.add(item); |
| |
| MenuManager writeMenu = new MenuManager("&Write Access", |
| "writeAccessSubMenu"); |
| additions.addContributionItem(writeMenu, activeSearchActionSet); |
| |
| writeMenu.add(new GroupMarker("group1")); |
| |
| item = new CommandContributionItem(serviceLocator, |
| "org.eclipse.jdt.ui.edit.text.java.search.write.access.in.workspace", |
| "org.eclipse.jdt.ui.edit.text.java.search.write.access.in.workspace", |
| null, null, null, null, null, "W", null, |
| CommandContributionItem.STYLE_PUSH); |
| writeMenu.add(item); |
| item = new CommandContributionItem(serviceLocator, |
| "org.eclipse.jdt.ui.edit.text.java.search.write.access.in.project", |
| "org.eclipse.jdt.ui.edit.text.java.search.write.access.in.project", |
| null, null, null, null, null, "P", null, |
| CommandContributionItem.STYLE_PUSH); |
| writeMenu.add(item); |
| item = new CommandContributionItem(serviceLocator, |
| "org.eclipse.jdt.ui.edit.text.java.search.write.access.in.hierarchy", |
| "org.eclipse.jdt.ui.edit.text.java.search.write.access.in.hierarchy", |
| null, null, null, null, null, "H", null, |
| CommandContributionItem.STYLE_PUSH); |
| writeMenu.add(item); |
| item = new CommandContributionItem(serviceLocator, |
| "org.eclipse.jdt.ui.edit.text.java.search.write.access.in.working.set", |
| "org.eclipse.jdt.ui.edit.text.java.search.write.access.in.working.set", |
| null, null, null, null, null, "S", null, |
| CommandContributionItem.STYLE_PUSH); |
| writeMenu.add(item); |
| } |
| }; |
| menuService.addContributionFactory(factory); |
| } |
| |
| private static class ObjectClassExpression extends Expression { |
| public ObjectClassExpression(String c) { |
| |
| } |
| |
| /* |
| * (non-Javadoc) |
| * |
| * @see org.eclipse.core.expressions.Expression#evaluate(org.eclipse.core.expressions.IEvaluationContext) |
| */ |
| public EvaluationResult evaluate(IEvaluationContext context) |
| throws CoreException { |
| // TODO Auto-generated method stub |
| return null; |
| } |
| |
| } |
| |
| public static void addFileContribution() { |
| final IMenuService menuService = (IMenuService) PlatformUI |
| .getWorkbench().getService(IMenuService.class); |
| final ObjectClassExpression ifileExpression = new ObjectClassExpression( |
| "org.eclipse.core.resources.IFile"); |
| |
| final ImageDescriptor postIcon = AbstractUIPlugin |
| .imageDescriptorFromPlugin("org.eclise.ui.tests", |
| "icons/full/elcl16/post_wiki.gif"); |
| final ImageDescriptor loadIcon = AbstractUIPlugin |
| .imageDescriptorFromPlugin("org.eclise.ui.tests", |
| "icons/full/elcl16/load_wiki.gif"); |
| AbstractContributionFactory factory = new AbstractContributionFactory( |
| "popup:org.eclipse.ui.menus.popup.any?after=additions", TestPlugin.PLUGIN_ID) { |
| public void createContributionItems(IServiceLocator serviceLocator, |
| IContributionRoot additions) { |
| CommandContributionItem item = new CommandContributionItem(serviceLocator, |
| "org.eclipse.ui.examples.wiki.post", |
| "org.eclipse.ui.examples.wiki.post", null, postIcon, |
| null, null, null, "P", null, |
| CommandContributionItem.STYLE_PUSH); |
| additions.addContributionItem(item, ifileExpression); |
| |
| item = new CommandContributionItem(serviceLocator, |
| "org.eclipse.ui.examples.wiki.load", |
| "org.eclipse.ui.examples.wiki.load", null, loadIcon, |
| null, null, null, "L", null, |
| CommandContributionItem.STYLE_PUSH); |
| additions.addContributionItem(item, ifileExpression); |
| } |
| }; |
| menuService.addContributionFactory(factory); |
| } |
| |
| public static void addTextMenuContribition() { |
| final IMenuService menuService = (IMenuService) PlatformUI |
| .getWorkbench().getService(IMenuService.class); |
| |
| final ImageDescriptor scrambleIcon = AbstractUIPlugin |
| .imageDescriptorFromPlugin("org.eclise.ui.tests", |
| "icons/full/eobj16/scramble.gif"); |
| AbstractContributionFactory factory = new AbstractContributionFactory( |
| "popup:#TextEditorContext?after=additions", TestPlugin.PLUGIN_ID) { |
| public void createContributionItems(IServiceLocator serviceLocator, |
| IContributionRoot additions) { |
| CommandContributionItem item = new CommandContributionItem(serviceLocator, |
| "org.eclipse.ui.examples.menus.scramble.text", |
| "org.eclipse.ui.examples.menus.scramble.text", null, |
| scrambleIcon, null, null, null, "c", null, |
| CommandContributionItem.STYLE_PUSH); |
| additions.addContributionItem(item, null); |
| } |
| }; |
| menuService.addContributionFactory(factory); |
| } |
| } |