blob: 0e81b9586ec21c956b7c5ddfc6fa09f257eed5e2 [file] [log] [blame]
/*******************************************************************************
* 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.IToolBarManager;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.rap.interactiondesign.tests.impl.ConfigurableStackImpl;
import org.eclipse.rap.interactiondesign.tests.impl.ConfigurableStackImpl2;
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.PresentationFactory;
import org.eclipse.rap.ui.interactiondesign.internal.ConfigurableStackProxy;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.ui.IViewPart;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.presentations.IPartMenu;
import org.eclipse.ui.presentations.IPresentablePart;
import org.eclipse.ui.presentations.IStackPresentationSite;
import org.eclipse.ui.presentations.StackPresentation;
public class ConfigurableStackTest extends RAPTestCase {
public static final String VIEW_ID
= "org.eclipse.rap.ui.interactiondesign.test.view";
public static final String VIEW2_ID
= "org.eclipse.rap.ui.interactiondesign.test.view2";
private static final String STACK_ID
= "org.eclipse.rap.ui.interactiondesign.test.stackPresentation";
private ConfigurableStack stack;
private IStackPresentationSite site;
private ConfigurableStackProxy proxy;
protected void setUp() throws Exception {
if( stack == null ) {
stack = getConfigurableStack();
}
if( site == null ) {
site = stack.getSite();
}
}
public void testGetLayoutPartId() {
String layoutPartId = ConfigurableStack.getLayoutPartId( site );
assertEquals( "topLeftTest", layoutPartId );
}
public void testGetStackPresentationId() {
String stackPresentationId = stack.getStackPresentationId();
assertEquals( STACK_ID, stackPresentationId );
}
public void testGetConfigAction() {
ConfigurationAction configAction = stack.getConfigAction();
assertTrue( configAction instanceof ConfigurationActionImpl );
}
public void testGetPaneId() {
String paneId = stack.getPaneId( site );
assertEquals( VIEW_ID, paneId );
}
public void testGetParent() {
Composite parent = stack.getParent();
assertNotNull( parent );
}
public void testGetPartToolBarManager() {
IWorkbench workbench = PlatformUI.getWorkbench();
IWorkbenchWindow window = workbench.getActiveWorkbenchWindow();
IWorkbenchPage page = window.getActivePage();
IViewPart view = page.findView( VIEW_ID );
view.setFocus();
IToolBarManager partToolBarManager = stack.getPartToolBarManager();
assertNotNull( partToolBarManager );
}
public void testGetShowTitle() {
assertFalse( stack.getShowTitle() );
}
public void testGetSavedStackId() {
String savedStackId = ConfigurableStack.getSavedStackId( site );
assertEquals( IPreferenceStore.STRING_DEFAULT_DEFAULT, savedStackId );
}
public void testSetCurrentStackPresentation() {
String id = "org.eclipse.rap.ui.interactiondesign.test.stackPresentation2";
stack.setCurrentStackPresentation( id );
assertNotNull( proxy );
ConfigurableStack currentStack = proxy.getCurrentStackPresentation();
assertTrue( currentStack instanceof ConfigurableStackImpl2 );
stack.setCurrentStackPresentation( STACK_ID );
currentStack = proxy.getCurrentStackPresentation();
assertTrue( currentStack instanceof ConfigurableStackImpl );
}
public void testCreatePartToolBar() {
Control partToolBar = stack.createPartToolBar();
assertNull( partToolBar );
IToolBarManager manager = stack.getPartToolBarManager();
createToolbarItems( manager );
assertEquals( 6, manager.getItems().length );
stack.getConfigAction().saveViewActionVisibility( VIEW_ID,
"org.eclipse.actionid3",
true );
partToolBar = stack.createPartToolBar();
assertNotNull( partToolBar );
stack.getConfigAction().saveViewActionVisibility( VIEW_ID,
"org.eclipse.actionid3",
false );
}
public void testCreateViewMenu() {
IPartMenu viewMenu = stack.createViewMenu();
assertNull( viewMenu );
stack.getConfigAction().savePartMenuVisibility( true );
viewMenu = stack.createViewMenu();
assertNotNull( viewMenu );
viewMenu.showMenu( new Point( 0, 0 ) );
stack.getConfigAction().savePartMenuVisibility( false );
}
public void testProxyConfigAdaptable() {
IPresentablePart[] partList = site.getPartList();
IPresentablePart part = partList[ partList.length -1 ];
proxy.removePart( part );
proxy.addPart( part, null );
IPartMenu menu = part.getMenu();
IPartMenu viewMenu = stack.createViewMenu();
assertEquals( menu, viewMenu );
Control toolBar = part.getToolBar();
Control viewToolBar = stack.createPartToolBar();
assertEquals( toolBar, viewToolBar );
}
public void testProxyLoadSavedStack() {
ConfigurationAction configAction = stack.getConfigAction();
String id = "org.eclipse.rap.ui.interactiondesign.test.stackPresentation2";
configAction.saveStackPresentationId( id );
Composite parent = stack.getParent();
ConfigurableStackProxy confProxy
= new ConfigurableStackProxy( parent,
site,
PresentationFactory.KEY_VIEW );
ConfigurableStack currentStack = confProxy.getCurrentStackPresentation();
String stackPresentationId = currentStack.getStackPresentationId();
String stringDefaultDefault = IPreferenceStore.STRING_DEFAULT_DEFAULT;
configAction.saveStackPresentationId( stringDefaultDefault );
assertEquals( id, stackPresentationId );
}
public void testProxySetShowTitle() {
assertFalse( stack.getShowTitle() );
proxy.setShowTitle( true );
assertTrue( stack.getShowTitle() );
}
private void createToolbarItems( final IToolBarManager manager ) {
for( int i = 0; i < 5; i++ ) {
Action action = new Action() {};
action.setId( "org.eclipse.actionid" + i );
action.setText( "Action" + i );
ActionContributionItem item = new ActionContributionItem( action );
manager.add( item );
}
}
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;
}
}