blob: e8ef823b8be9287c38081e77c17d44dc2973d3fb [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2003, 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.examples.flow;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.gef.examples.flow.model.Activity;
import org.eclipse.gef.examples.flow.model.ParallelActivity;
import org.eclipse.gef.examples.flow.model.SequentialActivity;
import org.eclipse.gef.palette.CombinedTemplateCreationEntry;
import org.eclipse.gef.palette.ConnectionCreationToolEntry;
import org.eclipse.gef.palette.MarqueeToolEntry;
import org.eclipse.gef.palette.PaletteContainer;
import org.eclipse.gef.palette.PaletteDrawer;
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 org.eclipse.jface.resource.ImageDescriptor;
/**
* Handles the creation of the palette for the Flow Editor.
*
* @author Daniel Lee
*/
public class FlowEditorPaletteFactory {
private static List createCategories(PaletteRoot root) {
List categories = new ArrayList();
categories.add(createControlGroup(root));
categories.add(createComponentsDrawer());
return categories;
}
private static PaletteContainer createComponentsDrawer() {
PaletteDrawer drawer = new PaletteDrawer("Components", null);
List entries = new ArrayList();
CombinedTemplateCreationEntry combined = new CombinedTemplateCreationEntry(
"Activity", "Create a new Activity Node", Activity.class,
new SimpleFactory(Activity.class),
ImageDescriptor.createFromFile(FlowPlugin.class,
"images/gear16.gif"), ImageDescriptor.createFromFile(
Activity.class, "images/gear16.gif"));
entries.add(combined);
combined = new CombinedTemplateCreationEntry("Sequential Activity",
"Create a Sequential Activity", SequentialActivity.class,
new SimpleFactory(SequentialActivity.class),
ImageDescriptor.createFromFile(FlowPlugin.class,
"images/sequence16.gif"),
ImageDescriptor.createFromFile(FlowPlugin.class,
"images/sequence16.gif"));
entries.add(combined);
combined = new CombinedTemplateCreationEntry("Parallel Activity",
"Create a Parallel Activity", ParallelActivity.class,
new SimpleFactory(ParallelActivity.class),
ImageDescriptor.createFromFile(FlowPlugin.class,
"images/parallel16.gif"),
ImageDescriptor.createFromFile(FlowPlugin.class,
"images/parallel16.gif"));
entries.add(combined);
drawer.addAll(entries);
return drawer;
}
private static PaletteContainer createControlGroup(PaletteRoot root) {
PaletteGroup controlGroup = new PaletteGroup("Control Group");
List entries = new ArrayList();
ToolEntry tool = new SelectionToolEntry();
entries.add(tool);
root.setDefaultEntry(tool);
tool = new MarqueeToolEntry();
entries.add(tool);
PaletteSeparator sep = new PaletteSeparator(
"org.eclipse.gef.examples.flow.flowplugin.sep2");
sep.setUserModificationPermission(PaletteEntry.PERMISSION_NO_MODIFICATION);
entries.add(sep);
tool = new ConnectionCreationToolEntry("Connection Creation",
"Creating connections", null, ImageDescriptor.createFromFile(
FlowPlugin.class, "images/connection16.gif"),
ImageDescriptor.createFromFile(Activity.class,
"images/connection16.gif"));
entries.add(tool);
controlGroup.addAll(entries);
return controlGroup;
}
/**
* Creates the PaletteRoot and adds all Palette elements.
*
* @return the root
*/
public static PaletteRoot createPalette() {
PaletteRoot flowPalette = new PaletteRoot();
flowPalette.addAll(createCategories(flowPalette));
return flowPalette;
}
}