| /******************************************************************************* |
| * Copyright (c) 2000, 2003 IBM Corporation and others. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Common Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/cpl-v10.html |
| * |
| * Contributors: |
| * IBM Corporation - initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.ui.tests.api; |
| |
| import org.eclipse.jface.action.Action; |
| import org.eclipse.jface.action.IMenuManager; |
| import org.eclipse.jface.action.IStatusLineManager; |
| import org.eclipse.jface.action.IToolBarManager; |
| |
| import org.eclipse.ui.IActionBars; |
| import org.eclipse.ui.IViewPart; |
| import org.eclipse.ui.IWorkbenchActionConstants; |
| import org.eclipse.ui.IWorkbenchPage; |
| import org.eclipse.ui.IWorkbenchWindow; |
| import org.eclipse.ui.tests.util.ActionUtil; |
| import org.eclipse.ui.tests.util.UITestCase; |
| |
| |
| /** |
| * Test the lifecycle of an action delegate. |
| */ |
| public class IActionBarsTest extends UITestCase { |
| |
| protected IWorkbenchWindow fWindow; |
| protected IWorkbenchPage fPage; |
| |
| private class MockAction extends Action { |
| public boolean hasRun = false; |
| public MockAction() { |
| super(); |
| } |
| public void run() { |
| hasRun = true; |
| } |
| } |
| |
| /** |
| * Constructor for IActionDelegateTest |
| */ |
| public IActionBarsTest(String testName) { |
| super(testName); |
| } |
| |
| public void setUp() { |
| fWindow = openTestWindow(); |
| fPage = fWindow.getActivePage(); |
| } |
| |
| public void testGetMenuManager() throws Throwable { |
| // From Javadoc: "Returns the menu manager." |
| |
| IViewPart part = fPage.showView(MockViewPart.ID); |
| IActionBars bars = part.getViewSite().getActionBars(); |
| assertNotNull(bars); |
| IMenuManager mgr = bars.getMenuManager(); |
| assertNotNull(mgr); |
| } |
| |
| public void testGetStatusLineManager() throws Throwable { |
| // From Javadoc: "Returns the status line manager." |
| |
| IViewPart part = fPage.showView(MockViewPart.ID); |
| IActionBars bars = part.getViewSite().getActionBars(); |
| assertNotNull(bars); |
| IStatusLineManager mgr = bars.getStatusLineManager(); |
| assertNotNull(mgr); |
| } |
| |
| public void testGetToolBarManager() throws Throwable { |
| // From Javadoc: "Returns the tool bar manager." |
| |
| IViewPart part = fPage.showView(MockViewPart.ID); |
| IActionBars bars = part.getViewSite().getActionBars(); |
| assertNotNull(bars); |
| IToolBarManager mgr = bars.getToolBarManager(); |
| assertNotNull(mgr); |
| } |
| |
| public void testGetGlobalActionHandler() throws Throwable { |
| // From Javadoc: "Returns the global action handler for |
| // the action with the given id. |
| |
| IViewPart part = fPage.showView(MockViewPart.ID); |
| IActionBars bars = part.getViewSite().getActionBars(); |
| assertNotNull(bars); |
| |
| // Get actions. They should all be null. |
| assertNull(bars.getGlobalActionHandler(IWorkbenchActionConstants.CUT)); |
| assertNull(bars.getGlobalActionHandler(IWorkbenchActionConstants.COPY)); |
| assertNull(bars.getGlobalActionHandler(IWorkbenchActionConstants.UNDO)); |
| |
| // Create actions. |
| MockAction cut = new MockAction(); |
| MockAction copy = new MockAction(); |
| MockAction undo = new MockAction(); |
| |
| // Set actions. |
| bars.setGlobalActionHandler(IWorkbenchActionConstants.CUT, cut); |
| bars.setGlobalActionHandler(IWorkbenchActionConstants.COPY, copy); |
| bars.setGlobalActionHandler(IWorkbenchActionConstants.UNDO, undo); |
| bars.updateActionBars(); |
| |
| // Get actions. They should not be null. |
| assertEquals(cut, bars.getGlobalActionHandler(IWorkbenchActionConstants.CUT)); |
| assertEquals(copy, bars.getGlobalActionHandler(IWorkbenchActionConstants.COPY)); |
| assertEquals(undo, bars.getGlobalActionHandler(IWorkbenchActionConstants.UNDO)); |
| } |
| |
| public void testSetGlobalActionHandler() throws Throwable { |
| // From Javadoc: "Returns the global action handler for |
| // the action with the given id. |
| |
| IViewPart part = fPage.showView(MockViewPart.ID); |
| IActionBars bars = part.getViewSite().getActionBars(); |
| assertNotNull(bars); |
| |
| // Create actions. |
| MockAction cut = new MockAction(); |
| MockAction copy = new MockAction(); |
| MockAction undo = new MockAction(); |
| |
| // Set actions. |
| bars.setGlobalActionHandler(IWorkbenchActionConstants.CUT, cut); |
| bars.setGlobalActionHandler(IWorkbenchActionConstants.COPY, copy); |
| bars.setGlobalActionHandler(IWorkbenchActionConstants.UNDO, undo); |
| bars.updateActionBars(); |
| |
| // Run the real workbench actions. |
| // Verify the actions are invoked. |
| cut.hasRun = copy.hasRun = undo.hasRun = false; |
| ActionUtil.runActionUsingPath(this, fWindow, |
| IWorkbenchActionConstants.M_EDIT + '/' + IWorkbenchActionConstants.CUT); |
| ActionUtil.runActionUsingPath(this, fWindow, |
| IWorkbenchActionConstants.M_EDIT + '/' + IWorkbenchActionConstants.UNDO); |
| assertTrue(cut.hasRun); |
| assertTrue(!copy.hasRun); |
| assertTrue(undo.hasRun); |
| |
| // Now create a second view and run the actions again. |
| // Our global actions should not be invoked. |
| fPage.showView(MockViewPart.ID2); |
| cut.hasRun = copy.hasRun = undo.hasRun = false; |
| ActionUtil.runActionUsingPath(this, fWindow, |
| IWorkbenchActionConstants.M_EDIT + '/' + IWorkbenchActionConstants.CUT); |
| ActionUtil.runActionUsingPath(this, fWindow, |
| IWorkbenchActionConstants.M_EDIT + '/' + IWorkbenchActionConstants.UNDO); |
| assertTrue(!cut.hasRun); |
| assertTrue(!copy.hasRun); |
| assertTrue(!undo.hasRun); |
| |
| // Reactivate test view and run actions again. |
| // This time our global actions should be invoked. |
| fPage.activate(part); |
| cut.hasRun = copy.hasRun = undo.hasRun = false; |
| ActionUtil.runActionUsingPath(this, fWindow, |
| IWorkbenchActionConstants.M_EDIT + '/' + IWorkbenchActionConstants.CUT); |
| ActionUtil.runActionUsingPath(this, fWindow, |
| IWorkbenchActionConstants.M_EDIT + '/' + IWorkbenchActionConstants.UNDO); |
| assertTrue(cut.hasRun); |
| assertTrue(!copy.hasRun); |
| assertTrue(undo.hasRun); |
| } |
| } |
| |