[jboss-svn-commits] JBL Code SVN: r23454 - in labs/jbossrules/trunk/drools-eclipse: drools-eclipse-osworkflow and 10 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Oct 14 06:56:14 EDT 2008


Author: KrisVerlaenen
Date: 2008-10-14 06:56:13 -0400 (Tue, 14 Oct 2008)
New Revision: 23454

Added:
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-osworkflow/
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-osworkflow/.classpath
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-osworkflow/.project
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-osworkflow/META-INF/
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-osworkflow/META-INF/MANIFEST.MF
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-osworkflow/build.properties
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-osworkflow/icons/
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-osworkflow/icons/process.gif
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-osworkflow/icons/processV.gif
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-osworkflow/lib/
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-osworkflow/plugin.xml
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-osworkflow/src/
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-osworkflow/src/org/
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-osworkflow/src/org/drools/
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-osworkflow/src/org/drools/eclipse/
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-osworkflow/src/org/drools/eclipse/osworkflow/
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-osworkflow/src/org/drools/eclipse/osworkflow/Activator.java
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-osworkflow/src/org/drools/eclipse/osworkflow/OSWorkflowBuilder.java
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-osworkflow/src/org/drools/eclipse/osworkflow/OSWorkflowExtension.java
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-osworkflow/src/org/drools/eclipse/osworkflow/core/
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-osworkflow/src/org/drools/eclipse/osworkflow/core/OSWorkflowProcessWrapper.java
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-osworkflow/src/org/drools/eclipse/osworkflow/core/OSWorkflowWrapperBuilder.java
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-osworkflow/src/org/drools/eclipse/osworkflow/core/StepNodeWrapper.java
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-osworkflow/src/org/drools/eclipse/osworkflow/editor/
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-osworkflow/src/org/drools/eclipse/osworkflow/editor/OSWorkflowModelEditor.java
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-osworkflow/src/org/drools/eclipse/osworkflow/editor/editpart/
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-osworkflow/src/org/drools/eclipse/osworkflow/editor/editpart/OSWorkflowEditPartFactory.java
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-osworkflow/src/org/drools/eclipse/osworkflow/editor/editpart/StepNodeEditPart.java
Log:
 - adding OSWorkflow eclipse plugin

Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-osworkflow/.classpath
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-osworkflow/.classpath	                        (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-osworkflow/.classpath	2008-10-14 10:56:13 UTC (rev 23454)
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+	<classpathentry exported="true" kind="lib" path="lib/bsh-1.2b7.jar" sourcepath="drools-eclipse-osworkflowsrc.zip"/>
+	<classpathentry exported="true" kind="lib" path="lib/drools-osworkflow.jar" sourcepath="drools-eclipse-osworkflowsrc.zip"/>
+	<classpathentry exported="true" kind="lib" path="lib/oscore-2.2.5.jar" sourcepath="drools-eclipse-osworkflowsrc.zip"/>
+	<classpathentry exported="true" kind="lib" path="lib/osworkflow-2.8.0.jar" sourcepath="drools-eclipse-osworkflowsrc.zip"/>
+	<classpathentry exported="true" kind="lib" path="lib/propertyset-1.4.jar" sourcepath="drools-eclipse-osworkflowsrc.zip"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>

Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-osworkflow/.project
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-osworkflow/.project	                        (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-osworkflow/.project	2008-10-14 10:56:13 UTC (rev 23454)
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>drools-eclipse-osworkflow</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>

Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-osworkflow/META-INF/MANIFEST.MF
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-osworkflow/META-INF/MANIFEST.MF	                        (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-osworkflow/META-INF/MANIFEST.MF	2008-10-14 10:56:13 UTC (rev 23454)
@@ -0,0 +1,36 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: OSWorkflow Plug-in
+Bundle-SymbolicName: org.drools.eclipse.osworkflow;singleton:=true
+Bundle-Version: 1.0.0
+Bundle-Activator: org.drools.eclipse.osworkflow.Activator
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.core.resources,
+ org.eclipse.debug.core,
+ org.eclipse.debug.ui,
+ org.eclipse.jdt.core,
+ org.eclipse.jdt.debug,
+ org.eclipse.jdt.debug.ui,
+ org.eclipse.jdt.launching,
+ org.eclipse.jdt.ui,
+ org.eclipse.jdt.junit,
+ org.eclipse.jface.text,
+ org.eclipse.ui,
+ org.eclipse.ui.console,
+ org.eclipse.ui.editors,
+ org.eclipse.ui.forms,
+ org.eclipse.ui.ide,
+ org.eclipse.ui.views,
+ org.eclipse.ui.views.properties.tabbed,
+ org.eclipse.ui.workbench.texteditor,
+ org.eclipse.gef,
+ com.ibm.icu,
+ org.drools.eclipse
+Bundle-ActivationPolicy: lazy
+Bundle-ClassPath: lib/bsh-1.2b7.jar,
+ lib/drools-osworkflow.jar,
+ lib/oscore-2.2.5.jar,
+ lib/osworkflow-2.8.0.jar,
+ lib/propertyset-1.4.jar,
+ .
+Bundle-RequiredExecutionEnvironment: J2SE-1.5

Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-osworkflow/build.properties
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-osworkflow/build.properties	                        (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-osworkflow/build.properties	2008-10-14 10:56:13 UTC (rev 23454)
@@ -0,0 +1,10 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .,\
+               plugin.xml,\
+               lib/bsh-1.2b7.jar,\
+               lib/drools-osworkflow.jar,\
+               lib/oscore-2.2.5.jar,\
+               lib/osworkflow-2.8.0.jar,\
+               lib/propertyset-1.4.jar

Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-osworkflow/icons/process.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-osworkflow/icons/process.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-osworkflow/icons/processV.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-osworkflow/icons/processV.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-osworkflow/plugin.xml
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-osworkflow/plugin.xml	                        (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-osworkflow/plugin.xml	2008-10-14 10:56:13 UTC (rev 23454)
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.2"?>
+<plugin>
+   <extension
+         point="org.eclipse.ui.editors">
+      <editor
+            name="OSWorkflow Editor"
+            extensions="oswf"
+            icon="icons/process.gif"
+            class="org.drools.eclipse.osworkflow.editor.OSWorkflowModelEditor"
+            id="org.drools.eclipse.osworkflow.editor.OSWorkflowModelEditor">
+      </editor>
+   </extension>
+   
+   <extension
+      id="osworkflowbuilder" name="OSWorkflow Builder" point="org.eclipse.core.resources.builders">
+      <builder>
+         <run class="org.drools.eclipse.osworkflow.OSWorkflowBuilder"/>
+      </builder>
+   </extension>   
+   
+   <extension
+         point="org.drools.eclipse.processExtension">
+      <processExtension
+            className="org.drools.eclipse.osworkflow.OSWorkflowExtension">
+      </processExtension>
+   </extension>
+
+   <extension
+         point = "org.eclipse.ui.editorActions">
+      <editorContribution
+            id="org.drools.eclipse.flow.common.editor.action.VerticalAutoLayoutAction"
+            targetID="org.drools.eclipse.osworkflow.editor.OSWorkflowModelEditor">
+	     <action
+	        id="org.drools.eclipse.flow.common.editor.action.VerticalAutoLayoutAction"
+            label="Auto Layout (Vertical)"
+	        toolbarPath="Drools"
+            icon="icons/processV.gif"
+            tooltip="Auto layout the workflow (vertical)"
+            class="org.drools.eclipse.flow.common.editor.action.VerticalAutoLayoutAction"
+         />
+      </editorContribution>
+      <editorContribution
+            id="org.drools.eclipse.flow.common.editor.action.HorizontalAutoLayoutAction"
+            targetID="org.drools.eclipse.osworkflow.editor.OSWorkflowModelEditor">
+	     <action
+	        id="org.drools.eclipse.flow.common.editor.action.HorizontalAutoLayoutAction"
+            label="Auto Layout (Horizontal)"
+	        toolbarPath="Drools"
+            icon="icons/process.gif"
+            tooltip="Auto layout the workflow (horizontal)"
+            class="org.drools.eclipse.flow.common.editor.action.HorizontalAutoLayoutAction"
+         />
+      </editorContribution>
+   </extension>
+   
+</plugin>

Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-osworkflow/src/org/drools/eclipse/osworkflow/Activator.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-osworkflow/src/org/drools/eclipse/osworkflow/Activator.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-osworkflow/src/org/drools/eclipse/osworkflow/Activator.java	2008-10-14 10:56:13 UTC (rev 23454)
@@ -0,0 +1,37 @@
+package org.drools.eclipse.osworkflow;
+
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator extends AbstractUIPlugin {
+
+	// The plug-in ID
+	public static final String PLUGIN_ID = "org.drools.eclipse.osworkflow";
+
+	// The shared instance
+	private static Activator plugin;
+	
+	/**
+	 * The constructor
+	 */
+	public Activator() {
+	}
+
+	public void start(BundleContext context) throws Exception {
+		super.start(context);
+		plugin = this;
+	}
+
+	public void stop(BundleContext context) throws Exception {
+		plugin = null;
+		super.stop(context);
+	}
+
+	public static Activator getDefault() {
+		return plugin;
+	}
+
+}

Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-osworkflow/src/org/drools/eclipse/osworkflow/OSWorkflowBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-osworkflow/src/org/drools/eclipse/osworkflow/OSWorkflowBuilder.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-osworkflow/src/org/drools/eclipse/osworkflow/OSWorkflowBuilder.java	2008-10-14 10:56:13 UTC (rev 23454)
@@ -0,0 +1,85 @@
+package org.drools.eclipse.osworkflow;
+
+import java.io.StringReader;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.drools.eclipse.DroolsEclipsePlugin;
+import org.drools.eclipse.ProcessInfo;
+import org.drools.eclipse.builder.DroolsBuildMarker;
+import org.drools.eclipse.builder.DroolsBuilder;
+import org.drools.osworkflow.xml.OSWorkflowSemanticModule;
+import org.drools.process.core.Process;
+import org.drools.xml.SemanticModules;
+import org.drools.xml.XmlProcessReader;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.jdt.core.JavaModelException;
+
+/**
+ *  
+ * @author <a href="mailto:kris_verlaenen at hotmail.com">kris verlaenen </a>
+ */
+public class OSWorkflowBuilder extends DroolsBuilder {
+
+    protected boolean parseResource(IResource res, boolean clean) {
+        try {
+            IJavaProject project = JavaCore.create(res.getProject());
+            // exclude files that are located in the output directory,
+            // unless the ouput directory is the same as the project location
+            if (!project.getOutputLocation().equals(project.getPath())
+                    && project.getOutputLocation().isPrefixOf(res.getFullPath())) {
+                return false;
+            }
+        } catch (JavaModelException e) {
+            // do nothing
+        }
+
+        if (res instanceof IFile && "oswf".equals(res.getFileExtension())) {
+            removeProblemsFor(res);
+            List<DroolsBuildMarker> markers = new ArrayList<DroolsBuildMarker>();
+            try {
+            	if (clean) {
+            		DroolsEclipsePlugin.getDefault().invalidateResource(res);
+            	}
+            	String input = convertToString(((IFile) res).getContents());
+            	ProcessInfo processInfo = parseProcess(input, (IFile) res);
+            	markParseErrors(markers, processInfo.getErrors());
+            } catch (Throwable t) {
+            	createMarker(res, t.getMessage(), -1);
+            }
+            return false;
+        }
+
+        return true;
+    }
+    
+    public ProcessInfo parseProcess(String input, IResource resource) {
+        try {
+            ClassLoader oldLoader = Thread.currentThread().getContextClassLoader();
+            ClassLoader newLoader = this.getClass().getClassLoader();
+            try {
+                Thread.currentThread().setContextClassLoader(newLoader);
+                SemanticModules semanticModules = new SemanticModules();
+                semanticModules.addSemanticModule(new OSWorkflowSemanticModule());
+                XmlProcessReader xmlReader = new XmlProcessReader(semanticModules);
+                Process process = xmlReader.read(new StringReader(input));
+                if (process != null) {
+                    return DroolsEclipsePlugin.getDefault().parseProcess(process, resource);
+                } else {
+                    throw new IllegalArgumentException(
+                        "Could not parse process " + resource);
+                }
+            } finally {
+                Thread.currentThread().setContextClassLoader(oldLoader);
+            }           
+        } catch (Exception e) {
+            DroolsEclipsePlugin.log(e);
+        }
+        return null;
+    }
+
+    
+}

Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-osworkflow/src/org/drools/eclipse/osworkflow/OSWorkflowExtension.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-osworkflow/src/org/drools/eclipse/osworkflow/OSWorkflowExtension.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-osworkflow/src/org/drools/eclipse/osworkflow/OSWorkflowExtension.java	2008-10-14 10:56:13 UTC (rev 23454)
@@ -0,0 +1,23 @@
+package org.drools.eclipse.osworkflow;
+
+import org.drools.eclipse.flow.common.editor.ProcessExtension;
+import org.drools.eclipse.flow.common.editor.core.ProcessWrapperBuilder;
+import org.drools.eclipse.flow.common.editor.editpart.ProcessEditPartFactory;
+import org.drools.eclipse.osworkflow.core.OSWorkflowWrapperBuilder;
+import org.drools.eclipse.osworkflow.editor.editpart.OSWorkflowEditPartFactory;
+
+public class OSWorkflowExtension implements ProcessExtension {
+
+    public boolean acceptsProcess(String type) {
+        return "OSWorkflow".equals(type);
+    }
+
+    public ProcessEditPartFactory getProcessEditPartFactory() {
+        return new OSWorkflowEditPartFactory();
+    }
+
+    public ProcessWrapperBuilder getProcessWrapperBuilder() {
+        return new OSWorkflowWrapperBuilder();
+    }
+
+}

Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-osworkflow/src/org/drools/eclipse/osworkflow/core/OSWorkflowProcessWrapper.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-osworkflow/src/org/drools/eclipse/osworkflow/core/OSWorkflowProcessWrapper.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-osworkflow/src/org/drools/eclipse/osworkflow/core/OSWorkflowProcessWrapper.java	2008-10-14 10:56:13 UTC (rev 23454)
@@ -0,0 +1,58 @@
+package org.drools.eclipse.osworkflow.core;
+/*
+ * Copyright 2005 JBoss Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import org.drools.eclipse.flow.common.editor.core.ElementWrapper;
+import org.drools.eclipse.flow.common.editor.core.ProcessWrapper;
+import org.drools.eclipse.flow.ruleflow.core.NodeWrapper;
+import org.drools.osworkflow.core.OSWorkflowProcess;
+import org.drools.process.core.Process;
+import org.drools.workflow.core.Node;
+
+/**
+ * Wrapper for a OSWorkflow process.
+ * 
+ * @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
+ */
+public class OSWorkflowProcessWrapper extends ProcessWrapper {
+
+	private static final long serialVersionUID = 400L;
+
+    public OSWorkflowProcess getOSWorkflowProcess() {
+        return (OSWorkflowProcess) getProcess();
+    }
+    
+    protected Process createProcess() {
+        return new OSWorkflowProcess();
+    }
+
+    protected void internalAddElement(ElementWrapper element) {
+        Node node = ((NodeWrapper) element).getNode();
+        long id = 0;
+        for (Node n: getOSWorkflowProcess().getNodes()) {
+            if (n.getId() > id) {
+                id = n.getId();
+            }
+        }
+        node.setId(++id);
+        getOSWorkflowProcess().addNode(node); 
+    }
+
+    protected void internalRemoveElement(ElementWrapper element) {
+        getOSWorkflowProcess().removeNode(((NodeWrapper) element).getNode()); 
+    }
+    
+}

Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-osworkflow/src/org/drools/eclipse/osworkflow/core/OSWorkflowWrapperBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-osworkflow/src/org/drools/eclipse/osworkflow/core/OSWorkflowWrapperBuilder.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-osworkflow/src/org/drools/eclipse/osworkflow/core/OSWorkflowWrapperBuilder.java	2008-10-14 10:56:13 UTC (rev 23454)
@@ -0,0 +1,152 @@
+package org.drools.eclipse.osworkflow.core;
+
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.drools.eclipse.WorkItemDefinitions;
+import org.drools.eclipse.flow.common.editor.core.ElementContainer;
+import org.drools.eclipse.flow.common.editor.core.ProcessWrapper;
+import org.drools.eclipse.flow.common.editor.core.ProcessWrapperBuilder;
+import org.drools.eclipse.flow.ruleflow.core.ActionWrapper;
+import org.drools.eclipse.flow.ruleflow.core.CompositeContextNodeWrapper;
+import org.drools.eclipse.flow.ruleflow.core.ConnectionWrapper;
+import org.drools.eclipse.flow.ruleflow.core.EndNodeWrapper;
+import org.drools.eclipse.flow.ruleflow.core.EventNodeWrapper;
+import org.drools.eclipse.flow.ruleflow.core.ForEachNodeWrapper;
+import org.drools.eclipse.flow.ruleflow.core.HumanTaskNodeWrapper;
+import org.drools.eclipse.flow.ruleflow.core.JoinWrapper;
+import org.drools.eclipse.flow.ruleflow.core.MilestoneWrapper;
+import org.drools.eclipse.flow.ruleflow.core.NodeWrapper;
+import org.drools.eclipse.flow.ruleflow.core.RuleSetNodeWrapper;
+import org.drools.eclipse.flow.ruleflow.core.SplitWrapper;
+import org.drools.eclipse.flow.ruleflow.core.StartNodeWrapper;
+import org.drools.eclipse.flow.ruleflow.core.SubProcessWrapper;
+import org.drools.eclipse.flow.ruleflow.core.TimerWrapper;
+import org.drools.eclipse.flow.ruleflow.core.WorkItemWrapper;
+import org.drools.osworkflow.core.OSWorkflowProcess;
+import org.drools.osworkflow.core.node.StepNode;
+import org.drools.process.core.Process;
+import org.drools.process.core.Work;
+import org.drools.process.core.WorkDefinition;
+import org.drools.process.core.impl.WorkDefinitionImpl;
+import org.drools.workflow.core.Connection;
+import org.drools.workflow.core.Node;
+import org.drools.workflow.core.node.ActionNode;
+import org.drools.workflow.core.node.CompositeContextNode;
+import org.drools.workflow.core.node.EndNode;
+import org.drools.workflow.core.node.EventNode;
+import org.drools.workflow.core.node.ForEachNode;
+import org.drools.workflow.core.node.HumanTaskNode;
+import org.drools.workflow.core.node.Join;
+import org.drools.workflow.core.node.MilestoneNode;
+import org.drools.workflow.core.node.RuleSetNode;
+import org.drools.workflow.core.node.Split;
+import org.drools.workflow.core.node.StartNode;
+import org.drools.workflow.core.node.SubProcessNode;
+import org.drools.workflow.core.node.TimerNode;
+import org.drools.workflow.core.node.WorkItemNode;
+import org.eclipse.jdt.core.IJavaProject;
+
+public class OSWorkflowWrapperBuilder implements ProcessWrapperBuilder {
+    
+    public ProcessWrapper getProcessWrapper(Process process, IJavaProject project) {
+        if (process instanceof OSWorkflowProcess) {
+            OSWorkflowProcess osworkflowProcess = (OSWorkflowProcess) process;
+            OSWorkflowProcessWrapper processWrapper = new OSWorkflowProcessWrapper();
+            processWrapper.localSetProcess(process);
+            Set<Node> nodes = new HashSet<Node>();
+            nodes.addAll(Arrays.asList(osworkflowProcess.getNodes()));
+            Set<Connection> connections = new HashSet<Connection>();
+            processNodes(nodes, connections, processWrapper, project);
+            return processWrapper;
+        }
+        return null;
+    }
+    
+    private static void processNodes(Set<Node> nodes, Set<Connection> connections, ElementContainer container, IJavaProject project) {
+        Map<Node, NodeWrapper> nodeWrappers = new HashMap<Node, NodeWrapper>();
+        for (Node node: nodes) {
+            NodeWrapper nodeWrapper = getNodeWrapper(node, project);
+            nodeWrapper.setNode(node);
+            nodeWrapper.setParent(container);
+            container.localAddElement(nodeWrapper);
+            nodeWrappers.put(node, nodeWrapper);
+            for (List<Connection> inConnections: node.getIncomingConnections().values()) {
+                for (Connection connection: inConnections) {
+                    connections.add(connection);
+                }
+            }
+            for (List<Connection> outConnections: node.getOutgoingConnections().values()) {
+                for (Connection connection: outConnections) {
+                    connections.add(connection);
+                }
+            }
+        }
+        for (Connection connection: connections) {
+            ConnectionWrapper connectionWrapper = new ConnectionWrapper();
+            connectionWrapper.localSetConnection(connection);
+            connectionWrapper.localSetBendpoints(null);
+            NodeWrapper from = nodeWrappers.get(connection.getFrom());
+            connectionWrapper.localSetSource(from);
+            from.localAddOutgoingConnection(connectionWrapper);
+            NodeWrapper to = nodeWrappers.get(connection.getTo());
+            connectionWrapper.localSetTarget(to);
+            to.localAddIncomingConnection(connectionWrapper);
+        }
+    }
+    
+    private static NodeWrapper getNodeWrapper(Node node, IJavaProject project) {
+        if (node instanceof StartNode) {
+            return new StartNodeWrapper();
+        } else if (node instanceof EndNode) {
+            return new EndNodeWrapper();
+        } else if (node instanceof ActionNode) {
+            return new ActionWrapper();
+        } else if (node instanceof RuleSetNode) {
+            return new RuleSetNodeWrapper();
+        } else if (node instanceof SubProcessNode) {
+            return new SubProcessWrapper();
+        } else if (node instanceof ForEachNode) {
+            return new ForEachNodeWrapper();
+        } else if (node instanceof CompositeContextNode) {
+            return new CompositeContextNodeWrapper();
+        } else if (node instanceof Join) {
+            return new JoinWrapper();
+        } else if (node instanceof Split) {
+            return new SplitWrapper();
+        } else if (node instanceof MilestoneNode) {
+            return new MilestoneWrapper();
+        } else if (node instanceof TimerNode) {
+            return new TimerWrapper();
+        } else if (node instanceof HumanTaskNode) {
+            return new HumanTaskNodeWrapper();
+        } else if (node instanceof WorkItemNode) {
+            WorkItemWrapper workItemWrapper = new WorkItemWrapper();
+            Work work = ((WorkItemNode) node).getWork();
+            if (work != null && work.getName() != null) {
+                WorkDefinition workDefinition = 
+                    WorkItemDefinitions.getWorkDefinitions(project)
+                        .get(work.getName());
+                if (workDefinition == null) {
+//                  DroolsEclipsePlugin.log(
+//                        new IllegalArgumentException("Could not find work definition for work " + work.getName()));
+                    workDefinition = new WorkDefinitionImpl();
+                    ((WorkDefinitionImpl) workDefinition).setName(work.getName());
+                }
+                workItemWrapper.setWorkDefinition(workDefinition);
+            }
+            return workItemWrapper;
+        } else if (node instanceof EventNode) {
+            return new EventNodeWrapper();
+        } else if (node instanceof StepNode) {
+            return new StepNodeWrapper();
+        }
+        throw new IllegalArgumentException(
+            "Could not find node wrapper for node " + node);
+    }
+
+}

Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-osworkflow/src/org/drools/eclipse/osworkflow/core/StepNodeWrapper.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-osworkflow/src/org/drools/eclipse/osworkflow/core/StepNodeWrapper.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-osworkflow/src/org/drools/eclipse/osworkflow/core/StepNodeWrapper.java	2008-10-14 10:56:13 UTC (rev 23454)
@@ -0,0 +1,39 @@
+package org.drools.eclipse.osworkflow.core;
+/*
+ * Copyright 2005 JBoss Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import org.drools.eclipse.flow.ruleflow.core.AbstractNodeWrapper;
+import org.drools.osworkflow.core.node.StepNode;
+
+/**
+ * Wrapper for a step node.
+ * 
+ * @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
+ */
+public class StepNodeWrapper extends AbstractNodeWrapper {
+
+	private static final long serialVersionUID = 1L;
+
+    public StepNodeWrapper() {
+        setNode(new StepNode());
+        getStepNode().setName("Step");
+    }
+    
+    public StepNode getStepNode() {
+        return (StepNode) getNode();
+    }
+    
+}

Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-osworkflow/src/org/drools/eclipse/osworkflow/editor/OSWorkflowModelEditor.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-osworkflow/src/org/drools/eclipse/osworkflow/editor/OSWorkflowModelEditor.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-osworkflow/src/org/drools/eclipse/osworkflow/editor/OSWorkflowModelEditor.java	2008-10-14 10:56:13 UTC (rev 23454)
@@ -0,0 +1,189 @@
+package org.drools.eclipse.osworkflow.editor;
+/*
+ * Copyright 2005 JBoss Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.drools.eclipse.DroolsEclipsePlugin;
+import org.drools.eclipse.WorkItemDefinitions;
+import org.drools.eclipse.flow.common.editor.GenericModelEditor;
+import org.drools.eclipse.flow.common.editor.editpart.ProcessEditPartFactory;
+import org.drools.eclipse.flow.ruleflow.core.WorkItemWrapper;
+import org.drools.eclipse.flow.ruleflow.editor.RuleFlowPaletteFactory;
+import org.drools.eclipse.osworkflow.core.OSWorkflowProcessWrapper;
+import org.drools.eclipse.osworkflow.core.OSWorkflowWrapperBuilder;
+import org.drools.eclipse.osworkflow.editor.editpart.OSWorkflowEditPartFactory;
+import org.drools.eclipse.util.ProjectClassLoader;
+import org.drools.osworkflow.core.OSWorkflowProcess;
+import org.drools.osworkflow.xml.OSWorkflowSemanticModule;
+import org.drools.osworkflow.xml.XmlOSWorkflowProcessDumper;
+import org.drools.process.core.WorkDefinition;
+import org.drools.process.core.WorkDefinitionExtension;
+import org.drools.xml.SemanticModules;
+import org.drools.xml.XmlProcessReader;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.gef.EditPartFactory;
+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.requests.SimpleFactory;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IFileEditorInput;
+
+/**
+ * Graphical editor for a RuleFlow.
+ * 
+ * @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
+ */
+public class OSWorkflowModelEditor extends GenericModelEditor {
+
+    public OSWorkflowModelEditor() {
+    }
+    
+    protected EditPartFactory createEditPartFactory() {
+        ProcessEditPartFactory factory = new OSWorkflowEditPartFactory();
+        factory.setProject(getJavaProject());
+        return factory;
+    }
+
+    protected PaletteRoot createPalette() {
+        return RuleFlowPaletteFactory.createPalette();
+    }
+
+    protected Object createModel() {
+        OSWorkflowProcessWrapper result = new OSWorkflowProcessWrapper();
+        IFile file = ((IFileEditorInput)getEditorInput()).getFile();
+        String name = file.getName();
+        result.setName(name.substring(0, name.length() - 3));
+        return result;
+    }
+    
+    public OSWorkflowProcessWrapper getOSWorkflowModel() {
+        return (OSWorkflowProcessWrapper) getModel();
+    }
+
+    protected void setInput(IEditorInput input) {
+        super.setInput(input);
+        refreshPalette(((IFileEditorInput) input).getFile());
+    }
+    
+    private void refreshPalette(IFile file) {
+        IJavaProject javaProject = getJavaProject();
+        if (javaProject != null) {
+            try {
+                ClassLoader oldLoader = Thread.currentThread().getContextClassLoader();
+                ClassLoader newLoader = ProjectClassLoader.getProjectClassLoader(javaProject);
+                try {
+                    Thread.currentThread().setContextClassLoader(newLoader);
+                    PaletteDrawer drawer = (PaletteDrawer) getPaletteRoot().getChildren().get(2);
+                    List<PaletteEntry> entries = new ArrayList<PaletteEntry>();
+                    for (final WorkDefinition workDefinition: WorkItemDefinitions.getWorkDefinitions(file).values()) {
+                        final String label;
+                        String description = workDefinition.getName();
+                        String icon = null;
+                        if (workDefinition instanceof WorkDefinitionExtension) {
+                            WorkDefinitionExtension extension = (WorkDefinitionExtension) workDefinition;
+                            label = extension.getDisplayName();
+                            description = extension.getExplanationText();
+                            icon = extension.getIcon();
+                        } else {
+                            label = workDefinition.getName();
+                        }
+                        
+                        URL iconUrl = null;
+                        if (icon != null) {
+                            iconUrl = newLoader.getResource(icon);
+                        }
+                        if (iconUrl == null) {
+                            iconUrl = DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/action.gif");
+                        }
+                        CombinedTemplateCreationEntry combined = new CombinedTemplateCreationEntry(
+                            label,
+                            description,
+                            WorkItemWrapper.class,
+                            new SimpleFactory(WorkItemWrapper.class) {
+                                public Object getNewObject() {
+                                    WorkItemWrapper workItemWrapper = (WorkItemWrapper) super.getNewObject();
+                                    workItemWrapper.setName(label);
+                                    workItemWrapper.setWorkDefinition(workDefinition);
+                                    return workItemWrapper;
+                                }
+                            },
+                            ImageDescriptor.createFromURL(iconUrl), 
+                            ImageDescriptor.createFromURL(iconUrl)
+                        );
+                        entries.add(combined);
+                    }
+                    drawer.setChildren(entries);
+                } finally {
+                    Thread.currentThread().setContextClassLoader(oldLoader);
+                }
+            } catch (Exception e) {
+                DroolsEclipsePlugin.log(e);
+            }
+        }
+    }
+
+    protected void writeModel(OutputStream os) throws IOException {
+    	writeModel(os, true);
+    }
+    
+    protected void writeModel(OutputStream os, boolean includeGraphics) throws IOException {
+        OutputStreamWriter writer = new OutputStreamWriter(os);
+        try {
+            String out = XmlOSWorkflowProcessDumper.INSTANCE.dump(
+                getOSWorkflowModel().getOSWorkflowProcess(), includeGraphics);
+            writer.write(out);
+        } catch (Throwable t) {
+            DroolsEclipsePlugin.log(t);
+        }
+        writer.close();
+    }
+    
+    protected void createModel(InputStream is) {
+        try {
+            InputStreamReader reader = new InputStreamReader(is);
+            SemanticModules semanticModules = new SemanticModules();
+            semanticModules.addSemanticModule(new OSWorkflowSemanticModule());
+            XmlProcessReader xmlReader = new XmlProcessReader(semanticModules);
+            System.setProperty( "drools.schema.validating", "false" );
+            try {
+                OSWorkflowProcess process = (OSWorkflowProcess) xmlReader.read(reader);
+                if (process == null) {
+                    setModel(createModel());
+                } else {
+                    setModel(new OSWorkflowWrapperBuilder().getProcessWrapper(process, getJavaProject()));
+                }
+            } catch (Throwable t) {
+                DroolsEclipsePlugin.log(t);
+                setModel(createModel());
+            }
+            reader.close();
+        } catch (Throwable t) {
+            DroolsEclipsePlugin.log(t);
+        }
+    }
+}

Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-osworkflow/src/org/drools/eclipse/osworkflow/editor/editpart/OSWorkflowEditPartFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-osworkflow/src/org/drools/eclipse/osworkflow/editor/editpart/OSWorkflowEditPartFactory.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-osworkflow/src/org/drools/eclipse/osworkflow/editor/editpart/OSWorkflowEditPartFactory.java	2008-10-14 10:56:13 UTC (rev 23454)
@@ -0,0 +1,109 @@
+package org.drools.eclipse.osworkflow.editor.editpart;
+/*
+ * Copyright 2005 JBoss Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import org.drools.eclipse.flow.common.editor.editpart.ElementContainerEditPart;
+import org.drools.eclipse.flow.common.editor.editpart.ProcessEditPart;
+import org.drools.eclipse.flow.common.editor.editpart.ProcessEditPartFactory;
+import org.drools.eclipse.flow.ruleflow.core.ActionWrapper;
+import org.drools.eclipse.flow.ruleflow.core.CompositeContextNodeWrapper;
+import org.drools.eclipse.flow.ruleflow.core.ConnectionWrapper;
+import org.drools.eclipse.flow.ruleflow.core.EndNodeWrapper;
+import org.drools.eclipse.flow.ruleflow.core.EventNodeWrapper;
+import org.drools.eclipse.flow.ruleflow.core.ForEachNodeWrapper;
+import org.drools.eclipse.flow.ruleflow.core.JoinWrapper;
+import org.drools.eclipse.flow.ruleflow.core.MilestoneWrapper;
+import org.drools.eclipse.flow.ruleflow.core.RuleSetNodeWrapper;
+import org.drools.eclipse.flow.ruleflow.core.SplitWrapper;
+import org.drools.eclipse.flow.ruleflow.core.StartNodeWrapper;
+import org.drools.eclipse.flow.ruleflow.core.SubProcessWrapper;
+import org.drools.eclipse.flow.ruleflow.core.TimerWrapper;
+import org.drools.eclipse.flow.ruleflow.core.WorkItemWrapper;
+import org.drools.eclipse.flow.ruleflow.editor.editpart.ActionEditPart;
+import org.drools.eclipse.flow.ruleflow.editor.editpart.ConnectionWrapperEditPart;
+import org.drools.eclipse.flow.ruleflow.editor.editpart.EndNodeEditPart;
+import org.drools.eclipse.flow.ruleflow.editor.editpart.EventNodeEditPart;
+import org.drools.eclipse.flow.ruleflow.editor.editpart.ForEachNodeEditPart;
+import org.drools.eclipse.flow.ruleflow.editor.editpart.JoinEditPart;
+import org.drools.eclipse.flow.ruleflow.editor.editpart.MilestoneEditPart;
+import org.drools.eclipse.flow.ruleflow.editor.editpart.RuleSetNodeEditPart;
+import org.drools.eclipse.flow.ruleflow.editor.editpart.SplitEditPart;
+import org.drools.eclipse.flow.ruleflow.editor.editpart.StartNodeEditPart;
+import org.drools.eclipse.flow.ruleflow.editor.editpart.SubFlowEditPart;
+import org.drools.eclipse.flow.ruleflow.editor.editpart.TimerEditPart;
+import org.drools.eclipse.flow.ruleflow.editor.editpart.WorkItemEditPart;
+import org.drools.eclipse.osworkflow.core.OSWorkflowProcessWrapper;
+import org.drools.eclipse.osworkflow.core.StepNodeWrapper;
+import org.eclipse.gef.EditPart;
+import org.eclipse.jdt.core.IJavaProject;
+
+/**
+ * Factory for OSWorkflow EditParts.
+ * 
+ * @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
+ */
+public class OSWorkflowEditPartFactory implements ProcessEditPartFactory {
+    
+    private IJavaProject project;
+    
+    public void setProject(IJavaProject project) {
+        this.project = project;
+    }
+    
+    public EditPart createEditPart(EditPart context, Object model) {
+        EditPart result = null;
+        if (model instanceof OSWorkflowProcessWrapper) {
+            result = new ProcessEditPart();
+        } else if (model instanceof RuleSetNodeWrapper) {
+            result = new RuleSetNodeEditPart();
+        } else if (model instanceof ConnectionWrapper) {
+            result = new ConnectionWrapperEditPart();
+        } else if (model instanceof StartNodeWrapper) {
+            result = new StartNodeEditPart();
+        } else if (model instanceof EndNodeWrapper) {
+            result = new EndNodeEditPart();
+        } else if (model instanceof SplitWrapper) {
+            result = new SplitEditPart();
+        } else if (model instanceof JoinWrapper) {
+            result = new JoinEditPart();
+        } else if (model instanceof MilestoneWrapper) {
+            result = new MilestoneEditPart();
+        } else if (model instanceof SubProcessWrapper) {
+            result = new SubFlowEditPart();
+        } else if (model instanceof ActionWrapper) {
+            result = new ActionEditPart();
+        } else if (model instanceof WorkItemWrapper) {
+            result = new WorkItemEditPart();
+            ((WorkItemEditPart) result).setProject(project);
+        } else if (model instanceof TimerWrapper) {
+            result = new TimerEditPart();
+        } else if (model instanceof ForEachNodeWrapper) {
+            result = new ForEachNodeEditPart();
+        } else if (model instanceof CompositeContextNodeWrapper) {
+            result = new ElementContainerEditPart();
+        } else if (model instanceof EventNodeWrapper) {
+            result = new EventNodeEditPart();
+        } else if (model instanceof StepNodeWrapper) {
+            result = new StepNodeEditPart();
+        } else {
+            throw new IllegalArgumentException(
+                "Unknown model object " + model);
+        }
+        result.setModel(model);
+        return result;
+    }
+
+}

Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-osworkflow/src/org/drools/eclipse/osworkflow/editor/editpart/StepNodeEditPart.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-osworkflow/src/org/drools/eclipse/osworkflow/editor/editpart/StepNodeEditPart.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-osworkflow/src/org/drools/eclipse/osworkflow/editor/editpart/StepNodeEditPart.java	2008-10-14 10:56:13 UTC (rev 23454)
@@ -0,0 +1,64 @@
+package org.drools.eclipse.osworkflow.editor.editpart;
+/*
+ * Copyright 2005 JBoss Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import org.drools.eclipse.flow.common.editor.editpart.ElementEditPart;
+import org.drools.eclipse.flow.common.editor.editpart.figure.AbstractElementFigure;
+import org.eclipse.draw2d.IFigure;
+import org.eclipse.draw2d.RoundedRectangle;
+import org.eclipse.draw2d.geometry.Dimension;
+import org.eclipse.draw2d.geometry.Rectangle;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.widgets.Display;
+
+/**
+ * EditPart for an action node.
+ * 
+ * @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
+ */
+public class StepNodeEditPart extends ElementEditPart {
+
+    private static final Color color = new Color(Display.getCurrent(), 255, 250, 205);
+    
+    protected IFigure createFigure() {
+        return new StepNodeFigure();
+    }
+    
+    public static class StepNodeFigure extends AbstractElementFigure {
+        
+        private RoundedRectangle rectangle;
+        
+        protected void customizeFigure() {
+            rectangle = new RoundedRectangle();
+            rectangle.setCornerDimensions(new Dimension(25, 25));
+            add(rectangle, 0);
+            rectangle.setBackgroundColor(color);
+            rectangle.setBounds(getBounds());
+            setSelected(false);
+        }
+        
+        public void setBounds(Rectangle rectangle) {
+            super.setBounds(rectangle);
+            this.rectangle.setBounds(rectangle);
+        }
+        
+        public void setSelected(boolean b) {
+            super.setSelected(b);
+            rectangle.setLineWidth(b ? 3 : 1);
+            repaint();
+        }
+    }
+}




More information about the jboss-svn-commits mailing list