/******************************************************************************* * Copyright (c) 2000, 2005 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 com.windowtester.test.gef; import java.util.ArrayList; import java.util.List; import org.eclipse.gef.examples.logicdesigner.LogicMessages; import org.eclipse.gef.examples.logicdesigner.model.AndGate; import org.eclipse.gef.examples.logicdesigner.model.Circuit; import org.eclipse.gef.examples.logicdesigner.model.GroundOutput; import org.eclipse.gef.examples.logicdesigner.model.LED; import org.eclipse.gef.examples.logicdesigner.model.LiveOutput; import org.eclipse.gef.examples.logicdesigner.model.LogicDiagramFactory; import org.eclipse.gef.examples.logicdesigner.model.LogicFlowContainer; import org.eclipse.gef.examples.logicdesigner.model.LogicLabel; import org.eclipse.gef.examples.logicdesigner.model.OrGate; import org.eclipse.gef.examples.logicdesigner.model.XORGate; 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.PaletteStack; import org.eclipse.gef.palette.PanningSelectionToolEntry; import org.eclipse.gef.palette.ToolEntry; import org.eclipse.gef.requests.SimpleFactory; import org.eclipse.gef.tools.MarqueeSelectionTool; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.swt.graphics.Image; import org.eclipse.ui.plugin.AbstractUIPlugin; import org.osgi.framework.BundleContext; /** * The activator class controls the plug-in life cycle */ public class GEFTestPlugin extends AbstractUIPlugin { // The plug-in ID public static final String PLUGIN_ID = "com.windowtester.test.gef"; // The shared instance private static GEFTestPlugin singleton; /* * (non-Javadoc) * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext) */ public void start(BundleContext context) throws Exception { super.start(context); if( singleton == null ){ singleton = this; } } /* * (non-Javadoc) * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext) */ public void stop(BundleContext context) throws Exception { singleton = null; super.stop(context); } /** * Returns the shared instance * * @return the shared instance */ public static GEFTestPlugin getDefault() { return singleton; } public Image getImage(String path) { Image image = getImageRegistry().get(path); if (image == null) { getImageRegistry().put(path, imageDescriptorFromPlugin(PLUGIN_ID, path)); image = getImageRegistry().get(path); } return image; } ////////////////////////////////////////////// // The Logic GEF had a LogicPlugin GEFTestPlugin, it has been placed here ////////////////////////////////////////////// static private List createCategories(PaletteRoot root){ List categories = new ArrayList(); categories.add(createControlGroup(root)); categories.add(createComponentsDrawer()); categories.add(createComplexPartsDrawer()); // categories.add(createTemplateComponentsDrawer()); // categories.add(createComplexTemplatePartsDrawer()); return categories; } static private PaletteContainer createComplexPartsDrawer(){ PaletteDrawer drawer = new PaletteDrawer(LogicMessages.LogicPlugin_Category_ComplexParts_Label, ImageDescriptor.createFromFile(Circuit.class, "icons/can.gif")); //$NON-NLS-1$ List entries = new ArrayList(); CombinedTemplateCreationEntry combined = new CombinedTemplateCreationEntry( LogicMessages.LogicPlugin_Tool_CreationTool_HalfAdder_Label, LogicMessages.LogicPlugin_Tool_CreationTool_HalfAdder_Description, LogicDiagramFactory.getHalfAdderFactory(), ImageDescriptor.createFromFile(Circuit.class, "icons/halfadder16.gif"), //$NON-NLS-1$ ImageDescriptor.createFromFile(Circuit.class, "icons/halfadder24.gif") //$NON-NLS-1$ ); entries.add(combined); combined = new CombinedTemplateCreationEntry( LogicMessages.LogicPlugin_Tool_CreationTool_FullAdder_Label, LogicMessages.LogicPlugin_Tool_CreationTool_FullAdder_Description, LogicDiagramFactory.getFullAdderFactory(), ImageDescriptor.createFromFile(Circuit.class, "icons/fulladder16.gif"), //$NON-NLS-1$ ImageDescriptor.createFromFile(Circuit.class, "icons/fulladder24.gif") //$NON-NLS-1$ ); entries.add(combined); drawer.addAll(entries); return drawer; } static private PaletteContainer createComponentsDrawer(){ PaletteDrawer drawer = new PaletteDrawer( LogicMessages.LogicPlugin_Category_Components_Label, ImageDescriptor.createFromFile(Circuit.class, "icons/comp.gif"));//$NON-NLS-1$ List entries = new ArrayList(); CombinedTemplateCreationEntry combined = new CombinedTemplateCreationEntry( LogicMessages.LogicPlugin_Tool_CreationTool_FlowContainer_Label, LogicMessages.LogicPlugin_Tool_CreationTool_FlowContainer_Description, new SimpleFactory(LogicFlowContainer.class), ImageDescriptor.createFromFile(Circuit.class, "icons/logicflow16.gif"), //$NON-NLS-1$ ImageDescriptor.createFromFile(Circuit.class, "icons/logicflow24.gif")//$NON-NLS-1$ ); entries.add(combined); combined = new CombinedTemplateCreationEntry( LogicMessages.LogicPlugin_Tool_CreationTool_Circuit_Label, LogicMessages.LogicPlugin_Tool_CreationTool_Circuit_Description, new SimpleFactory(Circuit.class), ImageDescriptor.createFromFile(Circuit.class, "icons/circuit16.gif"),//$NON-NLS-1$ ImageDescriptor.createFromFile(Circuit.class, "icons/circuit24.gif")//$NON-NLS-1$ ); entries.add(combined); entries.add(new PaletteSeparator()); combined = new CombinedTemplateCreationEntry( LogicMessages.LogicPlugin_Tool_CreationTool_Label_Label, LogicMessages.LogicPlugin_Tool_CreationTool_Label_Description, new SimpleFactory(LogicLabel.class), ImageDescriptor.createFromFile(Circuit.class, "icons/label16.gif"), //$NON-NLS-1$ ImageDescriptor.createFromFile(Circuit.class, "icons/label24.gif")//$NON-NLS-1$ ); entries.add(combined); combined = new CombinedTemplateCreationEntry( LogicMessages.LogicPlugin_Tool_CreationTool_LED_Label, LogicMessages.LogicPlugin_Tool_CreationTool_LED_Description, new SimpleFactory(LED.class), ImageDescriptor.createFromFile(Circuit.class, "icons/ledicon16.gif"), //$NON-NLS-1$ ImageDescriptor.createFromFile(Circuit.class, "icons/ledicon24.gif")//$NON-NLS-1$ ); entries.add(combined); combined = new CombinedTemplateCreationEntry( LogicMessages.LogicPlugin_Tool_CreationTool_ORGate_Label, LogicMessages.LogicPlugin_Tool_CreationTool_ORGate_Description, new SimpleFactory(OrGate.class), ImageDescriptor.createFromFile(Circuit.class, "icons/or16.gif"),//$NON-NLS-1$ ImageDescriptor.createFromFile(Circuit.class, "icons/or24.gif")//$NON-NLS-1$ ); entries.add(combined); combined = new CombinedTemplateCreationEntry( LogicMessages.LogicPlugin_Tool_CreationTool_XORGate_Label, LogicMessages.LogicPlugin_Tool_CreationTool_XORGate_Description, new SimpleFactory(XORGate.class), ImageDescriptor.createFromFile(Circuit.class, "icons/xor16.gif"),//$NON-NLS-1$ ImageDescriptor.createFromFile(Circuit.class, "icons/xor24.gif")//$NON-NLS-1$ ); entries.add(combined); combined = new CombinedTemplateCreationEntry( LogicMessages.LogicPlugin_Tool_CreationTool_ANDGate_Label, LogicMessages.LogicPlugin_Tool_CreationTool_ANDGate_Description, new SimpleFactory(AndGate.class), ImageDescriptor.createFromFile(Circuit.class, "icons/and16.gif"),//$NON-NLS-1$ ImageDescriptor.createFromFile(Circuit.class, "icons/and24.gif")//$NON-NLS-1$ ); entries.add(combined); PaletteStack liveGroundStack = new PaletteStack( LogicMessages.LogicPlugin_Tool_CreationTool_LiveGroundStack_Label, LogicMessages.LogicPlugin_Tool_CreationTool_LiveGroundStack_Description, null); combined = new CombinedTemplateCreationEntry( LogicMessages.LogicPlugin_Tool_CreationTool_LiveOutput_Label, LogicMessages.LogicPlugin_Tool_CreationTool_LiveOutput_Description, new SimpleFactory(LiveOutput.class), ImageDescriptor.createFromFile(Circuit.class, "icons/live16.gif"),//$NON-NLS-1$ ImageDescriptor.createFromFile(Circuit.class, "icons/live24.gif")//$NON-NLS-1$ ); liveGroundStack.add(combined); combined = new CombinedTemplateCreationEntry( LogicMessages.LogicPlugin_Tool_CreationTool_Ground_Label, LogicMessages.LogicPlugin_Tool_CreationTool_Ground_Description, new SimpleFactory(GroundOutput.class), ImageDescriptor.createFromFile(Circuit.class, "icons/ground16.gif"),//$NON-NLS-1$ ImageDescriptor.createFromFile(Circuit.class, "icons/ground24.gif")//$NON-NLS-1$ ); liveGroundStack.add(combined); entries.add(liveGroundStack); drawer.addAll(entries); return drawer; } static private PaletteContainer createControlGroup(PaletteRoot root){ PaletteGroup controlGroup = new PaletteGroup( LogicMessages.LogicPlugin_Category_ControlGroup_Label); List entries = new ArrayList(); ToolEntry tool = new PanningSelectionToolEntry(); entries.add(tool); root.setDefaultEntry(tool); PaletteStack marqueeStack = new PaletteStack(LogicMessages.Marquee_Stack, "", null); //$NON-NLS-1$ marqueeStack.add(new MarqueeToolEntry()); MarqueeToolEntry marquee = new MarqueeToolEntry(); marquee.setToolProperty(MarqueeSelectionTool.PROPERTY_MARQUEE_BEHAVIOR, new Integer(MarqueeSelectionTool.BEHAVIOR_CONNECTIONS_TOUCHED)); marqueeStack.add(marquee); marquee = new MarqueeToolEntry(); marquee.setToolProperty(MarqueeSelectionTool.PROPERTY_MARQUEE_BEHAVIOR, new Integer(MarqueeSelectionTool.BEHAVIOR_CONNECTIONS_TOUCHED | MarqueeSelectionTool.BEHAVIOR_NODES_CONTAINED)); marqueeStack.add(marquee); marqueeStack.setUserModificationPermission(PaletteEntry.PERMISSION_NO_MODIFICATION); entries.add(marqueeStack); tool = new ConnectionCreationToolEntry( LogicMessages.LogicPlugin_Tool_ConnectionCreationTool_ConnectionCreationTool_Label, LogicMessages.LogicPlugin_Tool_ConnectionCreationTool_ConnectionCreationTool_Description, null, ImageDescriptor.createFromFile(Circuit.class, "icons/connection16.gif"),//$NON-NLS-1$ ImageDescriptor.createFromFile(Circuit.class, "icons/connection24.gif")//$NON-NLS-1$ ); entries.add(tool); controlGroup.addAll(entries); return controlGroup; } public static PaletteRoot createPalette() { PaletteRoot logicPalette = new PaletteRoot(); logicPalette.addAll(createCategories(logicPalette)); return logicPalette; } }