blob: cd82c14ec30c3f5c1bfab3acc468c504e4618143 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2004 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 java.util.Map;
import org.eclipse.ui.IViewPart;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.commands.AbstractHandler;
import org.eclipse.ui.commands.ExecutionException;
import org.eclipse.ui.commands.HandlerSubmission;
import org.eclipse.ui.commands.ICommand;
import org.eclipse.ui.commands.IHandler;
import org.eclipse.ui.commands.IWorkbenchCommandSupport;
import org.eclipse.ui.commands.Priority;
import org.eclipse.ui.tests.harness.util.UITestCase;
/**
* A test for whether part identifiers work properly for HandlerSubmissions.
*
* @since 3.1
*/
public final class Bug74990Test extends UITestCase {
/**
* Constructs a new instance of <code>Bug74990Test</code>.
*
* @param name
* The name of the test
*/
public Bug74990Test(final String name) {
super(name);
}
/**
* Tests whether a part-specific handler -- submitted via Java code -- is
* matched properly. This is only using the part id. The test verifies that
* it is active when the part is active, and not active when the part is not
* active.
*
* @throws PartInitException
* If something goes wrong creating the part to which this
* handler is tied.
*
*/
public final void testPartIdSubmission() throws PartInitException {
// Define a command.
final String testCommandId = "org.eclipse.ui.tests.commands.Bug74990";
final IWorkbenchCommandSupport commandSupport = fWorkbench
.getCommandSupport();
final ICommand testCommand = commandSupport.getCommandManager()
.getCommand(testCommandId);
// Create a handler submission.
final IHandler handler = new AbstractHandler() {
public final Object execute(final Map parameterValuesByName)
throws ExecutionException {
// Do nothing.
return null;
}
};
final HandlerSubmission testSubmission = new HandlerSubmission(
"org.eclipse.ui.tests.api.MockViewPart", null, null,
testCommandId, handler, Priority.MEDIUM);
commandSupport.addHandlerSubmission(testSubmission);
try {
// Test to make sure the command is not currently handled.
assertTrue("The MockViewPart command should not be handled",
!testCommand.isHandled());
/*
* Open a window with the MockViewPart, and make sure it is now
* handled.
*/
final IWorkbenchPage page = openTestWindow().getActivePage();
final IViewPart openedView = page
.showView("org.eclipse.ui.tests.api.MockViewPart");
page.activate(openedView);
while (fWorkbench.getDisplay().readAndDispatch()) {
// Read the event queue
}
assertTrue("The MockViewPart command should be handled",
testCommand.isHandled());
// Hide the view, and test that is becomes unhandled again.
page.hideView(openedView);
while (fWorkbench.getDisplay().readAndDispatch()) {
// Read the event queue
}
assertTrue("The MockViewPart command should not be handled",
!testCommand.isHandled());
} finally {
commandSupport.removeHandlerSubmission(testSubmission);
}
}
}