/*******************************************************************************
* Copyright (c) 2007, 2014 compeople AG 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:
* compeople AG - initial API and implementation
*******************************************************************************/
package org.eclipse.riena.internal.ui.ridgets.swt;
import org.eclipse.core.databinding.observable.Realm;
import org.eclipse.jface.databinding.swt.SWTObservables;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.RowLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.riena.core.test.RienaTestCase;
import org.eclipse.riena.core.test.collect.UITestCase;
import org.eclipse.riena.core.util.ReflectionUtils;
import org.eclipse.riena.ui.ridgets.IRidget;
import org.eclipse.riena.ui.swt.utils.SwtUtilities;
/**
*
*/
@UITestCase
public abstract class AbstractRidgetSharedTestCase extends RienaTestCase {
private Shell shell;
private Control widget;
private IRidget ridget1;
private IRidget ridget2;
@Override
protected void setUp() throws Exception {
super.setUp();
final Display display = Display.getDefault();
final Realm realm = SWTObservables.getRealm(display);
assertNotNull(realm);
ReflectionUtils.invokeHidden(realm, "setDefault", realm);
shell = new Shell(SWT.SYSTEM_MODAL | SWT.ON_TOP);
shell.setLayout(new RowLayout(SWT.VERTICAL));
widget = createWidget(shell);
shell.setSize(130, 100);
shell.setLocation(0, 0);
shell.open();
}
@Override
protected void tearDown() throws Exception {
widget = null;
shell.dispose();
shell = null;
super.tearDown();
}
protected abstract Control createWidget(final Composite parent);
protected abstract IRidget createRidget();
protected IRidget getRidget1() {
if (ridget1 == null) {
ridget1 = createRidget();
}
return ridget1;
}
protected IRidget getRidget2() {
if (ridget2 == null) {
ridget2 = createRidget();
}
return ridget2;
}
protected void activateRidget1() {
activateRidget(getRidget1(), getRidget2());
}
protected void activateRidget2() {
activateRidget(getRidget2(), getRidget1());
}
private void activateRidget(final IRidget ridget, final IRidget toDeactivate) {
assertNull(ridget.getUIControl());
assertFalse(SwtUtilities.isDisposed(widget));
toDeactivate.setUIControl(null);
ridget.setUIControl(widget);
}
protected Control getWidget() {
return widget;
}
}