blob: fb8f169a58ba185ba1be1457c0635b5bbfa6bcef [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 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.gef.test;
import junit.framework.TestCase;
import org.eclipse.gef.palette.CombinedTemplateCreationEntry;
import org.eclipse.gef.palette.PaletteDrawer;
import org.eclipse.gef.palette.PaletteEntry;
import org.eclipse.gef.palette.PaletteRoot;
import org.eclipse.gef.palette.PaletteStack;
import org.eclipse.gef.ui.palette.PaletteCustomizer;
import org.eclipse.gef.ui.palette.customize.PaletteDrawerFactory;
import org.eclipse.gef.ui.palette.customize.PaletteSeparatorFactory;
import org.eclipse.gef.ui.palette.customize.PaletteStackFactory;
public class PaletteCustomizerTest extends AbstractFixtureTestCase {
class TestCustomizer extends PaletteCustomizer {
public void revertToSaved() {
}
public void save() {
}
}
private TestCustomizer customizer = new TestCustomizer();
private PaletteDrawer drawerA;
private PaletteDrawer drawerB;
private PaletteDrawer drawerC;
private PaletteRoot root;
private PaletteEntry selection;
private PaletteStack stackA;
private PaletteStack stackB;
private PaletteDrawerFactory getDrawerFactory() {
return new PaletteDrawerFactory();
}
private PaletteSeparatorFactory getSeparatorFactory() {
return new PaletteSeparatorFactory();
}
private PaletteStackFactory getStackFactory() {
return new PaletteStackFactory();
}
private void reset() {
root = new PaletteRoot();
drawerA = new PaletteDrawer("A", null);
drawerB = new PaletteDrawer("B", null);
drawerC = new PaletteDrawer("C", null);
}
private void resetBottom() {
reset();
drawerA.add(new CombinedTemplateCreationEntry("TA", null, null, null,
null, null));
stackA = new PaletteStack("Stack", null, null);
stackA.add(new CombinedTemplateCreationEntry("STA", null, null, null,
null, null));
stackA.add(selection = new CombinedTemplateCreationEntry("Selection",
null, null, null, null, null));
selection
.setUserModificationPermission(PaletteEntry.PERMISSION_LIMITED_MODIFICATION);
stackB = new PaletteStack("Stack2", null, null);
stackB.setUserModificationPermission(PaletteEntry.PERMISSION_FULL_MODIFICATION);
stackB.add(new CombinedTemplateCreationEntry("STB", null, null, null,
null, null));
drawerA.add(stackA);
drawerA.add(stackB);
root.add(drawerA);
root.add(drawerB);
}
private void resetMiddle() {
reset();
drawerA.add(new CombinedTemplateCreationEntry("TA", null, null, null,
null, null));
drawerA.add(selection = new CombinedTemplateCreationEntry("Selection",
null, null, null, null, null));
drawerA.add(new CombinedTemplateCreationEntry("TB", null, null, null,
null, null));
root.add(drawerA);
root.add(drawerB);
}
private void resetTop() {
reset();
drawerA.add(new CombinedTemplateCreationEntry("TA", null, null, null,
null, null));
drawerA.add(new CombinedTemplateCreationEntry("TB", null, null, null,
null, null));
selection = new PaletteStack("Stack", null, null);
((PaletteStack) selection).add(new CombinedTemplateCreationEntry("STA",
null, null, null, null, null));
selection
.setUserModificationPermission(PaletteEntry.PERMISSION_FULL_MODIFICATION);
drawerB.add(selection);
drawerB.add(new CombinedTemplateCreationEntry("BTB", null, null, null,
null, null));
root.add(drawerA);
root.add(drawerB);
root.add(drawerC);
}
/**
* @see TestCase#setUp()
*/
protected void setUp() throws Exception {
super.setUp();
}
/**
* @see TestCase#tearDown()
*/
protected void tearDown() throws Exception {
super.tearDown();
}
/**
*
* 1-Root 2-Drawer A 3-Tool 4-Stack A 5-Tool 6-Selection (Limited
* Permissions) 8-Stack B (Full Permissions) 9-Tool 10-Drawer B
*
*/
public void testBottomSelection() {
resetBottom();
drawerA.setUserModificationPermission(PaletteEntry.PERMISSION_FULL_MODIFICATION);
stackA.setUserModificationPermission(PaletteEntry.PERMISSION_FULL_MODIFICATION);
assertTrue(customizer.canMoveDown(selection));
assertTrue(customizer.canMoveUp(selection));
assertTrue(!customizer.canDelete(selection));
assertTrue(getDrawerFactory().canCreate(selection));
assertTrue(!getSeparatorFactory().canCreate(selection));
assertTrue(!getStackFactory().canCreate(selection));
customizer.performMoveUp(selection);
assertEquals(0, stackA.getChildren().indexOf(selection));
customizer.performMoveDown(selection);
customizer.performMoveDown(selection);
assertEquals(2, drawerA.getChildren().indexOf(selection));
resetBottom();
drawerA.setUserModificationPermission(PaletteEntry.PERMISSION_FULL_MODIFICATION);
stackA.setUserModificationPermission(PaletteEntry.PERMISSION_LIMITED_MODIFICATION);
assertTrue(customizer.canMoveUp(selection));
assertTrue(!customizer.canMoveDown(selection));
assertTrue(!customizer.canDelete(selection));
assertTrue(getDrawerFactory().canCreate(selection));
assertTrue(!getSeparatorFactory().canCreate(selection));
assertTrue(!getStackFactory().canCreate(selection));
customizer.performMoveUp(selection);
assertEquals(0, stackA.getChildren().indexOf(selection));
// only possible if move changes
// customizer.performMoveDown(selection);
// customizer.performMoveDown(selection);
// assertEquals(2, drawerA.getChildren().indexOf(selection));
resetBottom();
drawerA.setUserModificationPermission(PaletteEntry.PERMISSION_FULL_MODIFICATION);
stackA.setUserModificationPermission(PaletteEntry.PERMISSION_NO_MODIFICATION);
assertTrue(!customizer.canMoveDown(selection));
assertTrue(!customizer.canMoveUp(selection));
assertTrue(!customizer.canDelete(selection));
assertTrue(getDrawerFactory().canCreate(selection));
assertTrue(!getSeparatorFactory().canCreate(selection));
assertTrue(!getStackFactory().canCreate(selection));
// move must change
// customizer.performMoveUp(selection);
// assertEquals(0, stackA.getChildren().indexOf(selection));
// customizer.performMoveDown(selection);
// customizer.performMoveDown(selection);
// assertEquals(2, drawerA.getChildren().indexOf(selection));
resetBottom();
drawerA.setUserModificationPermission(PaletteEntry.PERMISSION_LIMITED_MODIFICATION);
stackA.setUserModificationPermission(PaletteEntry.PERMISSION_FULL_MODIFICATION);
assertTrue(customizer.canMoveDown(selection));
assertTrue(customizer.canMoveUp(selection));
assertTrue(!customizer.canDelete(selection));
assertTrue(getDrawerFactory().canCreate(selection));
assertTrue(!getSeparatorFactory().canCreate(selection));
assertTrue(!getStackFactory().canCreate(selection));
customizer.performMoveUp(selection);
assertEquals(0, stackA.getChildren().indexOf(selection));
customizer.performMoveDown(selection);
customizer.performMoveDown(selection);
assertEquals(0, stackB.getChildren().indexOf(selection));
resetBottom();
drawerA.setUserModificationPermission(PaletteEntry.PERMISSION_LIMITED_MODIFICATION);
stackA.setUserModificationPermission(PaletteEntry.PERMISSION_LIMITED_MODIFICATION);
assertTrue(customizer.canMoveUp(selection));
assertTrue(!customizer.canMoveDown(selection));
assertTrue(!customizer.canDelete(selection));
assertTrue(getDrawerFactory().canCreate(selection));
assertTrue(!getSeparatorFactory().canCreate(selection));
assertTrue(!getStackFactory().canCreate(selection));
customizer.performMoveUp(selection);
assertEquals(0, stackA.getChildren().indexOf(selection));
// customizer.performMoveDown(selection);
// customizer.performMoveDown(selection);
// assertEquals(0, stackB.getChildren().indexOf(selection));
resetBottom();
drawerA.setUserModificationPermission(PaletteEntry.PERMISSION_LIMITED_MODIFICATION);
stackA.setUserModificationPermission(PaletteEntry.PERMISSION_NO_MODIFICATION);
assertTrue(!customizer.canMoveDown(selection));
assertTrue(!customizer.canMoveUp(selection));
assertTrue(!customizer.canDelete(selection));
assertTrue(getDrawerFactory().canCreate(selection));
assertTrue(!getSeparatorFactory().canCreate(selection));
assertTrue(!getStackFactory().canCreate(selection));
// customizer.performMoveUp(selection);
// assertEquals(0, stackA.getChildren().indexOf(selection));
// customizer.performMoveDown(selection);
// customizer.performMoveDown(selection);
// assertEquals(0, stackB.getChildren().indexOf(selection));
}
/**
*
* 1-Root 2-Drawer A 3-Tool 4-Selection 5-Tool 6-Drawer B
*
*/
public void testMiddleSelection() {
resetMiddle();
drawerA.setUserModificationPermission(PaletteEntry.PERMISSION_FULL_MODIFICATION);
assertTrue(customizer.canMoveDown(selection));
assertTrue(customizer.canMoveUp(selection));
assertTrue(customizer.canDelete(selection));
customizer.performMoveUp(selection);
assertEquals(0, drawerA.getChildren().indexOf(selection));
customizer.performMoveDown(selection);
assertEquals(1, drawerA.getChildren().indexOf(selection));
assertTrue(getDrawerFactory().canCreate(selection));
assertTrue(getSeparatorFactory().canCreate(selection));
assertTrue(getStackFactory().canCreate(selection));
resetMiddle();
drawerA.setUserModificationPermission(PaletteEntry.PERMISSION_LIMITED_MODIFICATION);
assertTrue(customizer.canMoveDown(selection));
assertTrue(customizer.canMoveUp(selection));
assertTrue(customizer.canDelete(selection));
customizer.performMoveUp(selection);
assertEquals(0, drawerA.getChildren().indexOf(selection));
customizer.performMoveDown(selection);
assertEquals(1, drawerA.getChildren().indexOf(selection));
assertTrue(getDrawerFactory().canCreate(selection));
assertTrue(!getSeparatorFactory().canCreate(selection));
assertTrue(!getStackFactory().canCreate(selection));
resetMiddle();
drawerA.setUserModificationPermission(PaletteEntry.PERMISSION_NO_MODIFICATION);
assertTrue(!customizer.canMoveDown(selection));
assertTrue(!customizer.canMoveUp(selection));
assertTrue(customizer.canDelete(selection));
// these tests could be enabled if the PaletteContainer move's method
// respected permissions
// int i = drawerA.getChildren().indexOf(selection);
//
// customizer.performMoveUp(selection);
// assertEquals(i, drawerA.getChildren().indexOf(selection));
// customizer.performMoveDown(selection);
// assertEquals(i, drawerA.getChildren().indexOf(selection));
assertTrue(getDrawerFactory().canCreate(selection));
assertTrue(!getSeparatorFactory().canCreate(selection));
assertTrue(!getStackFactory().canCreate(selection));
}
/**
*
* 1-Root 2-Drawer A 3-Tool 4-Tool 5-Drawer B 6-Stack (Full Permissions)
* (Selection) 7-Tool 8-Tool 9-Drawer C
*/
public void testTopSelection() {
resetTop();
drawerB.setUserModificationPermission(PaletteEntry.PERMISSION_FULL_MODIFICATION);
drawerA.setUserModificationPermission(PaletteEntry.PERMISSION_FULL_MODIFICATION);
assertTrue(customizer.canMoveUp(selection));
assertTrue(customizer.canMoveDown(selection));
assertTrue(customizer.canDelete(selection));
assertTrue(getDrawerFactory().canCreate(selection));
assertTrue(!getSeparatorFactory().canCreate(selection));
assertTrue(!getStackFactory().canCreate(selection));
customizer.performMoveUp(selection);
assertEquals(2, drawerA.getChildren().indexOf(selection));
customizer.performMoveDown(selection);
customizer.performMoveDown(selection);
assertEquals(1, drawerB.getChildren().indexOf(selection));
resetTop();
drawerB.setUserModificationPermission(PaletteEntry.PERMISSION_LIMITED_MODIFICATION);
drawerA.setUserModificationPermission(PaletteEntry.PERMISSION_FULL_MODIFICATION);
assertTrue(!customizer.canMoveUp(selection));
assertTrue(customizer.canMoveDown(selection));
assertTrue(customizer.canDelete(selection));
assertTrue(getDrawerFactory().canCreate(selection));
assertTrue(!getSeparatorFactory().canCreate(selection));
assertTrue(!getStackFactory().canCreate(selection));
// customizer.performMoveUp(selection);
// assertEquals(2, drawerA.getChildren().indexOf(selection));
customizer.performMoveDown(selection);
assertEquals(1, drawerB.getChildren().indexOf(selection));
resetTop();
drawerB.setUserModificationPermission(PaletteEntry.PERMISSION_NO_MODIFICATION);
drawerA.setUserModificationPermission(PaletteEntry.PERMISSION_FULL_MODIFICATION);
assertTrue(!customizer.canMoveUp(selection));
assertTrue(!customizer.canMoveDown(selection));
assertTrue(customizer.canDelete(selection));
assertTrue(getDrawerFactory().canCreate(selection));
assertTrue(!getSeparatorFactory().canCreate(selection));
assertTrue(!getStackFactory().canCreate(selection));
// customizer.performMoveUp(selection);
// assertEquals(2, drawerA.getChildren().indexOf(selection));
// customizer.performMoveDown(selection);
// assertEquals(1, drawerB.getChildren().indexOf(selection));
resetTop();
drawerB.setUserModificationPermission(PaletteEntry.PERMISSION_FULL_MODIFICATION);
drawerA.setUserModificationPermission(PaletteEntry.PERMISSION_LIMITED_MODIFICATION);
assertTrue(!customizer.canMoveUp(selection));
assertTrue(customizer.canMoveDown(selection));
assertTrue(customizer.canDelete(selection));
assertTrue(getDrawerFactory().canCreate(selection));
assertTrue(!getSeparatorFactory().canCreate(selection));
assertTrue(!getStackFactory().canCreate(selection));
// customizer.performMoveUp(selection);
// assertEquals(2, drawerA.getChildren().indexOf(selection));
customizer.performMoveDown(selection);
assertEquals(1, drawerB.getChildren().indexOf(selection));
resetTop();
drawerB.setUserModificationPermission(PaletteEntry.PERMISSION_LIMITED_MODIFICATION);
drawerA.setUserModificationPermission(PaletteEntry.PERMISSION_LIMITED_MODIFICATION);
assertTrue(!customizer.canMoveUp(selection));
assertTrue(customizer.canMoveDown(selection));
assertTrue(customizer.canDelete(selection));
assertTrue(getDrawerFactory().canCreate(selection));
assertTrue(!getSeparatorFactory().canCreate(selection));
assertTrue(!getStackFactory().canCreate(selection));
// customizer.performMoveUp(selection);
// assertEquals(2, drawerA.getChildren().indexOf(selection));
customizer.performMoveDown(selection);
assertEquals(1, drawerB.getChildren().indexOf(selection));
resetTop();
drawerB.setUserModificationPermission(PaletteEntry.PERMISSION_NO_MODIFICATION);
drawerA.setUserModificationPermission(PaletteEntry.PERMISSION_LIMITED_MODIFICATION);
assertTrue(!customizer.canMoveUp(selection));
assertTrue(!customizer.canMoveDown(selection));
assertTrue(customizer.canDelete(selection));
assertTrue(getDrawerFactory().canCreate(selection));
assertTrue(!getSeparatorFactory().canCreate(selection));
assertTrue(!getStackFactory().canCreate(selection));
// customizer.performMoveUp(selection);
// assertEquals(2, drawerA.getChildren().indexOf(selection));
// customizer.performMoveDown(selection);
// assertEquals(1, drawerB.getChildren().indexOf(selection));
}
}