package org.eclipse.e4.ui.workbench.addons.minmax;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import org.eclipse.e4.core.contexts.ContextInjectionFactory;
import org.eclipse.e4.core.contexts.IEclipseContext;
import org.eclipse.e4.ui.di.UISynchronize;
import org.eclipse.e4.ui.internal.workbench.ModelServiceImpl;
import org.eclipse.e4.ui.internal.workbench.PartServiceImpl;
import org.eclipse.e4.ui.internal.workbench.UIEventPublisher;
import org.eclipse.e4.ui.internal.workbench.swt.CSSRenderingUtils;
import org.eclipse.e4.ui.internal.workbench.swt.E4Application;
import org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine;
import org.eclipse.e4.ui.model.application.MAddon;
import org.eclipse.e4.ui.model.application.MApplication;
import org.eclipse.e4.ui.model.application.impl.ApplicationFactoryImpl;
import org.eclipse.e4.ui.model.application.ui.MUIElement;
import org.eclipse.e4.ui.model.application.ui.advanced.MArea;
import org.eclipse.e4.ui.model.application.ui.advanced.MPerspective;
import org.eclipse.e4.ui.model.application.ui.advanced.MPerspectiveStack;
import org.eclipse.e4.ui.model.application.ui.advanced.MPlaceholder;
import org.eclipse.e4.ui.model.application.ui.advanced.impl.AdvancedFactoryImpl;
import org.eclipse.e4.ui.model.application.ui.basic.MPart;
import org.eclipse.e4.ui.model.application.ui.basic.MPartSashContainer;
import org.eclipse.e4.ui.model.application.ui.basic.MPartStack;
import org.eclipse.e4.ui.model.application.ui.basic.MTrimmedWindow;
import org.eclipse.e4.ui.model.application.ui.basic.MWindow;
import org.eclipse.e4.ui.model.application.ui.basic.impl.BasicFactoryImpl;
import org.eclipse.e4.ui.workbench.IPresentationEngine;
import org.eclipse.e4.ui.workbench.IResourceUtilities;
import org.eclipse.e4.ui.workbench.modeling.EModelService;
import org.eclipse.e4.ui.workbench.modeling.EPartService;
import org.eclipse.e4.ui.workbench.swt.util.ISWTResourceUtilities;
import org.eclipse.emf.common.notify.Notifier;
import org.eclipse.emf.common.util.URI;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
@RunWith(Parameterized.class)
public class MaximizeBugTest {
@Parameters(name = "org.eclipse.ui.editorss: {0} - subwindowPerspective: {1} - maximizeMainFirst: {2} - addSubwindowToPerspective:{3}")
public static Collection<Object[]> data() {
final List<Object[]> data = new ArrayList<Object[]>();
// useCorrectPlaceholderId,usePerspektiveInSubWindow,maximizeMainFirst,addSubwindowToPerspective
// working
data.add(new Object[] { true, true, true, true });
data.add(new Object[] { true, true, false, true });
data.add(new Object[] { true, false, true, true });
data.add(new Object[] { true, false, false, true });
data.add(new Object[] { true, true, true, false });
data.add(new Object[] { true, true, false, false });
// not working
data.add(new Object[] { true, false, true, false });
data.add(new Object[] { true, false, false, false });
// Extremely evil
// data.add(new Object[] { false, true,true,true });
// data.add(new Object[] { false, true,false,true });
// data.add(new Object[] { false, false,true,true });
// data.add(new Object[] { false, false,false,true });
// data.add(new Object[] { false, true,true,false });
// data.add(new Object[] { false, true,false,false });
// data.add(new Object[] { false, false,true,false });
// data.add(new Object[] { false, false,false,false });
return data;
}
private MPartStack partStackMain;
private MPlaceholder placeholderMain;
private MPartStack partStackSub;
private MPlaceholder placeholderSub;
private boolean useCorrectPlaceholderId;
private boolean usePerspektiveInSubWindow;
private boolean maximizeMainFirst;
private boolean addSubwindowToPerspective;
private Shell shell;
private MTrimmedWindow windowSub;
private IEclipseContext appContext;
private IPresentationEngine renderer;
private MTrimmedWindow window;
public MaximizeBugTest(boolean useCorrectPlaceholderId,
boolean usePerspektiveInSubWindow, boolean maximizeMainFirst,
boolean addSubwindowToPerspective) {
this.useCorrectPlaceholderId = useCorrectPlaceholderId;
this.usePerspektiveInSubWindow = usePerspektiveInSubWindow;
this.maximizeMainFirst = maximizeMainFirst;
this.addSubwindowToPerspective = addSubwindowToPerspective;
}
@Before
public void before() {
prepareApplicationModel();
}
@After
public void tearDown() {
renderer.removeGui(window);
renderer.stop();
shell.dispose();
appContext.dispose();
}
private void prepareApplicationModel() {
MApplication application = ApplicationFactoryImpl.eINSTANCE
.createApplication();
window = BasicFactoryImpl.eINSTANCE
.createTrimmedWindow();
window.setElementId("MainWindow");
MPerspectiveStack perspectiveStackMain = AdvancedFactoryImpl.eINSTANCE
.createPerspectiveStack();
perspectiveStackMain.setElementId("perspectiveStackMain");
MPerspective perspectiveMain = AdvancedFactoryImpl.eINSTANCE
.createPerspective();
perspectiveMain.setElementId("perspectiveMain");
MPartSashContainer containerMain = BasicFactoryImpl.eINSTANCE
.createPartSashContainer();
partStackMain = BasicFactoryImpl.eINSTANCE.createPartStack();
partStackMain.setElementId("mainPartStack");
MPart partMain = BasicFactoryImpl.eINSTANCE.createPart();
MArea areaMain = AdvancedFactoryImpl.eINSTANCE.createArea();
MPartStack partStackAreaMain = BasicFactoryImpl.eINSTANCE
.createPartStack();
MPart partAreaMain = BasicFactoryImpl.eINSTANCE.createPart();
placeholderMain = AdvancedFactoryImpl.eINSTANCE.createPlaceholder();
placeholderMain.setElementId("placeholderMain");
application.getChildren().add(window);
application.setSelectedElement(window);
window.getChildren().add(perspectiveStackMain);
window.setSelectedElement(perspectiveStackMain);
perspectiveStackMain.getChildren().add(perspectiveMain);
perspectiveStackMain.setSelectedElement(perspectiveMain);
perspectiveMain.getChildren().add(containerMain);
perspectiveMain.setSelectedElement(containerMain);
containerMain.getChildren().add(partStackMain);
containerMain.getChildren().add(placeholderMain);
partStackMain.getChildren().add(partMain);
areaMain.getChildren().add(partStackAreaMain);
partStackAreaMain.getChildren().add(partAreaMain);
placeholderMain.setRef(areaMain);
window.getSharedElements().add(areaMain);
windowSub = BasicFactoryImpl.eINSTANCE.createTrimmedWindow();
windowSub.setElementId("SubWindow");
MPartSashContainer containerSub = BasicFactoryImpl.eINSTANCE
.createPartSashContainer();
partStackSub = BasicFactoryImpl.eINSTANCE.createPartStack();
partStackSub.setElementId("partStackSub");
MPart partSub = BasicFactoryImpl.eINSTANCE.createPart();
placeholderSub = AdvancedFactoryImpl.eINSTANCE.createPlaceholder();
placeholderSub.setElementId("placeholderSub");
MArea areaSub = AdvancedFactoryImpl.eINSTANCE.createArea();
MPartStack partStackAreaSub = BasicFactoryImpl.eINSTANCE
.createPartStack();
MPart partAreaSub = BasicFactoryImpl.eINSTANCE.createPart();
placeholderSub.setRef(areaSub);
if (usePerspektiveInSubWindow) {
MPerspectiveStack perspectiveStackSub = AdvancedFactoryImpl.eINSTANCE
.createPerspectiveStack();
perspectiveStackSub.setElementId("perspectiveStackSub");
MPerspective perspectiveSub = AdvancedFactoryImpl.eINSTANCE
.createPerspective();
perspectiveSub.setElementId("perspectiveSub");
perspectiveStackSub.getChildren().add(perspectiveSub);
perspectiveStackSub.setSelectedElement(perspectiveSub);
perspectiveSub.getChildren().add(containerSub);
perspectiveSub.setSelectedElement(containerSub);
windowSub.getChildren().add(perspectiveStackSub);
windowSub.setSelectedElement(perspectiveStackSub);
} else {
windowSub.getChildren().add(containerSub);
windowSub.setSelectedElement(containerSub);
}
containerSub.getChildren().add(partStackSub);
containerSub.getChildren().add(placeholderSub);
partStackSub.getChildren().add(partSub);
areaSub.getChildren().add(partStackAreaSub);
partStackAreaSub.getChildren().add(partAreaSub);
windowSub.getSharedElements().add(areaSub);
if (addSubwindowToPerspective) {
perspectiveMain.getWindows().add(windowSub);
} else {
window.getWindows().add(windowSub);
}
// set correct ids
if (useCorrectPlaceholderId) {
placeholderMain.setElementId("org.eclipse.ui.editorss");
placeholderSub.setElementId("org.eclipse.ui.editorss");
} else {
placeholderMain.setElementId("placeholderMain");
placeholderSub.setElementId("placeholderSub");
}
// instantiate addon
MAddon minMaxAddon = ApplicationFactoryImpl.eINSTANCE.createAddon();
minMaxAddon.setElementId("MinMaxAddon"); //$NON-NLS-1$
minMaxAddon
.setContributionURI("bundleclass://org.eclipse.e4.ui.workbench.addons.swt/org.eclipse.e4.ui.workbench.addons.minmax.MinMaxAddon"); //$NON-NLS-1$
appContext = E4Application.createDefaultContext();
appContext.set(Display.class, Display.getDefault());
appContext.set(MApplication.class.getName(), application);
appContext.set(MWindow.class, window);
appContext.set(UISynchronize.class, new UISynchronize() {
@Override
public void syncExec(Runnable runnable) {
runnable.run();
}
@Override
public void asyncExec(Runnable runnable) {
runnable.run();
}
});
appContext.set(EModelService.class, new ModelServiceImpl(appContext));
ContextInjectionFactory.setDefault(appContext);
renderer = ContextInjectionFactory.make(
PartRenderingEngine.class, appContext);
appContext.set(IPresentationEngine.class, renderer);
appContext
.set(EPartService.class, ContextInjectionFactory.make(
PartServiceImpl.class, appContext));
application.setContext(appContext);
final UIEventPublisher ep = new UIEventPublisher(appContext);
((Notifier) application).eAdapters().add(ep);
appContext.set(UIEventPublisher.class, ep);
appContext.set(MAddon.class, minMaxAddon);
ContextInjectionFactory.setDefault(appContext);
ContextInjectionFactory.make(MinMaxAddon.class, appContext);
appContext.set(IResourceUtilities.class, new ISWTResourceUtilities() {
@Override
public ImageDescriptor imageDescriptorFromURI(URI iconPath) {
try {
return ImageDescriptor.createFromURL(new URL(iconPath
.toString()));
} catch (MalformedURLException e) {
e.printStackTrace();
}
return null;
}
@Override
public Image adornImage(Image toAdorn, Image adornment) {
return null;
}
});
appContext.set(CSSRenderingUtils.class, new CSSRenderingUtils());
E4Application.initializeServices(application);
shell = (Shell) renderer.createGui(window);
}
@Test
public void testMainPlaceholderMax() {
placeholderMain.getTags().add(IPresentationEngine.MAXIMIZED);
assertTrue(partStackMain.getTags().contains(
IPresentationEngine.MINIMIZED_BY_ZOOM));
assertFalse(partStackSub.getTags().contains(
IPresentationEngine.MINIMIZED_BY_ZOOM));
assertFalse(partStackSub.getTags().contains(
IPresentationEngine.MAXIMIZED));
assertFalse(placeholderSub.getTags().contains(
IPresentationEngine.MINIMIZED_BY_ZOOM));
assertFalse(placeholderSub.getTags().contains(
IPresentationEngine.MAXIMIZED));
}
@Test
public void testMainPartStackMax() {
partStackMain.getTags().add(IPresentationEngine.MAXIMIZED);
assertTrue(placeholderMain.getTags().contains(
IPresentationEngine.MINIMIZED_BY_ZOOM));
assertFalse(partStackSub.getTags().contains(
IPresentationEngine.MINIMIZED_BY_ZOOM));
assertFalse(partStackSub.getTags().contains(
IPresentationEngine.MAXIMIZED));
assertFalse(placeholderSub.getTags().contains(
IPresentationEngine.MINIMIZED_BY_ZOOM));
assertFalse(placeholderSub.getTags().contains(
IPresentationEngine.MAXIMIZED));
}
@Test
public void testSubPlaceholderMax() {
placeholderSub.getTags().add(IPresentationEngine.MAXIMIZED);
assertTrue(partStackSub.getTags().contains(
IPresentationEngine.MINIMIZED_BY_ZOOM));
assertFalse(partStackMain.getTags().contains(
IPresentationEngine.MINIMIZED_BY_ZOOM));
assertFalse(partStackMain.getTags().contains(
IPresentationEngine.MAXIMIZED));
assertFalse(placeholderMain.getTags().contains(
IPresentationEngine.MINIMIZED_BY_ZOOM));
assertFalse(placeholderMain.getTags().contains(
IPresentationEngine.MAXIMIZED));
}
@Test
public void testSubPartStackMax() {
partStackSub.getTags().add(IPresentationEngine.MAXIMIZED);
assertTrue(placeholderSub.getTags().contains(
IPresentationEngine.MINIMIZED_BY_ZOOM));
assertFalse(partStackMain.getTags().contains(
IPresentationEngine.MINIMIZED_BY_ZOOM));
assertFalse(partStackMain.getTags().contains(
IPresentationEngine.MAXIMIZED));
assertFalse(placeholderMain.getTags().contains(
IPresentationEngine.MINIMIZED_BY_ZOOM));
assertFalse(placeholderMain.getTags().contains(
IPresentationEngine.MAXIMIZED));
}
@Test
public void testMainPlaceholderMaxThenUnzoom() {
placeholderMain.getTags().add(IPresentationEngine.MAXIMIZED);
assertTrue(partStackMain.getTags().contains(
IPresentationEngine.MINIMIZED_BY_ZOOM));
assertFalse(partStackSub.getTags().contains(
IPresentationEngine.MINIMIZED_BY_ZOOM));
assertFalse(partStackSub.getTags().contains(
IPresentationEngine.MAXIMIZED));
assertFalse(placeholderSub.getTags().contains(
IPresentationEngine.MINIMIZED_BY_ZOOM));
assertFalse(placeholderSub.getTags().contains(
IPresentationEngine.MAXIMIZED));
placeholderMain.getTags().remove(IPresentationEngine.MAXIMIZED);
assertFalse(partStackMain.getTags().contains(
IPresentationEngine.MINIMIZED));
assertFalse(partStackMain.getTags().contains(
IPresentationEngine.MINIMIZED_BY_ZOOM));
assertFalse(partStackSub.getTags().contains(
IPresentationEngine.MINIMIZED));
assertFalse(partStackSub.getTags().contains(
IPresentationEngine.MAXIMIZED));
assertFalse(placeholderSub.getTags().contains(
IPresentationEngine.MINIMIZED));
assertFalse(placeholderSub.getTags().contains(
IPresentationEngine.MAXIMIZED));
}
@Test
public void testMainPartStackMaxThenUnzoom() {
partStackMain.getTags().add(IPresentationEngine.MAXIMIZED);
assertTrue(placeholderMain.getTags().contains(
IPresentationEngine.MINIMIZED_BY_ZOOM));
assertFalse(partStackSub.getTags().contains(
IPresentationEngine.MINIMIZED_BY_ZOOM));
assertFalse(partStackSub.getTags().contains(
IPresentationEngine.MAXIMIZED));
assertFalse(placeholderSub.getTags().contains(
IPresentationEngine.MINIMIZED_BY_ZOOM));
assertFalse(placeholderSub.getTags().contains(
IPresentationEngine.MAXIMIZED));
partStackMain.getTags().remove(IPresentationEngine.MAXIMIZED);
assertFalse(placeholderMain.getTags().contains(
IPresentationEngine.MINIMIZED));
assertFalse(placeholderMain.getTags().contains(
IPresentationEngine.MINIMIZED_BY_ZOOM));
assertFalse(partStackSub.getTags().contains(
IPresentationEngine.MINIMIZED));
assertFalse(partStackSub.getTags().contains(
IPresentationEngine.MAXIMIZED));
assertFalse(placeholderSub.getTags().contains(
IPresentationEngine.MINIMIZED));
assertFalse(placeholderSub.getTags().contains(
IPresentationEngine.MAXIMIZED));
}
@Test
public void testSubPlaceholderMaxThenUnzoom() {
placeholderSub.getTags().add(IPresentationEngine.MAXIMIZED);
assertTrue(partStackSub.getTags().contains(
IPresentationEngine.MINIMIZED_BY_ZOOM));
assertFalse(partStackMain.getTags().contains(
IPresentationEngine.MINIMIZED_BY_ZOOM));
assertFalse(partStackMain.getTags().contains(
IPresentationEngine.MAXIMIZED));
assertFalse(placeholderMain.getTags().contains(
IPresentationEngine.MINIMIZED_BY_ZOOM));
assertFalse(placeholderMain.getTags().contains(
IPresentationEngine.MAXIMIZED));
placeholderSub.getTags().remove(IPresentationEngine.MAXIMIZED);
assertFalse(partStackSub.getTags().contains(
IPresentationEngine.MINIMIZED));
assertFalse(partStackSub.getTags().contains(
IPresentationEngine.MINIMIZED_BY_ZOOM));
assertFalse(partStackMain.getTags().contains(
IPresentationEngine.MINIMIZED));
assertFalse(partStackMain.getTags().contains(
IPresentationEngine.MAXIMIZED));
assertFalse(placeholderMain.getTags().contains(
IPresentationEngine.MINIMIZED));
assertFalse(placeholderMain.getTags().contains(
IPresentationEngine.MAXIMIZED));
}
@Test
public void testSubPartStackMaxThenUnzoom() {
partStackSub.getTags().add(IPresentationEngine.MAXIMIZED);
assertTrue(placeholderSub.getTags().contains(
IPresentationEngine.MINIMIZED_BY_ZOOM));
assertFalse(partStackMain.getTags().contains(
IPresentationEngine.MINIMIZED_BY_ZOOM));
assertFalse(partStackMain.getTags().contains(
IPresentationEngine.MAXIMIZED));
assertFalse(placeholderMain.getTags().contains(
IPresentationEngine.MINIMIZED_BY_ZOOM));
assertFalse(placeholderMain.getTags().contains(
IPresentationEngine.MAXIMIZED));
partStackSub.getTags().remove(IPresentationEngine.MAXIMIZED);
assertFalse(placeholderSub.getTags().contains(
IPresentationEngine.MINIMIZED));
assertFalse(placeholderSub.getTags().contains(
IPresentationEngine.MINIMIZED_BY_ZOOM));
assertFalse(partStackMain.getTags().contains(
IPresentationEngine.MINIMIZED));
assertFalse(partStackMain.getTags().contains(
IPresentationEngine.MAXIMIZED));
assertFalse(placeholderMain.getTags().contains(
IPresentationEngine.MINIMIZED));
assertFalse(placeholderMain.getTags().contains(
IPresentationEngine.MAXIMIZED));
}
@Test
public void testMainPlaceholderMaxSubPlaceholderMax() {
if (maximizeMainFirst) {
placeholderMain.getTags().add(IPresentationEngine.MAXIMIZED);
placeholderSub.getTags().add(IPresentationEngine.MAXIMIZED);
} else {
placeholderSub.getTags().add(IPresentationEngine.MAXIMIZED);
placeholderMain.getTags().add(IPresentationEngine.MAXIMIZED);
}
assertTrue(partStackMain.getTags().contains(
IPresentationEngine.MINIMIZED_BY_ZOOM));
assertTrue(partStackSub.getTags().contains(
IPresentationEngine.MINIMIZED_BY_ZOOM));
}
@Test
public void testMainPlaceholderMaxSubPartStackMax() {
if (maximizeMainFirst) {
placeholderMain.getTags().add(IPresentationEngine.MAXIMIZED);
partStackSub.getTags().add(IPresentationEngine.MAXIMIZED);
} else {
partStackSub.getTags().add(IPresentationEngine.MAXIMIZED);
placeholderMain.getTags().add(IPresentationEngine.MAXIMIZED);
}
assertTrue(partStackMain.getTags().contains(
IPresentationEngine.MINIMIZED_BY_ZOOM));
assertTrue(placeholderSub.getTags().contains(
IPresentationEngine.MINIMIZED_BY_ZOOM));
}
@Test
public void testMainPartStackMaxSubPlaceholderMax() {
if (maximizeMainFirst) {
partStackMain.getTags().add(IPresentationEngine.MAXIMIZED);
placeholderSub.getTags().add(IPresentationEngine.MAXIMIZED);
} else {
placeholderSub.getTags().add(IPresentationEngine.MAXIMIZED);
partStackMain.getTags().add(IPresentationEngine.MAXIMIZED);
}
assertTrue(placeholderMain.getTags().contains(
IPresentationEngine.MINIMIZED_BY_ZOOM));
assertTrue(partStackSub.getTags().contains(
IPresentationEngine.MINIMIZED_BY_ZOOM));
}
@Test
public void testMainPartStackMaxSubPartStackMax() {
if (maximizeMainFirst) {
partStackMain.getTags().add(IPresentationEngine.MAXIMIZED);
partStackSub.getTags().add(IPresentationEngine.MAXIMIZED);
} else {
partStackSub.getTags().add(IPresentationEngine.MAXIMIZED);
partStackMain.getTags().add(IPresentationEngine.MAXIMIZED);
}
assertTrue(placeholderMain.getTags().contains(
IPresentationEngine.MINIMIZED_BY_ZOOM));
assertTrue(placeholderSub.getTags().contains(
IPresentationEngine.MINIMIZED_BY_ZOOM));
}
@Test
public void testMainPlaceholderMaxSubPlaceholderMaxUnzoomMain() {
if (maximizeMainFirst) {
placeholderMain.getTags().add(IPresentationEngine.MAXIMIZED);
placeholderSub.getTags().add(IPresentationEngine.MAXIMIZED);
} else {
placeholderSub.getTags().add(IPresentationEngine.MAXIMIZED);
placeholderMain.getTags().add(IPresentationEngine.MAXIMIZED);
}
assertTrue(partStackMain.getTags().contains(
IPresentationEngine.MINIMIZED_BY_ZOOM));
assertTrue(partStackSub.getTags().contains(
IPresentationEngine.MINIMIZED_BY_ZOOM));
placeholderMain.getTags().remove(IPresentationEngine.MAXIMIZED);
assertFalse(partStackMain.getTags().contains(
IPresentationEngine.MINIMIZED_BY_ZOOM));
assertFalse(partStackMain.getTags().contains(
IPresentationEngine.MINIMIZED));
assertFalse(partStackMain.getTags().contains(
IPresentationEngine.MAXIMIZED));
assertTrue(placeholderSub.getTags().contains(
IPresentationEngine.MAXIMIZED));
assertTrue(partStackSub.getTags().contains(
IPresentationEngine.MINIMIZED_BY_ZOOM));
assertTrue(partStackSub.getTags().contains(
IPresentationEngine.MINIMIZED));
assertFalse(partStackSub.getTags().contains(
IPresentationEngine.MAXIMIZED));
}
@Test
public void testMainPlaceholderMaxSubPartStackMaxUnzoomMain() {
if (maximizeMainFirst) {
placeholderMain.getTags().add(IPresentationEngine.MAXIMIZED);
partStackSub.getTags().add(IPresentationEngine.MAXIMIZED);
} else {
partStackSub.getTags().add(IPresentationEngine.MAXIMIZED);
placeholderMain.getTags().add(IPresentationEngine.MAXIMIZED);
}
assertTrue(partStackMain.getTags().contains(
IPresentationEngine.MINIMIZED_BY_ZOOM));
assertTrue(placeholderSub.getTags().contains(
IPresentationEngine.MINIMIZED_BY_ZOOM));
placeholderMain.getTags().remove(IPresentationEngine.MAXIMIZED);
assertFalse(partStackMain.getTags().contains(
IPresentationEngine.MINIMIZED_BY_ZOOM));
assertFalse(partStackMain.getTags().contains(
IPresentationEngine.MINIMIZED));
assertFalse(partStackMain.getTags().contains(
IPresentationEngine.MAXIMIZED));
assertTrue(partStackSub.getTags().contains(
IPresentationEngine.MAXIMIZED));
assertTrue(placeholderSub.getTags().contains(
IPresentationEngine.MINIMIZED_BY_ZOOM));
assertTrue(placeholderSub.getTags().contains(
IPresentationEngine.MINIMIZED));
assertFalse(placeholderSub.getTags().contains(
IPresentationEngine.MAXIMIZED));
}
@Test
public void testMainPartStackMaxSubPlaceholderMaxUnzoomMain() {
if (maximizeMainFirst) {
partStackMain.getTags().add(IPresentationEngine.MAXIMIZED);
placeholderSub.getTags().add(IPresentationEngine.MAXIMIZED);
} else {
placeholderSub.getTags().add(IPresentationEngine.MAXIMIZED);
partStackMain.getTags().add(IPresentationEngine.MAXIMIZED);
}
assertTrue(placeholderMain.getTags().contains(
IPresentationEngine.MINIMIZED_BY_ZOOM));
assertTrue(partStackSub.getTags().contains(
IPresentationEngine.MINIMIZED_BY_ZOOM));
partStackMain.getTags().remove(IPresentationEngine.MAXIMIZED);
assertFalse(placeholderMain.getTags().contains(
IPresentationEngine.MINIMIZED_BY_ZOOM));
assertFalse(placeholderMain.getTags().contains(
IPresentationEngine.MINIMIZED));
assertFalse(placeholderMain.getTags().contains(
IPresentationEngine.MAXIMIZED));
assertTrue(placeholderSub.getTags().contains(
IPresentationEngine.MAXIMIZED));
assertTrue(partStackSub.getTags().contains(
IPresentationEngine.MINIMIZED_BY_ZOOM));
assertTrue(partStackSub.getTags().contains(
IPresentationEngine.MINIMIZED));
assertFalse(partStackSub.getTags().contains(
IPresentationEngine.MAXIMIZED));
}
@Test
public void testMainPartStackMaxSubPartStackMaxUnzoomMain() {
if (maximizeMainFirst) {
partStackMain.getTags().add(IPresentationEngine.MAXIMIZED);
partStackSub.getTags().add(IPresentationEngine.MAXIMIZED);
} else {
partStackSub.getTags().add(IPresentationEngine.MAXIMIZED);
partStackMain.getTags().add(IPresentationEngine.MAXIMIZED);
}
assertTrue(placeholderMain.getTags().contains(
IPresentationEngine.MINIMIZED_BY_ZOOM));
assertTrue(placeholderSub.getTags().contains(
IPresentationEngine.MINIMIZED_BY_ZOOM));
partStackMain.getTags().remove(IPresentationEngine.MAXIMIZED);
assertFalse(placeholderMain.getTags().contains(
IPresentationEngine.MINIMIZED_BY_ZOOM));
assertFalse(placeholderMain.getTags().contains(
IPresentationEngine.MINIMIZED));
assertFalse(placeholderMain.getTags().contains(
IPresentationEngine.MAXIMIZED));
assertTrue(partStackSub.getTags().contains(
IPresentationEngine.MAXIMIZED));
assertTrue(placeholderSub.getTags().contains(
IPresentationEngine.MINIMIZED_BY_ZOOM));
assertTrue(placeholderSub.getTags().contains(
IPresentationEngine.MINIMIZED));
assertFalse(placeholderSub.getTags().contains(
IPresentationEngine.MAXIMIZED));
}
@Test
public void testMainPlaceholderMaxSubPlaceholderMaxUnzoomSub() {
if (maximizeMainFirst) {
placeholderMain.getTags().add(IPresentationEngine.MAXIMIZED);
placeholderSub.getTags().add(IPresentationEngine.MAXIMIZED);
} else {
placeholderSub.getTags().add(IPresentationEngine.MAXIMIZED);
placeholderMain.getTags().add(IPresentationEngine.MAXIMIZED);
}
assertTrue(partStackMain.getTags().contains(
IPresentationEngine.MINIMIZED_BY_ZOOM));
assertTrue(partStackSub.getTags().contains(
IPresentationEngine.MINIMIZED_BY_ZOOM));
placeholderSub.getTags().remove(IPresentationEngine.MAXIMIZED);
assertFalse(partStackSub.getTags().contains(
IPresentationEngine.MINIMIZED_BY_ZOOM));
assertFalse(partStackSub.getTags().contains(
IPresentationEngine.MINIMIZED));
assertFalse(partStackSub.getTags().contains(
IPresentationEngine.MAXIMIZED));
assertTrue(placeholderMain.getTags().contains(
IPresentationEngine.MAXIMIZED));
assertTrue(partStackMain.getTags().contains(
IPresentationEngine.MINIMIZED_BY_ZOOM));
assertTrue(partStackMain.getTags().contains(
IPresentationEngine.MINIMIZED));
assertFalse(partStackMain.getTags().contains(
IPresentationEngine.MAXIMIZED));
}
@Test
public void testMainPlaceholderMaxSubPartStackMaxUnzoomSub() {
if (maximizeMainFirst) {
placeholderMain.getTags().add(IPresentationEngine.MAXIMIZED);
partStackSub.getTags().add(IPresentationEngine.MAXIMIZED);
} else {
partStackSub.getTags().add(IPresentationEngine.MAXIMIZED);
placeholderMain.getTags().add(IPresentationEngine.MAXIMIZED);
}
assertTrue(partStackMain.getTags().contains(
IPresentationEngine.MINIMIZED_BY_ZOOM));
assertTrue(placeholderSub.getTags().contains(
IPresentationEngine.MINIMIZED_BY_ZOOM));
partStackSub.getTags().remove(IPresentationEngine.MAXIMIZED);
assertFalse(placeholderSub.getTags().contains(
IPresentationEngine.MINIMIZED_BY_ZOOM));
assertFalse(placeholderSub.getTags().contains(
IPresentationEngine.MINIMIZED));
assertFalse(placeholderSub.getTags().contains(
IPresentationEngine.MAXIMIZED));
assertTrue(placeholderMain.getTags().contains(
IPresentationEngine.MAXIMIZED));
assertTrue(partStackMain.getTags().contains(
IPresentationEngine.MINIMIZED_BY_ZOOM));
assertTrue(partStackMain.getTags().contains(
IPresentationEngine.MINIMIZED));
assertFalse(partStackMain.getTags().contains(
IPresentationEngine.MAXIMIZED));
}
@Test
public void testMainPartStackMaxSubPlaceholderMaxUnzoomSub() {
if (maximizeMainFirst) {
partStackMain.getTags().add(IPresentationEngine.MAXIMIZED);
placeholderSub.getTags().add(IPresentationEngine.MAXIMIZED);
} else {
placeholderSub.getTags().add(IPresentationEngine.MAXIMIZED);
partStackMain.getTags().add(IPresentationEngine.MAXIMIZED);
}
assertTrue(placeholderMain.getTags().contains(
IPresentationEngine.MINIMIZED_BY_ZOOM));
assertTrue(partStackSub.getTags().contains(
IPresentationEngine.MINIMIZED_BY_ZOOM));
placeholderSub.getTags().remove(IPresentationEngine.MAXIMIZED);
assertFalse(partStackSub.getTags().contains(
IPresentationEngine.MINIMIZED_BY_ZOOM));
assertFalse(partStackSub.getTags().contains(
IPresentationEngine.MINIMIZED));
assertFalse(partStackSub.getTags().contains(
IPresentationEngine.MAXIMIZED));
assertTrue(partStackMain.getTags().contains(
IPresentationEngine.MAXIMIZED));
assertTrue(placeholderMain.getTags().contains(
IPresentationEngine.MINIMIZED_BY_ZOOM));
assertTrue(placeholderMain.getTags().contains(
IPresentationEngine.MINIMIZED));
assertFalse(placeholderMain.getTags().contains(
IPresentationEngine.MAXIMIZED));
}
@Test
public void testMainPartStackMaxSubPartStackMaxUnzoomSub() {
if (maximizeMainFirst) {
partStackMain.getTags().add(IPresentationEngine.MAXIMIZED);
partStackSub.getTags().add(IPresentationEngine.MAXIMIZED);
} else {
partStackSub.getTags().add(IPresentationEngine.MAXIMIZED);
partStackMain.getTags().add(IPresentationEngine.MAXIMIZED);
}
assertTrue(placeholderMain.getTags().contains(
IPresentationEngine.MINIMIZED_BY_ZOOM));
assertTrue(placeholderSub.getTags().contains(
IPresentationEngine.MINIMIZED_BY_ZOOM));
partStackSub.getTags().remove(IPresentationEngine.MAXIMIZED);
assertFalse(placeholderSub.getTags().contains(
IPresentationEngine.MINIMIZED_BY_ZOOM));
assertFalse(placeholderSub.getTags().contains(
IPresentationEngine.MINIMIZED));
assertFalse(placeholderSub.getTags().contains(
IPresentationEngine.MAXIMIZED));
assertTrue(partStackMain.getTags().contains(
IPresentationEngine.MAXIMIZED));
assertTrue(placeholderMain.getTags().contains(
IPresentationEngine.MINIMIZED_BY_ZOOM));
assertTrue(placeholderMain.getTags().contains(
IPresentationEngine.MINIMIZED));
assertFalse(placeholderMain.getTags().contains(
IPresentationEngine.MAXIMIZED));
partStackMain.getTags().remove(IPresentationEngine.MAXIMIZED);
assertFalse(placeholderMain.getTags().contains(
IPresentationEngine.MINIMIZED_BY_ZOOM));
assertFalse(placeholderMain.getTags().contains(
IPresentationEngine.MINIMIZED));
}
@Test
public void testSubWindowWithSubWindowMaximizeStack() {
MUIElement[] subWindowElements = prepareSubWindow();
partStackSub.getTags().add(IPresentationEngine.MAXIMIZED);
assertTrue(placeholderSub.getTags().contains(
IPresentationEngine.MINIMIZED_BY_ZOOM));
for (MUIElement element : subWindowElements) {
assertFalse(element.getTags().contains(
IPresentationEngine.MINIMIZED_BY_ZOOM));
assertFalse(element.getTags().contains(
IPresentationEngine.MAXIMIZED));
}
}
@Test
public void testSubWindowWithSubWindowMaximizePlaceholder() {
MUIElement[] subWindowElements = prepareSubWindow();
placeholderSub.getTags().add(IPresentationEngine.MAXIMIZED);
assertTrue(partStackSub.getTags().contains(
IPresentationEngine.MINIMIZED_BY_ZOOM));
for (MUIElement element : subWindowElements) {
assertFalse(element.getTags().contains(
IPresentationEngine.MINIMIZED_BY_ZOOM));
assertFalse(element.getTags().contains(
IPresentationEngine.MAXIMIZED));
}
}
private MUIElement[] prepareSubWindow() {
MWindow subSubWindow = BasicFactoryImpl.eINSTANCE.createTrimmedWindow();
subSubWindow.setElementId("SubSubWindow");
MPartSashContainer containerSubSub = BasicFactoryImpl.eINSTANCE
.createPartSashContainer();
MPartStack partStackSubSub = BasicFactoryImpl.eINSTANCE
.createPartStack();
partStackSubSub.setElementId("partStackSubSub");
MPart partSubSub = BasicFactoryImpl.eINSTANCE.createPart();
MPlaceholder placeholderSubSub = AdvancedFactoryImpl.eINSTANCE
.createPlaceholder();
placeholderSubSub.setElementId("placeholderSubSub");
MArea areaSubSub = AdvancedFactoryImpl.eINSTANCE.createArea();
MPartStack partStackAreaSubSub = BasicFactoryImpl.eINSTANCE
.createPartStack();
MPart partAreaSubSub = BasicFactoryImpl.eINSTANCE.createPart();
placeholderSubSub.setRef(areaSubSub);
subSubWindow.getChildren().add(containerSubSub);
subSubWindow.setSelectedElement(containerSubSub);
containerSubSub.getChildren().add(partStackSubSub);
containerSubSub.getChildren().add(placeholderSubSub);
partStackSubSub.getChildren().add(partSubSub);
areaSubSub.getChildren().add(partStackAreaSubSub);
partStackAreaSubSub.getChildren().add(partAreaSubSub);
subSubWindow.getSharedElements().add(areaSubSub);
windowSub.getWindows().add(subSubWindow);
return new MUIElement[] { partStackSubSub, placeholderSubSub };
}
}