org.eclipse.rap.interactiondesign.tests.ConfigurationActionTest.java Source code

Java tutorial

Introduction

Here is the source code for org.eclipse.rap.interactiondesign.tests.ConfigurationActionTest.java

Source

/******************************************************************************* 
* 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;
    }
}