blob: 24791d342757bd88eb4d4a968cf61d14e4a51236 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2009, 2010 IBM Corporation 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:
* IBM Corporation - initial API and implementation
******************************************************************************/
package org.eclipse.e4.ui.tests.application;
import org.eclipse.core.databinding.observable.Realm;
import org.eclipse.e4.core.contexts.IEclipseContext;
import org.eclipse.e4.ui.internal.workbench.swt.ResourceUtility;
import org.eclipse.e4.ui.model.application.MApplication;
import org.eclipse.e4.ui.model.application.ui.MContext;
import org.eclipse.e4.ui.model.application.ui.MElementContainer;
import org.eclipse.e4.ui.model.application.ui.MUIElement;
import org.eclipse.e4.ui.model.application.ui.basic.MWindowElement;
import org.eclipse.e4.ui.services.IServiceConstants;
import org.eclipse.e4.ui.services.IStylingEngine;
import org.eclipse.e4.ui.workbench.IResourceUtilities;
import org.eclipse.jface.databinding.swt.SWTObservables;
import org.eclipse.swt.widgets.Display;
import org.w3c.dom.css.CSSStyleDeclaration;
public abstract class UIStartupTest extends HeadlessApplicationTest {
protected Display display;
@Override
protected void setUp() throws Exception {
display = Display.getDefault();
super.setUp();
while (display.readAndDispatch())
;
}
@Override
protected void tearDown() throws Exception {
super.tearDown();
}
@Override
protected boolean needsActiveChildEventHandling() {
return false;
}
@Override
protected String getEngineURI() {
return "platform:/plugin/org.eclipse.e4.ui.workbench.swt/org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine"; //$NON-NLS-1$
}
@Override
public void testGet_ActiveChild() throws Exception {
IEclipseContext context = application.getContext();
assertNotNull(context.getActiveChild());
}
public void testGet_ActiveShell() throws Exception {
IEclipseContext context = application.getContext();
assertNull(context.get(IServiceConstants.ACTIVE_SHELL));
}
@Override
public void testGet_ActivePart() throws Exception {
IEclipseContext context = application.getContext();
assertNotNull(context.get(IServiceConstants.ACTIVE_PART));
}
public void testGet_ActiveContexts2() throws Exception {
IEclipseContext context = getActiveChildContext(application);
assertNotNull(context.get(IServiceConstants.ACTIVE_CONTEXTS));
}
public void testGet_Selection2() throws Exception {
IEclipseContext context = getActiveChildContext(application);
assertNull(context.get(IServiceConstants.ACTIVE_SELECTION));
}
public void testGet_ActiveChild2() throws Exception {
IEclipseContext context = getActiveChildContext(application);
assertNotNull(context.getActiveChild());
}
public void testGet_ActivePart2() throws Exception {
IEclipseContext context = getActiveChildContext(application);
assertNotNull(context.get(IServiceConstants.ACTIVE_PART));
}
public void testGet_ActiveShell2() throws Exception {
IEclipseContext context = getActiveChildContext(application);
assertNull(context.get(IServiceConstants.ACTIVE_SHELL));
}
public void testGetFirstPart_GetContext() {
// need to wrap this since the renderer will try build the UI for the
// part if it hasn't been built
Realm.runWithDefault(SWTObservables.getRealm(display), new Runnable() {
public void run() {
UIStartupTest.super.testGetFirstPart_GetContext();
}
});
}
public void testGetSecondPart_GetContext() {
// need to wrap this since the renderer will try build the UI for the
// part if it hasn't been built
Realm.runWithDefault(SWTObservables.getRealm(display), new Runnable() {
public void run() {
UIStartupTest.super.testGetSecondPart_GetContext();
}
});
}
// @Override
// public void test_SwitchActiveChildInContext() {
// // need to wrap this since the renderer will try build the UI for the
// // part if it hasn't been built
// Realm.runWithDefault(SWTObservables.getRealm(display), new Runnable() {
// public void run() {
// UIStartupTest.super.test_SwitchActiveChildInContext();
// }
// });
// }
private static MWindowElement getNonContainer(MWindowElement activeChild) {
if (activeChild instanceof MElementContainer<?>) {
activeChild = (MWindowElement) ((MElementContainer<?>) activeChild)
.getSelectedElement();
assertNotNull(activeChild);
activeChild = getNonContainer(activeChild);
}
return activeChild;
}
private static IEclipseContext getActiveChildContext(
MApplication application) {
MWindowElement nonContainer = getNonContainer(application
.getSelectedElement().getSelectedElement());
return ((MContext) nonContainer).getContext();
}
@Override
protected IEclipseContext createApplicationContext() {
final IEclipseContext[] contexts = new IEclipseContext[1];
Realm.runWithDefault(SWTObservables.getRealm(display), new Runnable() {
public void run() {
contexts[0] = UIStartupTest.super.createApplicationContext();
contexts[0].set(IResourceUtilities.class.getName(),
new ResourceUtility());
contexts[0].set(IStylingEngine.class.getName(),
new IStylingEngine() {
public void style(Object widget) {
// no-op
}
public void setId(Object widget, String id) {
// no-op
}
public void setClassname(Object widget,
String classname) {
// no-op
}
public CSSStyleDeclaration getStyle(Object widget) {
// TODO Auto-generated method stub
return null;
}
public void setClassnameAndId(Object widget,
String classname, String id) {
// no-op
}
});
}
});
return contexts[0];
}
protected void createGUI(final MUIElement uiRoot) {
Realm.runWithDefault(SWTObservables.getRealm(display), new Runnable() {
public void run() {
UIStartupTest.super.createGUI(uiRoot);
}
});
}
}