[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