/******************************************************************************* * Copyright (c) 2013 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 com.eclipsesource.tabris.internal.ui; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; import org.junit.Rule; import org.junit.Test; import com.eclipsesource.tabris.internal.ZIndexStackLayout; import com.eclipsesource.tabris.test.util.TabrisEnvironment; import com.eclipsesource.tabris.ui.AbstractPage; import com.eclipsesource.tabris.ui.ActionConfiguration; import com.eclipsesource.tabris.ui.PageConfiguration; import com.eclipsesource.tabris.ui.PageData; import com.eclipsesource.tabris.ui.UIConfiguration; public class TabrisUIIntegrationTest { @Rule public TabrisEnvironment environment = new TabrisEnvironment(); @Test public void testCanEnableActionInPageCreate() { UIImpl ui = createUI( ActionEnablingTestPage.class ); ui.getPageOperator().openPage( "foo" ); } @Test public void testCanSetActionVisibleInPageCreate() { UIImpl ui = createUI( ActionVisibleChangingTestPage.class ); ui.getPageOperator().openPage( "foo" ); } private UIImpl createUI( Class<? extends AbstractPage> pageType) { UIConfiguration configuration = new UIConfiguration(); Shell shell = new Shell( new Display() ); shell.setLayout( new ZIndexStackLayout() ); ActionConfiguration actionConfiguration = new ActionConfiguration( "bar", TestAction.class ); configuration.addPageConfiguration( new PageConfiguration( "fooRoot", TestPage.class ).setTopLevel( true ) ); configuration.addPageConfiguration( new PageConfiguration( "foo", pageType ) .addActionConfiguration( actionConfiguration ) ); RemoteUI remoteUI = new RemoteUI( shell ); Controller controller = new Controller( remoteUI, configuration.getAdapter( UIDescriptor.class ) ); UIImpl ui = new UIImpl( shell.getDisplay(), controller, configuration ); remoteUI.setController( controller ); remoteUI.setUi( ui ); ui.markInitialized(); controller.createGlobalActions( ui ); controller.createRootPages( ui ); return ui; } public static class ActionEnablingTestPage extends AbstractPage { @Override public void createContent( Composite parent, PageData data ) { setActionEnabled( "bar", false ); } } public static class ActionVisibleChangingTestPage extends AbstractPage { @Override public void createContent( Composite parent, PageData data ) { setActionVisible( "bar", false ); } } }