package com.xrosstools.xunit.editor; import java.util.ArrayList; import java.util.List; import org.eclipse.gef.palette.CombinedTemplateCreationEntry; import org.eclipse.gef.palette.MarqueeToolEntry; import org.eclipse.gef.palette.PaletteContainer; import org.eclipse.gef.palette.PaletteEntry; import org.eclipse.gef.palette.PaletteGroup; import org.eclipse.gef.palette.PaletteRoot; import org.eclipse.gef.palette.PaletteSeparator; import org.eclipse.gef.palette.SelectionToolEntry; import org.eclipse.gef.palette.ToolEntry; import org.eclipse.gef.requests.SimpleFactory; import com.xrosstools.xunit.editor.model.AdapterNode; import com.xrosstools.xunit.editor.model.BiBranchNode; import com.xrosstools.xunit.editor.model.BranchNode; import com.xrosstools.xunit.editor.model.ChainNode; import com.xrosstools.xunit.editor.model.ConverterNode; import com.xrosstools.xunit.editor.model.DecoratorNode; import com.xrosstools.xunit.editor.model.EndPointNode; import com.xrosstools.xunit.editor.model.LocatorNode; import com.xrosstools.xunit.editor.model.PostValidationLoopNode; import com.xrosstools.xunit.editor.model.PreValidationLoopNode; import com.xrosstools.xunit.editor.model.ProcessorNode; import com.xrosstools.xunit.editor.model.StartPointNode; import com.xrosstools.xunit.editor.model.ValidatorNode; public class UnitPaletteFactory { private Class<UnitPaletteFactory> imageClass = UnitPaletteFactory.class; public PaletteRoot createPalette() { PaletteRoot paletteRoot = new PaletteRoot(); paletteRoot.addAll(createCategories(paletteRoot)); return paletteRoot; } private List<PaletteContainer> createCategories(PaletteRoot root) { List<PaletteContainer> categories = new ArrayList<PaletteContainer>(); categories.add(createControlGroup(root)); return categories; } private static Object[][] ENTRIES = new Object[][]{ {"Processor", ProcessorNode.class, Activator.PROCESSOR}, {"Converter", ConverterNode.class, Activator.CONVERTER}, {"Validator", ValidatorNode.class, Activator.VALIDATOR}, {"Locator", LocatorNode.class, Activator.LOCATOR}, {}, {"Chain", ChainNode.class, Activator.CHAIN}, {"If/else", BiBranchNode.class, Activator.BI_BRANCH}, {"Branch", BranchNode.class, Activator.BRANCH}, {"While loop", PreValidationLoopNode.class, Activator.WHILE}, {"Do while loop", PostValidationLoopNode.class, Activator.DO_WHILE}, {}, {"Start", StartPointNode.class, Activator.START_POINT}, {"End", EndPointNode.class, Activator.END_POINT}, {}, {"Decorator", DecoratorNode.class, Activator.DECORATOR}, {"Adapter", AdapterNode.class, Activator.ADAPTER}, }; private PaletteContainer createControlGroup(PaletteRoot root) { PaletteGroup controlGroup = new PaletteGroup("Control Group"); List<PaletteEntry> entries = new ArrayList<PaletteEntry>(); ToolEntry tool = new SelectionToolEntry(); entries.add(tool); root.setDefaultEntry(tool); tool = new MarqueeToolEntry(); entries.add(tool); PaletteSeparator sep = new PaletteSeparator(); sep.setUserModificationPermission(PaletteEntry.PERMISSION_NO_MODIFICATION); entries.add(sep); for(Object[] entry: ENTRIES){ if(entry.length == 0){ // sep = new PaletteSeparator(); // sep.setUserModificationPermission(PaletteEntry.PERMISSION_NO_MODIFICATION); // entries.add(sep); entries.add(new PaletteSeparator()); }else{ entries.add(new CombinedTemplateCreationEntry( (String)entry[0], (String)entry[0], entry[1], new SimpleFactory((Class)entry[1]), Activator.getDefault().getImageRegistry().getDescriptor(((String)entry[2])), Activator.getDefault().getImageRegistry().getDescriptor(((String)entry[2])))); } } controlGroup.addAll(entries); return controlGroup; } }