| /******************************************************************************* |
| * 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.MenuManager; |
| |
| 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 filter. |
| * |
| * From Javadoc: "An IActionFilter returns whether the specific attribute |
| * matches the state of the target object." |
| * |
| * Setup: The plugin.xml contains a number of popup menu action |
| * targetted to ListElements |
| * |
| * redAction -> (name = red) |
| * blueAction -> (name = blue) |
| * trueAction -> (flag = true) |
| * falseAction -> (flag = false) |
| * redTrueAction -> (name = red) (flag = true) |
| */ |
| public class IActionFilterTest extends UITestCase { |
| |
| protected IWorkbenchWindow fWindow; |
| protected IWorkbenchPage fPage; |
| protected String STATIC_MENU_VIEW_ID = "org.eclipse.ui.tests.api.IActionFilterTest1"; |
| protected String DYNAMIC_MENU_VIEW_ID = "org.eclipse.ui.tests.api.IActionFilterTest2"; |
| |
| public IActionFilterTest(String testName) { |
| super(testName); |
| } |
| |
| public void setUp() { |
| fWindow = openTestWindow(); |
| fPage = fWindow.getActivePage(); |
| } |
| |
| public void testStaticLifecycle() throws Throwable { |
| testLifecycle(STATIC_MENU_VIEW_ID); |
| } |
| |
| public void testDynamicLifecycle() throws Throwable { |
| testLifecycle(DYNAMIC_MENU_VIEW_ID); |
| } |
| |
| /** |
| * Select a list element, popup the menu, and verify that the |
| * action filter is called. |
| * |
| * See Setup above. |
| */ |
| private void testLifecycle(String viewId) throws Throwable { |
| // Create a list view. |
| ListView view = (ListView)fPage.showView(viewId); |
| |
| // Create the test objects. |
| ListElement red = new ListElement("red"); |
| view.addElement(red); |
| view.selectElement(red); |
| |
| // Get action filter. |
| ListElementActionFilter filter = ListElementActionFilter.getSingleton(); |
| |
| // Open menu. Verify that action filter is called. |
| MenuManager menuMgr = view.getMenuManager(); |
| ActionUtil.fireAboutToShow(menuMgr); |
| assertTrue(filter.getCalled()); |
| } |
| |
| public void testDynamicMenuContribution() throws Throwable { |
| testMenu(DYNAMIC_MENU_VIEW_ID); |
| } |
| |
| public void testStaticMenuContribution() throws Throwable { |
| testMenu(STATIC_MENU_VIEW_ID); |
| } |
| |
| /** |
| * Select a ListElement, popup a menu and verify that the |
| * ListElementActionFilter.testAttribute method is invoked. |
| * Then verify that the correct actions are added to the |
| * popup menu. |
| * |
| * See Setup above. |
| */ |
| private void testMenu(String viewId) throws Throwable { |
| // Create the test objects. |
| ListElement red = new ListElement("red"); |
| ListElement blue = new ListElement("blue"); |
| ListElement green = new ListElement("green"); |
| ListElement redTrue = new ListElement("red", true); |
| |
| // Create a list view. |
| ListView view = (ListView)fPage.showView(viewId); |
| MenuManager menuMgr = view.getMenuManager(); |
| view.addElement(red); |
| view.addElement(blue); |
| view.addElement(green); |
| view.addElement(redTrue); |
| |
| // Get action filter. |
| ListElementActionFilter filter = ListElementActionFilter.getSingleton(); |
| |
| // Select red, verify popup. |
| view.selectElement(red); |
| ActionUtil.fireAboutToShow(menuMgr); |
| assertTrue(filter.getCalled()); |
| assertNotNull(ActionUtil.getActionWithLabel(menuMgr, "redAction_v1")); |
| assertNull(ActionUtil.getActionWithLabel(menuMgr, "blueAction_v1")); |
| assertNull(ActionUtil.getActionWithLabel(menuMgr, "trueAction_v1")); |
| assertNotNull(ActionUtil.getActionWithLabel(menuMgr, "falseAction_v1")); |
| assertNull(ActionUtil.getActionWithLabel(menuMgr, "redTrueAction_v1")); |
| view.verifyActions(this, menuMgr); |
| |
| // Select blue, verify popup. |
| filter.clearCalled(); |
| view.selectElement(blue); |
| ActionUtil.fireAboutToShow(menuMgr); |
| assertTrue(filter.getCalled()); |
| assertNull(ActionUtil.getActionWithLabel(menuMgr, "redAction_v1")); |
| assertNotNull(ActionUtil.getActionWithLabel(menuMgr, "blueAction_v1")); |
| assertNull(ActionUtil.getActionWithLabel(menuMgr, "trueAction_v1")); |
| assertNotNull(ActionUtil.getActionWithLabel(menuMgr, "falseAction_v1")); |
| assertNull(ActionUtil.getActionWithLabel(menuMgr, "redTrueAction_v1")); |
| view.verifyActions(this, menuMgr); |
| |
| // Select green, verify popup. |
| filter.clearCalled(); |
| view.selectElement(green); |
| ActionUtil.fireAboutToShow(menuMgr); |
| assertTrue(filter.getCalled()); |
| assertNull(ActionUtil.getActionWithLabel(menuMgr, "redAction_v1")); |
| assertNull(ActionUtil.getActionWithLabel(menuMgr, "blueAction_v1")); |
| assertNull(ActionUtil.getActionWithLabel(menuMgr, "trueAction_v1")); |
| assertNotNull(ActionUtil.getActionWithLabel(menuMgr, "falseAction_v1")); |
| assertNull(ActionUtil.getActionWithLabel(menuMgr, "redTrueAction_v1")); |
| view.verifyActions(this, menuMgr); |
| |
| // Select redTrue, verify popup. |
| filter.clearCalled(); |
| view.selectElement(redTrue); |
| ActionUtil.fireAboutToShow(menuMgr); |
| assertTrue(filter.getCalled()); |
| assertNotNull(ActionUtil.getActionWithLabel(menuMgr, "redAction_v1")); |
| assertNull(ActionUtil.getActionWithLabel(menuMgr, "blueAction_v1")); |
| assertNotNull(ActionUtil.getActionWithLabel(menuMgr, "trueAction_v1")); |
| assertNull(ActionUtil.getActionWithLabel(menuMgr, "falseAction_v1")); |
| assertNotNull(ActionUtil.getActionWithLabel(menuMgr, "redTrueAction_v1")); |
| view.verifyActions(this, menuMgr); |
| |
| // Select nothing, verify popup. |
| filter.clearCalled(); |
| view.selectElement(null); |
| ActionUtil.fireAboutToShow(menuMgr); |
| assertTrue(!filter.getCalled()); |
| assertNull(ActionUtil.getActionWithLabel(menuMgr, "redAction_v1")); |
| assertNull(ActionUtil.getActionWithLabel(menuMgr, "blueAction_v1")); |
| assertNull(ActionUtil.getActionWithLabel(menuMgr, "trueAction_v1")); |
| assertNull(ActionUtil.getActionWithLabel(menuMgr, "falseAction_v1")); |
| assertNull(ActionUtil.getActionWithLabel(menuMgr, "redTrueAction_v1")); |
| view.verifyActions(this, menuMgr); |
| } |
| } |