Java tutorial
/******************************************************************************* * Copyright (c) 2009 EclipseSource 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: * EclipseSource - initial API and implementation *******************************************************************************/ package org.eclipse.rap.interactiondesign.tests; import java.util.List; import org.eclipse.jface.action.Action; import org.eclipse.jface.action.ActionContributionItem; import org.eclipse.jface.action.MenuManager; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.rap.interactiondesign.tests.impl.ConfigurableStackImpl; import org.eclipse.rap.interactiondesign.tests.impl.ConfigurationActionImpl; import org.eclipse.rap.junit.RAPTestCase; import org.eclipse.rap.ui.interactiondesign.ConfigurableStack; import org.eclipse.rap.ui.interactiondesign.ConfigurationAction; import org.eclipse.rap.ui.interactiondesign.IConfigurationChangeListener; import org.eclipse.rap.ui.interactiondesign.PresentationFactory; import org.eclipse.rap.ui.interactiondesign.internal.ConfigurableStackProxy; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.ToolBar; import org.eclipse.swt.widgets.ToolItem; import org.eclipse.ui.internal.PartPane; import org.eclipse.ui.internal.ViewPane; import org.eclipse.ui.internal.presentations.PresentablePart; import org.eclipse.ui.presentations.IStackPresentationSite; import org.eclipse.ui.presentations.StackPresentation; public class ConfigurationActionTest extends RAPTestCase { private ConfigurableStackProxy proxy; private ConfigurableStack stack; private IStackPresentationSite site; private ConfigurationAction configAction; private boolean presentationChanged; private boolean toolBarChanged; protected void setUp() throws Exception { if (stack == null) { stack = getConfigurableStack(); } if (site == null) { site = stack.getSite(); } if (configAction == null) { configAction = stack.getConfigAction(); } } public void testSaveAndLoadStackId() { ConfigurationAction configAction = stack.getConfigAction(); String id = stack.getStackPresentationId(); String savedStackId = ConfigurableStack.getSavedStackId(site); String defaultString = IPreferenceStore.STRING_DEFAULT_DEFAULT; assertEquals(defaultString, savedStackId); configAction.saveStackPresentationId(id); savedStackId = ConfigurableStack.getSavedStackId(site); assertEquals(id, savedStackId); configAction.saveStackPresentationId(defaultString); savedStackId = ConfigurableStack.getSavedStackId(site); assertEquals(defaultString, savedStackId); } public void testGetActionIdFromToolItem() { ToolBar bar = new ToolBar(stack.getParent(), SWT.HORIZONTAL); ToolItem item = new ToolItem(bar, SWT.PUSH); Action action = new Action() { }; String id = "org.eclipse.rap.actionIDTest"; action.setId(id); ActionContributionItem actionItem = new ActionContributionItem(action); item.setData(actionItem); String actualId = ConfigurationAction.getActionIdFromToolItem(item); assertEquals(id, actualId); } public void testConfigurationChangeListener() { presentationChanged = false; toolBarChanged = false; IConfigurationChangeListener listener = new IConfigurationChangeListener() { public void presentationChanged(String newStackPresentationId) { presentationChanged = true; } public void toolBarChanged() { toolBarChanged = true; } }; configAction.addConfigurationChangeListener(listener); configAction.fireLayoutChange("newId"); assertTrue(presentationChanged); configAction.fireToolBarChange(); assertTrue(toolBarChanged); presentationChanged = false; toolBarChanged = false; configAction.removeLayoutChangeListener(listener); configAction.fireLayoutChange("newID"); assertFalse(presentationChanged); configAction.fireToolBarChange(); assertFalse(toolBarChanged); } public void testGetSite() { IStackPresentationSite actualSite = configAction.getSite(); assertEquals(site, actualSite); } public void testGetStackPresentation() { StackPresentation presentation = configAction.getStackPresentation(); assertEquals(stack, presentation); } public void testHasPartMenu() { boolean hasPartMenu = configAction.hasPartMenu(); assertFalse(hasPartMenu); PresentablePart part = (PresentablePart) site.getSelectedPart(); PartPane pane = part.getPane(); if (pane instanceof ViewPane) { MenuManager menuManager = ((ViewPane) pane).getMenuManager(); menuManager.add(new Action() { }); } hasPartMenu = configAction.hasPartMenu(); assertTrue(hasPartMenu); } public void testPartMenuVisibility() { boolean visible = configAction.isPartMenuVisible(); assertFalse(visible); configAction.savePartMenuVisibility(true); visible = configAction.isPartMenuVisible(); assertTrue(visible); configAction.savePartMenuVisibility(false); visible = configAction.isPartMenuVisible(); assertFalse(visible); } public void testPartMenuVisibilityWithGlobalValue() { boolean visible = configAction.isPartMenuVisible(); assertFalse(visible); ConfigurationActionImpl action = (ConfigurationActionImpl) configAction; action.setGlobalVisibilityAttribute(true); visible = configAction.isPartMenuVisible(); assertTrue(visible); action.setGlobalVisibilityAttribute(false); visible = configAction.isPartMenuVisible(); assertFalse(visible); } public void testActionVisibility() { String viewId = "org.eclipse.view"; String actionId = "org.eclipse.action"; boolean visible = configAction.isViewActionVisibile(viewId, actionId); assertFalse(visible); configAction.saveViewActionVisibility(viewId, actionId, true); visible = configAction.isViewActionVisibile(viewId, actionId); assertTrue(visible); configAction.saveViewActionVisibility(viewId, actionId, false); visible = configAction.isViewActionVisibile(viewId, actionId); assertFalse(visible); } public void testActionVisibilityWithGlobalValue() { String viewId = "org.eclipse.view"; String actionId = "org.eclipse.action"; boolean visible = configAction.isViewActionVisibile(viewId, actionId); assertFalse(visible); ConfigurationActionImpl action = (ConfigurationActionImpl) configAction; action.setGlobalVisibilityAttribute(true); visible = configAction.isViewActionVisibile(viewId, actionId); assertTrue(visible); action.setGlobalVisibilityAttribute(false); visible = configAction.isViewActionVisibile(viewId, actionId); assertFalse(visible); } private ConfigurableStack getConfigurableStack() { ConfigurableStack result = null; PresentationFactory factory = PresentationFactoryTest.getPresentationFactory(); Object adapter = factory.getAdapter(StackPresentation.class); assertTrue(adapter instanceof List); List proxyList = (List) adapter; assertTrue(proxyList.size() > 0); boolean found = false; for (int i = 0; i < proxyList.size() && !found; i++) { Object element = proxyList.get(i); assertTrue(element instanceof ConfigurableStackProxy); proxy = (ConfigurableStackProxy) element; ConfigurableStack stack = proxy.getCurrentStackPresentation(); if (stack instanceof ConfigurableStackImpl) { found = true; result = (ConfigurableStack) stack; } } return result; } }