| /******************************************************************************* |
| * 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.commands; |
| |
| import org.eclipse.core.commands.AbstractHandler; |
| import org.eclipse.core.commands.Command; |
| import org.eclipse.core.commands.ExecutionEvent; |
| import org.eclipse.core.commands.common.NotDefinedException; |
| import org.eclipse.ui.commands.ICommandService; |
| import org.eclipse.ui.handlers.IHandlerService; |
| import org.eclipse.ui.tests.harness.util.UITestCase; |
| |
| /** |
| * Tests the new help context identifier support on commands and handlers. |
| * |
| * @since 3.2 |
| */ |
| public final class HelpContextIdTest extends UITestCase { |
| |
| private static final String COMMAND_HELP_ID = "org.eclipse.ui.tests.commandHelp"; |
| |
| private static final String COMMAND_ID = "org.eclipse.ui.tests.helpContextId"; |
| |
| private static final String HANDLER_HELP_ID = "org.eclipse.ui.tests.handlerHelp"; |
| |
| private static final String NEW_HELP_ID = "new_help_id"; |
| |
| /** |
| * Constructs a new instance of <code>HelpContextIdTest</code> |
| * |
| * @param testName |
| * The name of the test; may be <code>null</code>. |
| */ |
| public HelpContextIdTest(final String testName) { |
| super(testName); |
| } |
| |
| /** |
| * Tests the reading of the help context identifier of the registry, as well |
| * as programmatic changes. It does not test whether there is notification. |
| * |
| * @throws NotDefinedException |
| * If the command defined in the registry is somehow not |
| * defined. |
| */ |
| public final void testHelpContextId() throws NotDefinedException { |
| final ICommandService commandService = (ICommandService) fWorkbench |
| .getService(ICommandService.class); |
| final IHandlerService handlerService = (IHandlerService) fWorkbench |
| .getService(IHandlerService.class); |
| String helpContextId = null; |
| |
| // At first, the help context id should be the handler. |
| helpContextId = commandService.getHelpContextId(COMMAND_ID); |
| assertEquals( |
| "The initial help context id should be that of the handler", |
| HANDLER_HELP_ID, helpContextId); |
| |
| // Retract the handler help context id by creating a handler conflict. |
| handlerService.activateHandler(COMMAND_ID, new AbstractHandler() { |
| public final Object execute(final ExecutionEvent event) { |
| return null; |
| } |
| }); |
| helpContextId = commandService.getHelpContextId(COMMAND_ID); |
| assertEquals("The help context id should now be that of the command", |
| COMMAND_HELP_ID, helpContextId); |
| |
| // Now undefine the command and check that an exception is thrown. |
| final Command command = commandService.getCommand(COMMAND_ID); |
| command.undefine(); |
| try { |
| helpContextId = commandService.getHelpContextId(COMMAND_ID); |
| fail("A NotDefinedException should have been thrown"); |
| } catch (final NotDefinedException e) { |
| // success |
| } |
| |
| // Now define the command with a different help context id. |
| command.define("New Name", null, commandService.getCategory(null), |
| null, null, NEW_HELP_ID); |
| helpContextId = commandService.getHelpContextId(COMMAND_ID); |
| assertEquals("The help context id should now be the new id", |
| NEW_HELP_ID, helpContextId); |
| } |
| } |
| |