| /******************************************************************************* |
| * 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)); |
| } |
| |
| } |