[jboss-svn-commits] JBL Code SVN: r23325 - in labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin: icons and 12 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Oct 6 09:09:45 EDT 2008


Author: KrisVerlaenen
Date: 2008-10-06 09:09:45 -0400 (Mon, 06 Oct 2008)
New Revision: 23325

Added:
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/icons/bpmn/
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/icons/bpmn/Activity.gif
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/icons/bpmn/end_terminate.png
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/icons/bpmn/gateway_complex.png
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/icons/bpmn/intermediate_error_10.png
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/icons/bpmn/intermediate_message.png
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/icons/bpmn/intermediate_signal.png
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/icons/bpmn/intermediate_timer.png
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/icons/bpmn/large/
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/icons/bpmn/large/end_terminate.png
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/icons/bpmn/large/gateway_complex.png
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/icons/bpmn/large/gateway_databased_exclusive.png
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/icons/bpmn/large/gateway_databased_inclusive.png
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/icons/bpmn/large/gateway_parallel.png
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/icons/bpmn/large/intermediate_error_10.png
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/icons/bpmn/large/intermediate_message.png
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/icons/bpmn/large/intermediate_timer.png
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/icons/bpmn/large/start_empty.png
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/icons/bpmn/start_empty.png
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/icons/bpmn/sub_process.png
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/icons/bpmn/sub_process_expanded.png
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/icons/bpmn/task.png
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/figure/bpmn/
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/figure/bpmn/BPMNActionNodeFigure.java
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/figure/bpmn/BPMNCompositeNodeFigure.java
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/figure/bpmn/BPMNEndNodeFigure.java
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/figure/bpmn/BPMNEventNodeFigure.java
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/figure/bpmn/BPMNFaultNodeFigure.java
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/figure/bpmn/BPMNJoinFigure.java
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/figure/bpmn/BPMNMilestoneFigure.java
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/figure/bpmn/BPMNRuleSetNodeFigure.java
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/figure/bpmn/BPMNSplitFigure.java
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/figure/bpmn/BPMNStartNodeFigure.java
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/figure/bpmn/BPMNSubFlowFigure.java
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/figure/bpmn/BPMNTimerNodeFigure.java
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/figure/bpmn/BPMNWorkItemNodeFigure.java
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/skin/
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/skin/BPMNSkinProvider.java
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/skin/DefaultSkinProvider.java
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/skin/SkinManager.java
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/skin/SkinProvider.java
Modified:
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/.classpath
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/DroolsEclipsePlugin.java
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/editpart/figure/ElementContainerFigure.java
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/JoinWrapper.java
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/SplitWrapper.java
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/RuleFlowPaletteFactory.java
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/ActionEditPart.java
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/CompositeNodeEditPart.java
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/EndNodeEditPart.java
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/EventNodeEditPart.java
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/FaultNodeEditPart.java
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/ForEachNodeEditPart.java
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/JoinEditPart.java
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/MilestoneEditPart.java
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/RuleSetNodeEditPart.java
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/SplitEditPart.java
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/StartNodeEditPart.java
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/SubFlowEditPart.java
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/TimerEditPart.java
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/WorkItemEditPart.java
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/preferences/DroolsPreferencePage.java
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/preferences/IDroolsConstants.java
Log:
JBRULES-1794: BPMN-like visualization of processes
 - Added BPMN skin

Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/.classpath
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/.classpath	2008-10-06 13:07:47 UTC (rev 23324)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/.classpath	2008-10-06 13:09:45 UTC (rev 23325)
@@ -15,6 +15,5 @@
 	<classpathentry exported="true" kind="lib" path="lib/antlr-runtime.jar"/>
 	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
 	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/3"/>
 	<classpathentry kind="output" path="target/classes"/>
 </classpath>

Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/icons/bpmn/Activity.gif
===================================================================
(Binary files differ)


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

Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/icons/bpmn/end_terminate.png
===================================================================
(Binary files differ)


Property changes on: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/icons/bpmn/end_terminate.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/icons/bpmn/gateway_complex.png
===================================================================
(Binary files differ)


Property changes on: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/icons/bpmn/gateway_complex.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/icons/bpmn/intermediate_error_10.png
===================================================================
(Binary files differ)


Property changes on: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/icons/bpmn/intermediate_error_10.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/icons/bpmn/intermediate_message.png
===================================================================
(Binary files differ)


Property changes on: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/icons/bpmn/intermediate_message.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/icons/bpmn/intermediate_signal.png
===================================================================
(Binary files differ)


Property changes on: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/icons/bpmn/intermediate_signal.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/icons/bpmn/intermediate_timer.png
===================================================================
(Binary files differ)


Property changes on: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/icons/bpmn/intermediate_timer.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/icons/bpmn/large/end_terminate.png
===================================================================
(Binary files differ)


Property changes on: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/icons/bpmn/large/end_terminate.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/icons/bpmn/large/gateway_complex.png
===================================================================
(Binary files differ)


Property changes on: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/icons/bpmn/large/gateway_complex.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/icons/bpmn/large/gateway_databased_exclusive.png
===================================================================
(Binary files differ)


Property changes on: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/icons/bpmn/large/gateway_databased_exclusive.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/icons/bpmn/large/gateway_databased_inclusive.png
===================================================================
(Binary files differ)


Property changes on: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/icons/bpmn/large/gateway_databased_inclusive.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/icons/bpmn/large/gateway_parallel.png
===================================================================
(Binary files differ)


Property changes on: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/icons/bpmn/large/gateway_parallel.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/icons/bpmn/large/intermediate_error_10.png
===================================================================
(Binary files differ)


Property changes on: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/icons/bpmn/large/intermediate_error_10.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/icons/bpmn/large/intermediate_message.png
===================================================================
(Binary files differ)


Property changes on: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/icons/bpmn/large/intermediate_message.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/icons/bpmn/large/intermediate_timer.png
===================================================================
(Binary files differ)


Property changes on: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/icons/bpmn/large/intermediate_timer.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/icons/bpmn/large/start_empty.png
===================================================================
(Binary files differ)


Property changes on: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/icons/bpmn/large/start_empty.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/icons/bpmn/start_empty.png
===================================================================
(Binary files differ)


Property changes on: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/icons/bpmn/start_empty.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/icons/bpmn/sub_process.png
===================================================================
(Binary files differ)


Property changes on: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/icons/bpmn/sub_process.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/icons/bpmn/sub_process_expanded.png
===================================================================
(Binary files differ)


Property changes on: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/icons/bpmn/sub_process_expanded.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/icons/bpmn/task.png
===================================================================
(Binary files differ)


Property changes on: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/icons/bpmn/task.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/DroolsEclipsePlugin.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/DroolsEclipsePlugin.java	2008-10-06 13:07:47 UTC (rev 23324)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/DroolsEclipsePlugin.java	2008-10-06 13:09:45 UTC (rev 23325)
@@ -244,6 +244,8 @@
                           true );
         store.setDefault( IDroolsConstants.DSL_RULE_EDITOR_COMPLETION_FULL_SENTENCES,
                           true );
+        store.setDefault( IDroolsConstants.SKIN,
+                          "default" );
     }
 
     public DRLInfo parseResource(IResource resource,
@@ -345,7 +347,8 @@
         return null;
     }
 
-    public DRLInfo generateParsedResource(String content,
+    @SuppressWarnings("unchecked")
+	public DRLInfo generateParsedResource(String content,
                                           IResource resource,
                                           boolean useCache,
                                           boolean compile) throws DroolsParserException {

Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/editpart/figure/ElementContainerFigure.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/editpart/figure/ElementContainerFigure.java	2008-10-06 13:07:47 UTC (rev 23324)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/editpart/figure/ElementContainerFigure.java	2008-10-06 13:09:45 UTC (rev 23325)
@@ -8,7 +8,6 @@
 import org.eclipse.draw2d.IFigure;
 import org.eclipse.draw2d.Label;
 import org.eclipse.draw2d.Layer;
-import org.eclipse.draw2d.LineBorder;
 import org.eclipse.draw2d.ScrollPane;
 import org.eclipse.draw2d.StackLayout;
 import org.eclipse.swt.graphics.Image;
@@ -34,7 +33,6 @@
     	add(panel);
         scrollpane.setViewport(new FreeformViewport());
         scrollpane.setContents(pane);
-        setBorder(new LineBorder(1));
     }
 
     public Label getLabel() {
@@ -51,7 +49,6 @@
 
     public void setSelected(boolean b) {
         this.selected = b;
-        ((LineBorder) getBorder()).setWidth(b ? 3 : 1);
     }
 
     public void setText(String text) {

Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/JoinWrapper.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/JoinWrapper.java	2008-10-06 13:07:47 UTC (rev 23324)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/JoinWrapper.java	2008-10-06 13:09:45 UTC (rev 23325)
@@ -29,7 +29,9 @@
  */
 public class JoinWrapper extends AbstractNodeWrapper {
 
-    private static final long serialVersionUID = 400L;
+	public static final int CHANGE_TYPE = 5;
+
+	private static final long serialVersionUID = 400L;
     private static IPropertyDescriptor[] descriptors;
 
     public static final String TYPE = "type";
@@ -68,6 +70,7 @@
     public void resetPropertyValue(Object id) {
         if (TYPE.equals(id)) {
             getJoin().setType(Join.TYPE_UNDEFINED);
+            notifyListeners(CHANGE_TYPE);
         } else {
             super.resetPropertyValue(id);
         }
@@ -76,6 +79,7 @@
     public void setPropertyValue(Object id, Object value) {
         if (TYPE.equals(id)) {
             getJoin().setType(((Integer) value).intValue());
+            notifyListeners(CHANGE_TYPE);
         } else {
             super.setPropertyValue(id, value);
         }

Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/SplitWrapper.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/SplitWrapper.java	2008-10-06 13:07:47 UTC (rev 23324)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/SplitWrapper.java	2008-10-06 13:09:45 UTC (rev 23325)
@@ -39,7 +39,9 @@
  */
 public class SplitWrapper extends AbstractNodeWrapper {
 
-    public static final String TYPE = "type";
+	public static final int CHANGE_TYPE = 5;
+
+	public static final String TYPE = "type";
     public static final String CONSTRAINTS = "constraints";
     
     private static final long serialVersionUID = 400L;
@@ -96,6 +98,7 @@
     public void resetPropertyValue(Object id) {
         if (TYPE.equals(id)) {
             getSplit().setType(Split.TYPE_UNDEFINED);
+            notifyListeners(CHANGE_TYPE);
         } else if (CONSTRAINTS.equals(id)) {
         	for (Connection connection: getSplit().getDefaultOutgoingConnections()) {
         		getSplit().setConstraint(connection, null);
@@ -109,6 +112,7 @@
 	public void setPropertyValue(Object id, Object value) {
         if (TYPE.equals(id)) {
             getSplit().setType(((Integer) value).intValue());
+            notifyListeners(CHANGE_TYPE);
         } else if (CONSTRAINTS.equals(id)) {
         	Iterator<Map.Entry<Split.ConnectionRef, Constraint>> iterator = ((Map<Split.ConnectionRef, Constraint>) value).entrySet().iterator();
         	while (iterator.hasNext()) {

Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/RuleFlowPaletteFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/RuleFlowPaletteFactory.java	2008-10-06 13:07:47 UTC (rev 23324)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/RuleFlowPaletteFactory.java	2008-10-06 13:09:45 UTC (rev 23325)
@@ -19,25 +19,9 @@
 import java.util.List;
 
 import org.drools.eclipse.DroolsEclipsePlugin;
-import org.drools.eclipse.flow.common.editor.core.ElementConnectionFactory;
-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.ConnectionWrapperFactory;
-import org.drools.eclipse.flow.ruleflow.core.EndNodeWrapper;
-import org.drools.eclipse.flow.ruleflow.core.EventNodeWrapper;
-import org.drools.eclipse.flow.ruleflow.core.FaultNodeWrapper;
-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.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.eclipse.gef.palette.CombinedTemplateCreationEntry;
-import org.eclipse.gef.palette.ConnectionCreationToolEntry;
+import org.drools.eclipse.flow.ruleflow.skin.SkinManager;
+import org.drools.eclipse.flow.ruleflow.skin.SkinProvider;
+import org.drools.eclipse.preferences.IDroolsConstants;
 import org.eclipse.gef.palette.MarqueeToolEntry;
 import org.eclipse.gef.palette.PaletteContainer;
 import org.eclipse.gef.palette.PaletteDrawer;
@@ -46,9 +30,6 @@
 import org.eclipse.gef.palette.PaletteRoot;
 import org.eclipse.gef.palette.SelectionToolEntry;
 import org.eclipse.gef.palette.ToolEntry;
-import org.eclipse.gef.requests.CreationFactory;
-import org.eclipse.gef.requests.SimpleFactory;
-import org.eclipse.jface.resource.ImageDescriptor;
 
 /**
  * Factory for creating a RuleFlow palette.
@@ -66,160 +47,12 @@
     private static List<PaletteEntry> createCategories(PaletteRoot root) {
         List<PaletteEntry> categories = new ArrayList<PaletteEntry>();
         categories.add(createControlGroup(root));
-        categories.add(createComponentsDrawer());
+        String skin = DroolsEclipsePlugin.getDefault().getPreferenceStore().getString(IDroolsConstants.SKIN);
+        SkinProvider skinProvider = SkinManager.getInstance().getSkinProvider(skin);
+        categories.add(skinProvider.createComponentsDrawer());
         categories.add(createWorkNodesDrawer());
         return categories;
     }
-
-    private static PaletteContainer createComponentsDrawer() {
-
-        PaletteDrawer drawer = new PaletteDrawer("Components", null);
-
-        List<PaletteEntry> entries = new ArrayList<PaletteEntry>();
-
-        CombinedTemplateCreationEntry combined = new CombinedTemplateCreationEntry(
-            "Start",
-            "Create a new Start",
-            StartNodeWrapper.class,
-            new SimpleFactory(StartNodeWrapper.class),
-            ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/process_start.gif")),
-            ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/process_start.gif"))
-        );
-        entries.add(combined);
-        
-        combined = new CombinedTemplateCreationEntry(
-            "End",
-            "Create a new End",
-            EndNodeWrapper.class,
-            new SimpleFactory(EndNodeWrapper.class),
-            ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/process_stop.gif")), 
-            ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/process_stop.gif"))
-        );
-        entries.add(combined);
-                
-        combined = new CombinedTemplateCreationEntry(
-            "RuleFlowGroup",
-            "Create a new RuleFlowGroup",
-            RuleSetNodeWrapper.class,
-            new SimpleFactory(RuleSetNodeWrapper.class),
-            ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/activity.gif")), 
-            ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/activity.gif"))
-        );
-        entries.add(combined);
-            
-        combined = new CombinedTemplateCreationEntry(
-            "Split",
-            "Create a new Split",
-            SplitWrapper.class,
-            new SimpleFactory(SplitWrapper.class),
-            ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/split.gif")), 
-            ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/split.gif"))
-        );
-        entries.add(combined);
-                    
-        combined = new CombinedTemplateCreationEntry(
-            "Join",
-            "Create a new Join",
-            JoinWrapper.class,
-            new SimpleFactory(JoinWrapper.class),
-            ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/join.gif")), 
-            ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/join.gif"))
-        );
-        entries.add(combined);
-                        
-        combined = new CombinedTemplateCreationEntry(
-            "Event Wait",
-            "Create a new Event Wait",
-            MilestoneWrapper.class,
-            new SimpleFactory(MilestoneWrapper.class),
-            ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/question.gif")), 
-            ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/question.gif"))
-        );
-        entries.add(combined);
-                            
-        combined = new CombinedTemplateCreationEntry(
-            "SubFlow",
-            "Create a new SubFlow",
-            SubProcessWrapper.class,
-            new SimpleFactory(SubProcessWrapper.class),
-            ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/process.gif")), 
-            ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/process.gif"))
-        );
-        entries.add(combined);
-                                
-        combined = new CombinedTemplateCreationEntry(
-            "Action",
-            "Create a new Action",
-            ActionWrapper.class,
-            new SimpleFactory(ActionWrapper.class),
-            ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/action.gif")), 
-            ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/action.gif"))
-        );
-        entries.add(combined);
-                      
-        combined = new CombinedTemplateCreationEntry(
-            "Timer",
-            "Create a new Timer",
-            TimerWrapper.class,
-            new SimpleFactory(TimerWrapper.class),
-            ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/timer.gif")), 
-            ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/timer.gif"))
-        );
-        entries.add(combined);
-                      
-        combined = new CombinedTemplateCreationEntry(
-            "Fault",
-            "Create a new Fault",
-            FaultNodeWrapper.class,
-            new SimpleFactory(FaultNodeWrapper.class),
-            ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/fault.gif")), 
-            ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/fault.gif"))
-        );
-        entries.add(combined);
-                          
-        combined = new CombinedTemplateCreationEntry(
-		    "Event",
-		    "Create a new Event Node",
-		    EventNodeWrapper.class,
-		    new SimpleFactory(EventNodeWrapper.class),
-		    ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/event.gif")), 
-		    ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/event.gif"))
-		);
-		entries.add(combined);
-	                    
-        combined = new CombinedTemplateCreationEntry(
-            "Human Task",
-            "Create a new Human Task",
-            HumanTaskNodeWrapper.class,
-            new SimpleFactory(HumanTaskNodeWrapper.class),
-            ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/human_task.gif")), 
-            ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/human_task.gif"))
-        );
-        entries.add(combined);
-                              
-        combined = new CombinedTemplateCreationEntry(
-            "Composite",
-            "Create a new Composite Node",
-            CompositeContextNodeWrapper.class,
-            new SimpleFactory(CompositeContextNodeWrapper.class),
-            ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/composite.gif")), 
-            ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/composite.gif"))
-        );
-        entries.add(combined);
-                          
-	    combined = new CombinedTemplateCreationEntry(
-		    "For Each",
-		    "Create a new ForEach Node",
-		    ForEachNodeWrapper.class,
-		    new SimpleFactory(ForEachNodeWrapper.class),
-		    ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/composite.gif")), 
-		    ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/composite.gif"))
-		);
-		entries.add(combined);
-                    
-        drawer.addAll(entries);
-        return drawer;
-    }
     
     private static PaletteContainer createWorkNodesDrawer() {
 
@@ -277,23 +110,9 @@
         tool = new MarqueeToolEntry();
         entries.add(tool);
         
-        final ElementConnectionFactory normalConnectionFactory = new ConnectionWrapperFactory();
-
-        tool = new ConnectionCreationToolEntry(
-            "Connection Creation",
-            "Creating connections",
-            new CreationFactory() {
-                public Object getNewObject() {
-                	return normalConnectionFactory.createElementConnection();
-                }
-                public Object getObjectType() {
-                	return ConnectionWrapper.class;
-                }
-            },
-            ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/connection.gif")), 
-            ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/connection.gif"))
-        );
-        entries.add(tool);
+        String skin = DroolsEclipsePlugin.getDefault().getPreferenceStore().getString(IDroolsConstants.SKIN);
+        SkinProvider skinProvider = SkinManager.getInstance().getSkinProvider(skin);
+        entries.add(skinProvider.createConnectionEntry());
         
         controlGroup.addAll(entries);
         return controlGroup;

Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/ActionEditPart.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/ActionEditPart.java	2008-10-06 13:07:47 UTC (rev 23324)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/ActionEditPart.java	2008-10-06 13:09:45 UTC (rev 23325)
@@ -18,6 +18,9 @@
 import org.drools.eclipse.DroolsEclipsePlugin;
 import org.drools.eclipse.flow.common.editor.editpart.ElementEditPart;
 import org.drools.eclipse.flow.common.editor.editpart.figure.AbstractElementFigure;
+import org.drools.eclipse.flow.ruleflow.skin.SkinManager;
+import org.drools.eclipse.flow.ruleflow.skin.SkinProvider;
+import org.drools.eclipse.preferences.IDroolsConstants;
 import org.eclipse.draw2d.IFigure;
 import org.eclipse.draw2d.RoundedRectangle;
 import org.eclipse.draw2d.geometry.Dimension;
@@ -34,24 +37,28 @@
  */
 public class ActionEditPart extends ElementEditPart {
 
+	private String SKIN =
+		DroolsEclipsePlugin.getDefault().getPreferenceStore().getString(IDroolsConstants.SKIN);
+	
     private static final Color color = new Color(Display.getCurrent(), 255, 250, 205);
     
     protected IFigure createFigure() {
-        return new RuleSetNodeFigure();
+    	SkinProvider skinProvider = SkinManager.getInstance().getSkinProvider(SKIN);
+    	return skinProvider.createActionNodeFigure();
     }
     
-    public static class RuleSetNodeFigure extends AbstractElementFigure {
+    public static class ActionNodeFigure extends AbstractElementFigure {
         
         private static final Image ICON = ImageDescriptor.createFromURL(
     		DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/action.gif")).createImage();
-            
+        
         private RoundedRectangle rectangle;
         
         protected void customizeFigure() {
             rectangle = new RoundedRectangle();
             rectangle.setCornerDimensions(new Dimension(25, 25));
             add(rectangle, 0);
-            rectangle.setBackgroundColor(color);
+        	rectangle.setBackgroundColor(color);
             rectangle.setBounds(getBounds());
             setSelected(false);
             setIcon(ICON);
@@ -68,4 +75,5 @@
             repaint();
         }
     }
+    
 }

Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/CompositeNodeEditPart.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/CompositeNodeEditPart.java	2008-10-06 13:07:47 UTC (rev 23324)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/CompositeNodeEditPart.java	2008-10-06 13:09:45 UTC (rev 23325)
@@ -1,59 +1,70 @@
 package org.drools.eclipse.flow.ruleflow.editor.editpart;
 
-import java.util.ArrayList;
-import java.util.List;
-
+import org.drools.eclipse.DroolsEclipsePlugin;
 import org.drools.eclipse.flow.common.editor.editpart.ElementContainerEditPart;
 import org.drools.eclipse.flow.common.editor.editpart.figure.ElementContainerFigure;
-import org.eclipse.draw2d.ConnectionAnchor;
+import org.drools.eclipse.flow.ruleflow.skin.SkinManager;
+import org.drools.eclipse.flow.ruleflow.skin.SkinProvider;
+import org.drools.eclipse.preferences.IDroolsConstants;
 import org.eclipse.draw2d.IFigure;
-import org.eclipse.draw2d.geometry.Point;
-import org.eclipse.gef.Request;
-import org.eclipse.gef.requests.DropRequest;
+import org.eclipse.draw2d.LineBorder;
 
 public class CompositeNodeEditPart extends ElementContainerEditPart {
 	
+	private String SKIN =
+		DroolsEclipsePlugin.getDefault().getPreferenceStore().getString(IDroolsConstants.SKIN);
+	
     protected IFigure createFigure() {
-        return new CompositeNodeFigure();
+    	SkinProvider skinProvider = SkinManager.getInstance().getSkinProvider(SKIN);
+    	return skinProvider.createCompositeNodeFigure();
     }
     
-    public ConnectionAnchor getSourceConnectionAnchor(Request request) {
-    	Point p = ((DropRequest) request).getLocation();
-    	return ((CompositeNodeFigure) getFigure()).getOutgoingConnectionAnchorAt(p);
-    }
+//    public ConnectionAnchor getSourceConnectionAnchor(Request request) {
+//    	Point p = ((DropRequest) request).getLocation();
+//    	return ((CompositeNodeFigure) getFigure()).getOutgoingConnectionAnchorAt(p);
+//    }
     
     public static class CompositeNodeFigure extends ElementContainerFigure {
     	
-        private List<ConnectionAnchor> outgoingConnectionAnchors = new ArrayList<ConnectionAnchor>();
+//        private List<ConnectionAnchor> outgoingConnectionAnchors = new ArrayList<ConnectionAnchor>();
 
-        public ConnectionAnchor getOutgoingConnectionAnchorAt(Point p) {
-        	ConnectionAnchor closest = null;
-        	long min = Long.MAX_VALUE;
-        	for (ConnectionAnchor c: outgoingConnectionAnchors) {
-        		Point p2 = c.getLocation(null);
-        		long d = p.getDistance2(p2);
-        		if (d < min) {
-        			min = d;
-        			closest = c;
-        		}
-        	}
-        	return closest;
+        public CompositeNodeFigure() {
+            setBorder(new LineBorder(1));
         }
         
-        public void layoutConnectionAnchors() {
+        public void setSelected(boolean b) {
+        	super.setSelected(b);
+            ((LineBorder) getBorder()).setWidth(b ? 3 : 1);
+        }
+
+//        public ConnectionAnchor getOutgoingConnectionAnchorAt(Point p) {
+//        	ConnectionAnchor closest = null;
+//        	long min = Long.MAX_VALUE;
+//        	for (ConnectionAnchor c: outgoingConnectionAnchors) {
+//        		Point p2 = c.getLocation(null);
+//        		long d = p.getDistance2(p2);
+//        		if (d < min) {
+//        			min = d;
+//        			closest = c;
+//        		}
+//        	}
+//        	return closest;
+//        }
+        
+//        public void layoutConnectionAnchors() {
 //        	FixedConnectionAnchor c = (FixedConnectionAnchor) outgoingConnectionAnchors.get(0);
 //        	c.setOffsetV(getBounds().height);
 //        	c.setOffsetH(0);
 //        	c = (FixedConnectionAnchor) outgoingConnectionAnchors.get(1);
 //        	c.setOffsetV(getBounds().height);
 //        	c.setOffsetH(getBounds().width);
-        }
+//        }
         
-        public void validate() {
-        	if(isValid()) return;
-        	layoutConnectionAnchors();
-        	super.validate();
-        }
+//        public void validate() {
+//        	if(isValid()) return;
+//        	layoutConnectionAnchors();
+//        	super.validate();
+//        }
         
     }
         

Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/EndNodeEditPart.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/EndNodeEditPart.java	2008-10-06 13:07:47 UTC (rev 23324)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/EndNodeEditPart.java	2008-10-06 13:09:45 UTC (rev 23325)
@@ -18,6 +18,9 @@
 import org.drools.eclipse.DroolsEclipsePlugin;
 import org.drools.eclipse.flow.common.editor.editpart.ElementEditPart;
 import org.drools.eclipse.flow.common.editor.editpart.figure.AbstractElementFigure;
+import org.drools.eclipse.flow.ruleflow.skin.SkinManager;
+import org.drools.eclipse.flow.ruleflow.skin.SkinProvider;
+import org.drools.eclipse.preferences.IDroolsConstants;
 import org.eclipse.draw2d.IFigure;
 import org.eclipse.draw2d.LineBorder;
 import org.eclipse.jface.resource.ImageDescriptor;
@@ -30,8 +33,12 @@
  */
 public class EndNodeEditPart extends ElementEditPart {
 
+	private String SKIN =
+		DroolsEclipsePlugin.getDefault().getPreferenceStore().getString(IDroolsConstants.SKIN);
+	
     protected IFigure createFigure() {
-        return new EndNodeFigure();
+    	SkinProvider skinProvider = SkinManager.getInstance().getSkinProvider(SKIN);
+    	return skinProvider.createEndNodeFigure();
     }
 
     public static class EndNodeFigure extends AbstractElementFigure {
@@ -50,4 +57,5 @@
             repaint();
         }
     }
+
 }

Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/EventNodeEditPart.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/EventNodeEditPart.java	2008-10-06 13:07:47 UTC (rev 23324)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/EventNodeEditPart.java	2008-10-06 13:09:45 UTC (rev 23325)
@@ -18,6 +18,9 @@
 import org.drools.eclipse.DroolsEclipsePlugin;
 import org.drools.eclipse.flow.common.editor.editpart.ElementEditPart;
 import org.drools.eclipse.flow.common.editor.editpart.figure.AbstractElementFigure;
+import org.drools.eclipse.flow.ruleflow.skin.SkinManager;
+import org.drools.eclipse.flow.ruleflow.skin.SkinProvider;
+import org.drools.eclipse.preferences.IDroolsConstants;
 import org.eclipse.draw2d.IFigure;
 import org.eclipse.draw2d.LineBorder;
 import org.eclipse.jface.resource.ImageDescriptor;
@@ -30,8 +33,12 @@
  */
 public class EventNodeEditPart extends ElementEditPart {
 
+	private String SKIN =
+		DroolsEclipsePlugin.getDefault().getPreferenceStore().getString(IDroolsConstants.SKIN);
+	
     protected IFigure createFigure() {
-        return new EventNodeFigure();
+    	SkinProvider skinProvider = SkinManager.getInstance().getSkinProvider(SKIN);
+    	return skinProvider.createEventNodeFigure();
     }
 
     public static class EventNodeFigure extends AbstractElementFigure {
@@ -50,4 +57,5 @@
             repaint();
         }
     }
+    
 }

Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/FaultNodeEditPart.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/FaultNodeEditPart.java	2008-10-06 13:07:47 UTC (rev 23324)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/FaultNodeEditPart.java	2008-10-06 13:09:45 UTC (rev 23325)
@@ -18,6 +18,9 @@
 import org.drools.eclipse.DroolsEclipsePlugin;
 import org.drools.eclipse.flow.common.editor.editpart.ElementEditPart;
 import org.drools.eclipse.flow.common.editor.editpart.figure.AbstractElementFigure;
+import org.drools.eclipse.flow.ruleflow.skin.SkinManager;
+import org.drools.eclipse.flow.ruleflow.skin.SkinProvider;
+import org.drools.eclipse.preferences.IDroolsConstants;
 import org.eclipse.draw2d.IFigure;
 import org.eclipse.draw2d.RoundedRectangle;
 import org.eclipse.draw2d.geometry.Dimension;
@@ -34,10 +37,14 @@
  */
 public class FaultNodeEditPart extends ElementEditPart {
 
-    private static final Color color = new Color(Display.getCurrent(), 255, 250, 205);
+	private String SKIN =
+		DroolsEclipsePlugin.getDefault().getPreferenceStore().getString(IDroolsConstants.SKIN);
+
+	private static final Color color = new Color(Display.getCurrent(), 255, 250, 205);
     
     protected IFigure createFigure() {
-        return new FaultNodeFigure();
+    	SkinProvider skinProvider = SkinManager.getInstance().getSkinProvider(SKIN);
+    	return skinProvider.createFaultNodeFigure();
     }
     
     public static class FaultNodeFigure extends AbstractElementFigure {
@@ -68,4 +75,5 @@
             repaint();
         }
     }
+
 }

Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/ForEachNodeEditPart.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/ForEachNodeEditPart.java	2008-10-06 13:07:47 UTC (rev 23324)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/ForEachNodeEditPart.java	2008-10-06 13:09:45 UTC (rev 23325)
@@ -16,12 +16,6 @@
  */
 
 import org.drools.eclipse.flow.common.editor.editpart.ElementContainerEditPart;
-import org.drools.eclipse.flow.common.editor.editpart.figure.FixedConnectionAnchor;
-import org.eclipse.draw2d.ConnectionAnchor;
-import org.eclipse.draw2d.geometry.Point;
-import org.eclipse.draw2d.geometry.Rectangle;
-import org.eclipse.gef.Request;
-import org.eclipse.gef.requests.DropRequest;
 
 /**
  * EditPart for a ForEach node.

Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/JoinEditPart.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/JoinEditPart.java	2008-10-06 13:07:47 UTC (rev 23324)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/JoinEditPart.java	2008-10-06 13:09:45 UTC (rev 23325)
@@ -15,8 +15,14 @@
  * limitations under the License.
  */
 
+import org.drools.eclipse.DroolsEclipsePlugin;
+import org.drools.eclipse.flow.common.editor.core.ModelEvent;
 import org.drools.eclipse.flow.common.editor.editpart.ElementEditPart;
 import org.drools.eclipse.flow.common.editor.editpart.figure.AbstractElementFigure;
+import org.drools.eclipse.flow.ruleflow.core.JoinWrapper;
+import org.drools.eclipse.flow.ruleflow.skin.SkinManager;
+import org.drools.eclipse.flow.ruleflow.skin.SkinProvider;
+import org.drools.eclipse.preferences.IDroolsConstants;
 import org.eclipse.draw2d.ConnectionAnchor;
 import org.eclipse.draw2d.Ellipse;
 import org.eclipse.draw2d.EllipseAnchor;
@@ -34,12 +40,30 @@
  */
 public class JoinEditPart extends ElementEditPart {
 
+	private String SKIN =
+		DroolsEclipsePlugin.getDefault().getPreferenceStore().getString(IDroolsConstants.SKIN);
+	
     private static final Color color = new Color(Display.getCurrent(), 70, 130, 180);
     
     protected IFigure createFigure() {
-        return new JoinFigure();
+    	SkinProvider skinProvider = SkinManager.getInstance().getSkinProvider(SKIN);
+    	return skinProvider.createJoinFigure();
     }
 
+    public void modelChanged(ModelEvent event) {
+        if (event.getChange() == JoinWrapper.CHANGE_TYPE) {
+            refreshVisuals();
+        } else {
+        	super.modelChanged(event);
+        }
+    }
+    
+    protected void refreshVisuals() {
+    	super.refreshVisuals();
+    	int type = ((JoinWrapper) getModel()).getJoin().getType();
+		((JoinFigureInterface) getFigure()).setType(type);
+    }
+    
     public ConnectionAnchor getSourceConnectionAnchor(ConnectionEditPart connection) {
         return new EllipseAnchor(getFigure());
     }
@@ -55,8 +79,12 @@
     public ConnectionAnchor getTargetConnectionAnchor(Request request) {
         return new EllipseAnchor(getFigure());
     }
+    
+    public static interface JoinFigureInterface extends IFigure {
+    	void setType(int type);
+    }
 
-    public class JoinFigure extends AbstractElementFigure {
+    public static class JoinFigure extends AbstractElementFigure implements JoinFigureInterface {
         
         private Ellipse ellipse;
         
@@ -77,5 +105,11 @@
             ellipse.setLineWidth(b ? 3 : 1);
             repaint();
         }
+
+		public void setType(int type) {
+			// Do nothing
+		}
+
     }
+
 }

Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/MilestoneEditPart.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/MilestoneEditPart.java	2008-10-06 13:07:47 UTC (rev 23324)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/MilestoneEditPart.java	2008-10-06 13:09:45 UTC (rev 23325)
@@ -18,6 +18,9 @@
 import org.drools.eclipse.DroolsEclipsePlugin;
 import org.drools.eclipse.flow.common.editor.editpart.ElementEditPart;
 import org.drools.eclipse.flow.common.editor.editpart.figure.AbstractElementFigure;
+import org.drools.eclipse.flow.ruleflow.skin.SkinManager;
+import org.drools.eclipse.flow.ruleflow.skin.SkinProvider;
+import org.drools.eclipse.preferences.IDroolsConstants;
 import org.eclipse.draw2d.IFigure;
 import org.eclipse.draw2d.RoundedRectangle;
 import org.eclipse.draw2d.geometry.Dimension;
@@ -34,13 +37,17 @@
  */
 public class MilestoneEditPart extends ElementEditPart {
 
-    private static final Color color = new Color(Display.getCurrent(), 255, 250, 205);
+	private String SKIN =
+		DroolsEclipsePlugin.getDefault().getPreferenceStore().getString(IDroolsConstants.SKIN);
+
+	private static final Color color = new Color(Display.getCurrent(), 255, 250, 205);
     
     protected IFigure createFigure() {
-        return new RuleSetNodeFigure();
+    	SkinProvider skinProvider = SkinManager.getInstance().getSkinProvider(SKIN);
+    	return skinProvider.createMilestoneFigure();
     }
     
-    public static class RuleSetNodeFigure extends AbstractElementFigure {
+    public static class MilestoneFigure extends AbstractElementFigure {
         
         private static final Image ICON = ImageDescriptor.createFromURL(
     		DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/question.gif")).createImage();

Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/RuleSetNodeEditPart.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/RuleSetNodeEditPart.java	2008-10-06 13:07:47 UTC (rev 23324)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/RuleSetNodeEditPart.java	2008-10-06 13:09:45 UTC (rev 23325)
@@ -15,8 +15,12 @@
  * limitations under the License.
  */
 
+import org.drools.eclipse.DroolsEclipsePlugin;
 import org.drools.eclipse.flow.common.editor.editpart.ElementEditPart;
 import org.drools.eclipse.flow.common.editor.editpart.figure.AbstractElementFigure;
+import org.drools.eclipse.flow.ruleflow.skin.SkinManager;
+import org.drools.eclipse.flow.ruleflow.skin.SkinProvider;
+import org.drools.eclipse.preferences.IDroolsConstants;
 import org.eclipse.draw2d.IFigure;
 import org.eclipse.draw2d.RoundedRectangle;
 import org.eclipse.draw2d.geometry.Dimension;
@@ -31,13 +35,17 @@
  */
 public class RuleSetNodeEditPart extends ElementEditPart {
 
+	private String SKIN =
+		DroolsEclipsePlugin.getDefault().getPreferenceStore().getString(IDroolsConstants.SKIN);
+	
     private static final Color color = new Color(Display.getCurrent(), 255, 250, 205);
     
     protected IFigure createFigure() {
-        return new RuleSetNodeFigure();
+    	SkinProvider skinProvider = SkinManager.getInstance().getSkinProvider(SKIN);
+    	return skinProvider.createRuleSetNodeFigure();
     }
     
-    public class RuleSetNodeFigure extends AbstractElementFigure {
+    public static class RuleSetNodeFigure extends AbstractElementFigure {
         
         private RoundedRectangle rectangle;
         

Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/SplitEditPart.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/SplitEditPart.java	2008-10-06 13:07:47 UTC (rev 23324)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/SplitEditPart.java	2008-10-06 13:09:45 UTC (rev 23325)
@@ -15,8 +15,14 @@
  * limitations under the License.
  */
 
+import org.drools.eclipse.DroolsEclipsePlugin;
+import org.drools.eclipse.flow.common.editor.core.ModelEvent;
 import org.drools.eclipse.flow.common.editor.editpart.ElementEditPart;
 import org.drools.eclipse.flow.common.editor.editpart.figure.AbstractElementFigure;
+import org.drools.eclipse.flow.ruleflow.core.SplitWrapper;
+import org.drools.eclipse.flow.ruleflow.skin.SkinManager;
+import org.drools.eclipse.flow.ruleflow.skin.SkinProvider;
+import org.drools.eclipse.preferences.IDroolsConstants;
 import org.eclipse.draw2d.ConnectionAnchor;
 import org.eclipse.draw2d.Ellipse;
 import org.eclipse.draw2d.EllipseAnchor;
@@ -34,12 +40,28 @@
  */
 public class SplitEditPart extends ElementEditPart {
 
-    private static final Color color = new Color(Display.getCurrent(), 70, 130, 180);
-    
+	private String SKIN =
+		DroolsEclipsePlugin.getDefault().getPreferenceStore().getString(IDroolsConstants.SKIN);
+	
     protected IFigure createFigure() {
-        return new SplitFigure();
+    	SkinProvider skinProvider = SkinManager.getInstance().getSkinProvider(SKIN);
+    	return skinProvider.createSplitFigure();
     }
 
+    public void modelChanged(ModelEvent event) {
+        if (event.getChange() == SplitWrapper.CHANGE_TYPE) {
+            refreshVisuals();
+        } else {
+        	super.modelChanged(event);
+        }
+    }
+    
+    protected void refreshVisuals() {
+    	super.refreshVisuals();
+    	int type = ((SplitWrapper) getModel()).getSplit().getType();
+		((SplitFigureInterface) getFigure()).setType(type);
+    }
+    
     public ConnectionAnchor getSourceConnectionAnchor(ConnectionEditPart connection) {
         return new EllipseAnchor(getFigure());
     }
@@ -55,9 +77,15 @@
     public ConnectionAnchor getTargetConnectionAnchor(Request request) {
         return new EllipseAnchor(getFigure());
     }
+    
+    public static interface SplitFigureInterface extends IFigure {
+    	void setType(int type);
+    }
 
-    public class SplitFigure extends AbstractElementFigure {
+    public static class SplitFigure extends AbstractElementFigure implements SplitFigureInterface {
         
+        private static final Color color = new Color(Display.getCurrent(), 70, 130, 180);
+        
         private Ellipse ellipse;
         
         protected void customizeFigure() {
@@ -77,5 +105,10 @@
             ellipse.setLineWidth(b ? 3 : 1);
             repaint();
         }
+
+		public void setType(int type) {
+			// Do nothing
+		}
     }
+
 }

Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/StartNodeEditPart.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/StartNodeEditPart.java	2008-10-06 13:07:47 UTC (rev 23324)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/StartNodeEditPart.java	2008-10-06 13:09:45 UTC (rev 23325)
@@ -18,6 +18,9 @@
 import org.drools.eclipse.DroolsEclipsePlugin;
 import org.drools.eclipse.flow.common.editor.editpart.ElementEditPart;
 import org.drools.eclipse.flow.common.editor.editpart.figure.AbstractElementFigure;
+import org.drools.eclipse.flow.ruleflow.skin.SkinManager;
+import org.drools.eclipse.flow.ruleflow.skin.SkinProvider;
+import org.drools.eclipse.preferences.IDroolsConstants;
 import org.eclipse.draw2d.IFigure;
 import org.eclipse.draw2d.LineBorder;
 import org.eclipse.jface.resource.ImageDescriptor;
@@ -30,18 +33,22 @@
  */
 public class StartNodeEditPart extends ElementEditPart {
 
+	private String SKIN =
+		DroolsEclipsePlugin.getDefault().getPreferenceStore().getString(IDroolsConstants.SKIN);
+	
     protected IFigure createFigure() {
-        return new StartNodeFigure();
+    	SkinProvider skinProvider = SkinManager.getInstance().getSkinProvider(SKIN);
+    	return skinProvider.createStartNodeFigure();
     }
 
     public static class StartNodeFigure extends AbstractElementFigure {
         
         private static final Image icon = ImageDescriptor.createFromURL(
-    		DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/process_start.gif")).createImage();
+			DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/process_start.gif")).createImage();;
         
         protected void customizeFigure() {
             setIcon(icon);
-            setBorder(new LineBorder(1));
+        	setBorder(new LineBorder(1));
         }
         
         public void setSelected(boolean b) {
@@ -50,4 +57,5 @@
             repaint();
         }
     }
+    
 }

Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/SubFlowEditPart.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/SubFlowEditPart.java	2008-10-06 13:07:47 UTC (rev 23324)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/SubFlowEditPart.java	2008-10-06 13:09:45 UTC (rev 23325)
@@ -18,6 +18,9 @@
 import org.drools.eclipse.DroolsEclipsePlugin;
 import org.drools.eclipse.flow.common.editor.editpart.ElementEditPart;
 import org.drools.eclipse.flow.common.editor.editpart.figure.AbstractElementFigure;
+import org.drools.eclipse.flow.ruleflow.skin.SkinManager;
+import org.drools.eclipse.flow.ruleflow.skin.SkinProvider;
+import org.drools.eclipse.preferences.IDroolsConstants;
 import org.eclipse.draw2d.IFigure;
 import org.eclipse.draw2d.RoundedRectangle;
 import org.eclipse.draw2d.geometry.Dimension;
@@ -34,10 +37,14 @@
  */
 public class SubFlowEditPart extends ElementEditPart {
 
+	private String SKIN =
+		DroolsEclipsePlugin.getDefault().getPreferenceStore().getString(IDroolsConstants.SKIN);
+	
     private static final Color color = new Color(Display.getCurrent(), 255, 250, 205);
     
     protected IFigure createFigure() {
-        return new SubFlowNodeFigure();
+    	SkinProvider skinProvider = SkinManager.getInstance().getSkinProvider(SKIN);
+    	return skinProvider.createSubFlowFigure();
     }
     
     public static class SubFlowNodeFigure extends AbstractElementFigure {

Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/TimerEditPart.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/TimerEditPart.java	2008-10-06 13:07:47 UTC (rev 23324)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/TimerEditPart.java	2008-10-06 13:09:45 UTC (rev 23325)
@@ -18,6 +18,9 @@
 import org.drools.eclipse.DroolsEclipsePlugin;
 import org.drools.eclipse.flow.common.editor.editpart.ElementEditPart;
 import org.drools.eclipse.flow.common.editor.editpart.figure.AbstractElementFigure;
+import org.drools.eclipse.flow.ruleflow.skin.SkinManager;
+import org.drools.eclipse.flow.ruleflow.skin.SkinProvider;
+import org.drools.eclipse.preferences.IDroolsConstants;
 import org.eclipse.draw2d.IFigure;
 import org.eclipse.draw2d.RoundedRectangle;
 import org.eclipse.draw2d.geometry.Dimension;
@@ -34,14 +37,18 @@
  */
 public class TimerEditPart extends ElementEditPart {
 
-    private static final Color color = new Color(Display.getCurrent(), 255, 250, 205);
-    
-    protected IFigure createFigure() {
-        return new TimerNodeFigure();
+	private String SKIN =
+		DroolsEclipsePlugin.getDefault().getPreferenceStore().getString(IDroolsConstants.SKIN);
+
+	protected IFigure createFigure() {
+    	SkinProvider skinProvider = SkinManager.getInstance().getSkinProvider(SKIN);
+    	return skinProvider.createTimerNodeFigure();
     }
     
     public static class TimerNodeFigure extends AbstractElementFigure {
         
+        private static final Color color = new Color(Display.getCurrent(), 255, 250, 205);
+        
         private static final Image ICON = ImageDescriptor.createFromURL(
     		DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/timer.gif")).createImage();
             
@@ -68,4 +75,5 @@
             repaint();
         }
     }
+
 }

Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/WorkItemEditPart.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/WorkItemEditPart.java	2008-10-06 13:07:47 UTC (rev 23324)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/WorkItemEditPart.java	2008-10-06 13:09:45 UTC (rev 23325)
@@ -23,8 +23,10 @@
 import org.drools.eclipse.DroolsPluginImages;
 import org.drools.eclipse.flow.common.editor.editpart.ElementEditPart;
 import org.drools.eclipse.flow.common.editor.editpart.figure.AbstractElementFigure;
-import org.drools.eclipse.flow.common.editor.editpart.figure.FixedConnectionAnchor;
 import org.drools.eclipse.flow.ruleflow.core.WorkItemWrapper;
+import org.drools.eclipse.flow.ruleflow.skin.SkinManager;
+import org.drools.eclipse.flow.ruleflow.skin.SkinProvider;
+import org.drools.eclipse.preferences.IDroolsConstants;
 import org.drools.eclipse.util.ProjectClassLoader;
 import org.drools.process.core.WorkDefinition;
 import org.drools.process.core.WorkDefinitionExtension;
@@ -53,9 +55,14 @@
  */
 public class WorkItemEditPart extends ElementEditPart {
 
-    private static final Color color = new Color(Display.getCurrent(), 255, 250, 205);
+	private String SKIN =
+		DroolsEclipsePlugin.getDefault().getPreferenceStore().getString(IDroolsConstants.SKIN);
 
+	private static final Color color = new Color(Display.getCurrent(), 255, 250, 205);
+
     protected IFigure createFigure() {
+    	SkinProvider skinProvider = SkinManager.getInstance().getSkinProvider(SKIN);
+    	WorkItemFigureInterface figure = skinProvider.createWorkItemFigure();
         String icon = null;
         WorkDefinition workDefinition = getWorkDefinition();
         if (workDefinition instanceof WorkDefinitionExtension) {
@@ -65,7 +72,6 @@
             icon = "icons/action.gif";
         }
         Image image = DroolsPluginImages.getImage(icon);
-        WorkItemFigure figure = new WorkItemFigure();
         if (image == null) {
             IJavaProject javaProject = getProject();
             if (javaProject != null) {
@@ -114,7 +120,8 @@
         }
     }
     
-    private void openEditor(String editorClassName, WorkDefinition workDefinition) {
+    @SuppressWarnings("unchecked")
+	private void openEditor(String editorClassName, WorkDefinition workDefinition) {
         IJavaProject javaProject = getProject();
         if (javaProject != null) {
             try {
@@ -139,7 +146,11 @@
         }
     }
     
-    public static class WorkItemFigure extends AbstractElementFigure {
+    public static interface WorkItemFigureInterface extends IFigure {
+    	void setIcon(Image icon);
+    }
+    
+    public static class WorkItemFigure extends AbstractElementFigure implements WorkItemFigureInterface {
         
         private RoundedRectangle rectangle;
         private ConnectionAnchor defaultConnectionAnchor;

Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/figure/bpmn/BPMNActionNodeFigure.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/figure/bpmn/BPMNActionNodeFigure.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/figure/bpmn/BPMNActionNodeFigure.java	2008-10-06 13:09:45 UTC (rev 23325)
@@ -0,0 +1,41 @@
+package org.drools.eclipse.flow.ruleflow.editor.editpart.figure.bpmn;
+
+import org.drools.eclipse.DroolsEclipsePlugin;
+import org.drools.eclipse.flow.common.editor.editpart.figure.AbstractElementFigure;
+import org.eclipse.draw2d.RoundedRectangle;
+import org.eclipse.draw2d.geometry.Dimension;
+import org.eclipse.draw2d.geometry.Rectangle;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.swt.graphics.Image;
+
+public class BPMNActionNodeFigure extends AbstractElementFigure {
+    
+    private static final Image ICON = ImageDescriptor.createFromURL(
+		DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/action.gif")).createImage();
+        
+    private RoundedRectangle rectangle;
+    
+    public BPMNActionNodeFigure() {
+    	setSize(80, 48);
+    }
+    
+    protected void customizeFigure() {
+        rectangle = new RoundedRectangle();
+        rectangle.setCornerDimensions(new Dimension(25, 25));
+        add(rectangle, 0);
+        rectangle.setBounds(getBounds());
+        setSelected(false);
+        setIcon(ICON);
+    }
+    
+    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();
+    }
+}

Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/figure/bpmn/BPMNCompositeNodeFigure.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/figure/bpmn/BPMNCompositeNodeFigure.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/figure/bpmn/BPMNCompositeNodeFigure.java	2008-10-06 13:09:45 UTC (rev 23325)
@@ -0,0 +1,17 @@
+package org.drools.eclipse.flow.ruleflow.editor.editpart.figure.bpmn;
+
+import org.drools.eclipse.flow.common.editor.editpart.figure.ElementContainerFigure;
+import org.eclipse.draw2d.LineBorder;
+
+public class BPMNCompositeNodeFigure extends ElementContainerFigure {
+	
+    public BPMNCompositeNodeFigure() {
+        setBorder(new LineBorder(1));
+    }
+    
+    public void setSelected(boolean b) {
+    	super.setSelected(b);
+        ((LineBorder) getBorder()).setWidth(b ? 3 : 1);
+    }
+    
+}
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/figure/bpmn/BPMNEndNodeFigure.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/figure/bpmn/BPMNEndNodeFigure.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/figure/bpmn/BPMNEndNodeFigure.java	2008-10-06 13:09:45 UTC (rev 23325)
@@ -0,0 +1,37 @@
+package org.drools.eclipse.flow.ruleflow.editor.editpart.figure.bpmn;
+
+import org.drools.eclipse.DroolsEclipsePlugin;
+import org.drools.eclipse.flow.common.editor.editpart.figure.AbstractElementFigure;
+import org.eclipse.draw2d.LineBorder;
+import org.eclipse.draw2d.geometry.Rectangle;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.swt.graphics.Image;
+
+public class BPMNEndNodeFigure extends AbstractElementFigure {
+    
+    private static final Image icon = ImageDescriptor.createFromURL(
+    	DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/bpmn/large/end_terminate.png")).createImage();
+        
+    public BPMNEndNodeFigure() {
+    	setSize(48, 48);
+    }
+    
+    public void setText(String text) {
+    }
+    
+    public void setBounds(Rectangle r) {
+    	r.setSize(48, 48);
+    	super.setBounds(r);
+    }
+    
+    protected void customizeFigure() {
+        setIcon(icon);
+    }
+    
+    public void setSelected(boolean b) {
+        super.setSelected(b);
+        ((LineBorder) getBorder()).setWidth(b ? 3 : 0);
+        repaint();
+    }
+    
+}

Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/figure/bpmn/BPMNEventNodeFigure.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/figure/bpmn/BPMNEventNodeFigure.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/figure/bpmn/BPMNEventNodeFigure.java	2008-10-06 13:09:45 UTC (rev 23325)
@@ -0,0 +1,30 @@
+package org.drools.eclipse.flow.ruleflow.editor.editpart.figure.bpmn;
+
+import org.drools.eclipse.DroolsEclipsePlugin;
+import org.drools.eclipse.flow.common.editor.editpart.figure.AbstractElementFigure;
+import org.eclipse.draw2d.geometry.Rectangle;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.swt.graphics.Image;
+
+public class BPMNEventNodeFigure  extends AbstractElementFigure {
+    
+    private static final Image icon = ImageDescriptor.createFromURL(
+		DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/bpmn/large/intermediate_message.png")).createImage();
+
+    public BPMNEventNodeFigure() {
+    	setSize(48, 48);
+    }
+    
+    public void setBounds(Rectangle r) {
+    	r.setSize(48, 48);
+    	super.setBounds(r);
+    }
+    
+    protected void customizeFigure() {
+        setIcon(icon);
+    }
+    
+    public void setText(String text) {
+    }
+    
+}

Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/figure/bpmn/BPMNFaultNodeFigure.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/figure/bpmn/BPMNFaultNodeFigure.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/figure/bpmn/BPMNFaultNodeFigure.java	2008-10-06 13:09:45 UTC (rev 23325)
@@ -0,0 +1,37 @@
+package org.drools.eclipse.flow.ruleflow.editor.editpart.figure.bpmn;
+
+import org.drools.eclipse.DroolsEclipsePlugin;
+import org.drools.eclipse.flow.common.editor.editpart.figure.AbstractElementFigure;
+import org.eclipse.draw2d.LineBorder;
+import org.eclipse.draw2d.geometry.Rectangle;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.swt.graphics.Image;
+
+public class BPMNFaultNodeFigure extends AbstractElementFigure {
+    
+    private static final Image icon = ImageDescriptor.createFromURL(
+    	DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/bpmn/large/intermediate_error_10.png")).createImage();
+        
+    public BPMNFaultNodeFigure() {
+    	setSize(48, 48);
+    }
+    
+    public void setText(String text) {
+    }
+    
+    public void setBounds(Rectangle r) {
+    	r.setSize(48, 48);
+    	super.setBounds(r);
+    }
+    
+    protected void customizeFigure() {
+        setIcon(icon);
+    }
+    
+    public void setSelected(boolean b) {
+        super.setSelected(b);
+        ((LineBorder) getBorder()).setWidth(b ? 3 : 0);
+        repaint();
+    }
+    
+}

Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/figure/bpmn/BPMNJoinFigure.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/figure/bpmn/BPMNJoinFigure.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/figure/bpmn/BPMNJoinFigure.java	2008-10-06 13:09:45 UTC (rev 23325)
@@ -0,0 +1,46 @@
+package org.drools.eclipse.flow.ruleflow.editor.editpart.figure.bpmn;
+
+import org.drools.eclipse.DroolsEclipsePlugin;
+import org.drools.eclipse.flow.common.editor.editpart.figure.AbstractElementFigure;
+import org.drools.eclipse.flow.ruleflow.editor.editpart.JoinEditPart.JoinFigureInterface;
+import org.drools.workflow.core.node.Join;
+import org.eclipse.draw2d.geometry.Rectangle;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.swt.graphics.Image;
+
+public class BPMNJoinFigure extends AbstractElementFigure implements JoinFigureInterface {
+    
+    private static final Image ICON_COMPLEX = ImageDescriptor.createFromURL(
+		DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/bpmn/large/gateway_complex.png")).createImage();
+    private static final Image ICON_AND = ImageDescriptor.createFromURL(
+		DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/bpmn/large/gateway_parallel.png")).createImage();
+    private static final Image ICON_XOR = ImageDescriptor.createFromURL(
+		DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/bpmn/large/gateway_databased_exclusive.png")).createImage();
+                
+	public BPMNJoinFigure() {
+		super.setSize(48, 48);
+	}
+	
+    public void setText(String text) {
+    }
+    
+    public void setBounds(Rectangle r) {
+    	r.setSize(48, 48);
+    	super.setBounds(r);
+    }
+    
+    public void setType(int type) {
+    	if (type == Join.TYPE_AND) {
+    		setIcon(ICON_AND);
+    	} else if (type == Join.TYPE_XOR) {
+    		setIcon(ICON_XOR);
+    	} else {
+    		setIcon(ICON_COMPLEX);
+    	}
+    }
+    
+    protected void customizeFigure() {
+        setIcon(ICON_COMPLEX);
+    }
+    
+}

Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/figure/bpmn/BPMNMilestoneFigure.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/figure/bpmn/BPMNMilestoneFigure.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/figure/bpmn/BPMNMilestoneFigure.java	2008-10-06 13:09:45 UTC (rev 23325)
@@ -0,0 +1,41 @@
+package org.drools.eclipse.flow.ruleflow.editor.editpart.figure.bpmn;
+
+import org.drools.eclipse.DroolsEclipsePlugin;
+import org.drools.eclipse.flow.common.editor.editpart.figure.AbstractElementFigure;
+import org.eclipse.draw2d.RoundedRectangle;
+import org.eclipse.draw2d.geometry.Dimension;
+import org.eclipse.draw2d.geometry.Rectangle;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.swt.graphics.Image;
+
+public class BPMNMilestoneFigure extends AbstractElementFigure {
+    
+    private static final Image ICON = ImageDescriptor.createFromURL(
+		DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/question.gif")).createImage();
+        
+    private RoundedRectangle rectangle;
+    
+    public BPMNMilestoneFigure() {
+    	setSize(80, 48);
+    }
+    
+    protected void customizeFigure() {
+        rectangle = new RoundedRectangle();
+        rectangle.setCornerDimensions(new Dimension(25, 25));
+        add(rectangle, 0);
+        rectangle.setBounds(getBounds());
+        setSelected(false);
+        setIcon(ICON);
+    }
+    
+    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();
+    }
+}

Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/figure/bpmn/BPMNRuleSetNodeFigure.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/figure/bpmn/BPMNRuleSetNodeFigure.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/figure/bpmn/BPMNRuleSetNodeFigure.java	2008-10-06 13:09:45 UTC (rev 23325)
@@ -0,0 +1,34 @@
+package org.drools.eclipse.flow.ruleflow.editor.editpart.figure.bpmn;
+
+import org.drools.eclipse.flow.common.editor.editpart.figure.AbstractElementFigure;
+import org.eclipse.draw2d.RoundedRectangle;
+import org.eclipse.draw2d.geometry.Dimension;
+import org.eclipse.draw2d.geometry.Rectangle;
+
+public class BPMNRuleSetNodeFigure extends AbstractElementFigure {
+    
+    private RoundedRectangle rectangle;
+    
+    public BPMNRuleSetNodeFigure() {
+    	setSize(80, 48);
+    }
+    
+    protected void customizeFigure() {
+        rectangle = new RoundedRectangle();
+        rectangle.setCornerDimensions(new Dimension(25, 25));
+        add(rectangle, 0);
+        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();
+    }
+}

Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/figure/bpmn/BPMNSplitFigure.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/figure/bpmn/BPMNSplitFigure.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/figure/bpmn/BPMNSplitFigure.java	2008-10-06 13:09:45 UTC (rev 23325)
@@ -0,0 +1,50 @@
+package org.drools.eclipse.flow.ruleflow.editor.editpart.figure.bpmn;
+
+import org.drools.eclipse.DroolsEclipsePlugin;
+import org.drools.eclipse.flow.common.editor.editpart.figure.AbstractElementFigure;
+import org.drools.eclipse.flow.ruleflow.editor.editpart.SplitEditPart.SplitFigureInterface;
+import org.drools.workflow.core.node.Split;
+import org.eclipse.draw2d.geometry.Rectangle;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.swt.graphics.Image;
+
+public class BPMNSplitFigure extends AbstractElementFigure implements SplitFigureInterface {
+    
+    private static final Image ICON_COMPLEX = ImageDescriptor.createFromURL(
+		DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/bpmn/large/gateway_complex.png")).createImage();
+    private static final Image ICON_AND = ImageDescriptor.createFromURL(
+		DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/bpmn/large/gateway_parallel.png")).createImage();
+    private static final Image ICON_XOR = ImageDescriptor.createFromURL(
+		DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/bpmn/large/gateway_databased_exclusive.png")).createImage();
+    private static final Image ICON_OR = ImageDescriptor.createFromURL(
+		DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/bpmn/large/gateway_databased_inclusive.png")).createImage();
+            
+	public BPMNSplitFigure() {
+		setSize(48, 48);
+	}
+	
+    public void setText(String text) {
+    }
+    
+    public void setBounds(Rectangle r) {
+    	r.setSize(48, 48);
+    	super.setBounds(r);
+    }
+    
+    public void setType(int type) {
+    	if (type == Split.TYPE_AND) {
+    		setIcon(ICON_AND);
+    	} else if (type == Split.TYPE_XOR) {
+    		setIcon(ICON_XOR);
+    	} else if (type == Split.TYPE_OR) {
+    		setIcon(ICON_OR);
+    	} else {
+    		setIcon(ICON_COMPLEX);
+    	}
+    }
+    
+    protected void customizeFigure() {
+        setIcon(ICON_COMPLEX);
+    }
+    
+}
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/figure/bpmn/BPMNStartNodeFigure.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/figure/bpmn/BPMNStartNodeFigure.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/figure/bpmn/BPMNStartNodeFigure.java	2008-10-06 13:09:45 UTC (rev 23325)
@@ -0,0 +1,37 @@
+package org.drools.eclipse.flow.ruleflow.editor.editpart.figure.bpmn;
+
+import org.drools.eclipse.DroolsEclipsePlugin;
+import org.drools.eclipse.flow.common.editor.editpart.figure.AbstractElementFigure;
+import org.eclipse.draw2d.LineBorder;
+import org.eclipse.draw2d.geometry.Rectangle;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.swt.graphics.Image;
+
+public class BPMNStartNodeFigure  extends AbstractElementFigure {
+    
+    private static final Image icon = ImageDescriptor.createFromURL(
+		DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/bpmn/large/start_empty.png")).createImage();;
+    
+    public BPMNStartNodeFigure() {
+	     setSize(48, 48);
+    }
+		
+    public void setText(String text) {
+    }
+    
+    public void setBounds(Rectangle r) {
+    	r.setSize(48, 48);
+    	super.setBounds(r);
+    }
+    
+   protected void customizeFigure() {
+        setIcon(icon);
+    }
+    
+    public void setSelected(boolean b) {
+        super.setSelected(b);
+        ((LineBorder) getBorder()).setWidth(b ? 3 : 1);
+        repaint();
+    }
+    
+}

Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/figure/bpmn/BPMNSubFlowFigure.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/figure/bpmn/BPMNSubFlowFigure.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/figure/bpmn/BPMNSubFlowFigure.java	2008-10-06 13:09:45 UTC (rev 23325)
@@ -0,0 +1,41 @@
+package org.drools.eclipse.flow.ruleflow.editor.editpart.figure.bpmn;
+
+import org.drools.eclipse.DroolsEclipsePlugin;
+import org.drools.eclipse.flow.common.editor.editpart.figure.AbstractElementFigure;
+import org.eclipse.draw2d.RoundedRectangle;
+import org.eclipse.draw2d.geometry.Dimension;
+import org.eclipse.draw2d.geometry.Rectangle;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.swt.graphics.Image;
+
+public class BPMNSubFlowFigure extends AbstractElementFigure {
+    
+    private static final Image ICON = ImageDescriptor.createFromURL(
+		DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/process.gif")).createImage();
+        
+    private RoundedRectangle rectangle;
+    
+    public BPMNSubFlowFigure() {
+    	setSize(80, 48);
+    }
+    
+    protected void customizeFigure() {
+        rectangle = new RoundedRectangle();
+        rectangle.setCornerDimensions(new Dimension(25, 25));
+        add(rectangle, 0);
+        rectangle.setBounds(getBounds());
+        setSelected(false);
+        setIcon(ICON);
+    }
+    
+    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();
+    }
+}

Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/figure/bpmn/BPMNTimerNodeFigure.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/figure/bpmn/BPMNTimerNodeFigure.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/figure/bpmn/BPMNTimerNodeFigure.java	2008-10-06 13:09:45 UTC (rev 23325)
@@ -0,0 +1,30 @@
+package org.drools.eclipse.flow.ruleflow.editor.editpart.figure.bpmn;
+
+import org.drools.eclipse.DroolsEclipsePlugin;
+import org.drools.eclipse.flow.common.editor.editpart.figure.AbstractElementFigure;
+import org.eclipse.draw2d.geometry.Rectangle;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.swt.graphics.Image;
+
+public class BPMNTimerNodeFigure extends AbstractElementFigure {
+    
+    private static final Image ICON = ImageDescriptor.createFromURL(
+		DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/bpmn/large/intermediate_timer.png")).createImage();
+    
+    public BPMNTimerNodeFigure() {
+    	setSize(48, 48);
+    }
+        
+    public void setBounds(Rectangle r) {
+    	r.setSize(48, 48);
+    	super.setBounds(r);
+    }
+    
+    protected void customizeFigure() {
+        setIcon(ICON);
+    }
+    
+    public void setText(String text) {
+    }
+    
+}
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/figure/bpmn/BPMNWorkItemNodeFigure.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/figure/bpmn/BPMNWorkItemNodeFigure.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/figure/bpmn/BPMNWorkItemNodeFigure.java	2008-10-06 13:09:45 UTC (rev 23325)
@@ -0,0 +1,35 @@
+package org.drools.eclipse.flow.ruleflow.editor.editpart.figure.bpmn;
+
+import org.drools.eclipse.flow.common.editor.editpart.figure.AbstractElementFigure;
+import org.drools.eclipse.flow.ruleflow.editor.editpart.WorkItemEditPart.WorkItemFigureInterface;
+import org.eclipse.draw2d.RoundedRectangle;
+import org.eclipse.draw2d.geometry.Dimension;
+import org.eclipse.draw2d.geometry.Rectangle;
+
+public class BPMNWorkItemNodeFigure extends AbstractElementFigure implements WorkItemFigureInterface {
+    
+    private RoundedRectangle rectangle;
+    
+    public BPMNWorkItemNodeFigure() {
+    	setSize(80, 48);
+    }
+    
+    protected void customizeFigure() {
+        rectangle = new RoundedRectangle();
+        rectangle.setCornerDimensions(new Dimension(25, 25));
+        add(rectangle, 0);
+        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();
+    }
+}

Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/skin/BPMNSkinProvider.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/skin/BPMNSkinProvider.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/skin/BPMNSkinProvider.java	2008-10-06 13:09:45 UTC (rev 23325)
@@ -0,0 +1,273 @@
+package org.drools.eclipse.flow.ruleflow.skin;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.drools.eclipse.DroolsEclipsePlugin;
+import org.drools.eclipse.flow.common.editor.core.ElementConnectionFactory;
+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.ConnectionWrapperFactory;
+import org.drools.eclipse.flow.ruleflow.core.EndNodeWrapper;
+import org.drools.eclipse.flow.ruleflow.core.EventNodeWrapper;
+import org.drools.eclipse.flow.ruleflow.core.FaultNodeWrapper;
+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.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.editor.editpart.JoinEditPart.JoinFigureInterface;
+import org.drools.eclipse.flow.ruleflow.editor.editpart.SplitEditPart.SplitFigureInterface;
+import org.drools.eclipse.flow.ruleflow.editor.editpart.WorkItemEditPart.WorkItemFigureInterface;
+import org.drools.eclipse.flow.ruleflow.editor.editpart.figure.bpmn.BPMNActionNodeFigure;
+import org.drools.eclipse.flow.ruleflow.editor.editpart.figure.bpmn.BPMNCompositeNodeFigure;
+import org.drools.eclipse.flow.ruleflow.editor.editpart.figure.bpmn.BPMNEndNodeFigure;
+import org.drools.eclipse.flow.ruleflow.editor.editpart.figure.bpmn.BPMNEventNodeFigure;
+import org.drools.eclipse.flow.ruleflow.editor.editpart.figure.bpmn.BPMNFaultNodeFigure;
+import org.drools.eclipse.flow.ruleflow.editor.editpart.figure.bpmn.BPMNJoinFigure;
+import org.drools.eclipse.flow.ruleflow.editor.editpart.figure.bpmn.BPMNMilestoneFigure;
+import org.drools.eclipse.flow.ruleflow.editor.editpart.figure.bpmn.BPMNRuleSetNodeFigure;
+import org.drools.eclipse.flow.ruleflow.editor.editpart.figure.bpmn.BPMNSplitFigure;
+import org.drools.eclipse.flow.ruleflow.editor.editpart.figure.bpmn.BPMNStartNodeFigure;
+import org.drools.eclipse.flow.ruleflow.editor.editpart.figure.bpmn.BPMNSubFlowFigure;
+import org.drools.eclipse.flow.ruleflow.editor.editpart.figure.bpmn.BPMNTimerNodeFigure;
+import org.drools.eclipse.flow.ruleflow.editor.editpart.figure.bpmn.BPMNWorkItemNodeFigure;
+import org.eclipse.draw2d.IFigure;
+import org.eclipse.gef.palette.CombinedTemplateCreationEntry;
+import org.eclipse.gef.palette.ConnectionCreationToolEntry;
+import org.eclipse.gef.palette.PaletteContainer;
+import org.eclipse.gef.palette.PaletteDrawer;
+import org.eclipse.gef.palette.PaletteEntry;
+import org.eclipse.gef.requests.CreationFactory;
+import org.eclipse.gef.requests.SimpleFactory;
+import org.eclipse.jface.resource.ImageDescriptor;
+
+public class BPMNSkinProvider implements SkinProvider {
+
+    public PaletteContainer createComponentsDrawer() {
+
+        PaletteDrawer drawer = new PaletteDrawer("Components", null);
+
+        List<PaletteEntry> entries = new ArrayList<PaletteEntry>();
+
+        CombinedTemplateCreationEntry combined = new CombinedTemplateCreationEntry(
+            "Start Event",
+            "Create a new Start",
+            StartNodeWrapper.class,
+            new SimpleFactory(StartNodeWrapper.class),
+            ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/bpmn/start_empty.png")),
+            ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/bpmn/start_empty.png"))
+        );
+        entries.add(combined);
+        
+        combined = new CombinedTemplateCreationEntry(
+            "End Event",
+            "Create a new End",
+            EndNodeWrapper.class,
+            new SimpleFactory(EndNodeWrapper.class),
+            ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/bpmn/end_terminate.png")), 
+            ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/bpmn/end_terminate.png"))
+        );
+        entries.add(combined);
+                
+        combined = new CombinedTemplateCreationEntry(
+            "Rule Task",
+            "Create a new RuleFlowGroup",
+            RuleSetNodeWrapper.class,
+            new SimpleFactory(RuleSetNodeWrapper.class),
+            ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/bpmn/Activity.gif")), 
+            ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/bpmn/Activity.gif"))
+        );
+        entries.add(combined);
+            
+        combined = new CombinedTemplateCreationEntry(
+            "Gateway [diverge]",
+            "Create a new Split",
+            SplitWrapper.class,
+            new SimpleFactory(SplitWrapper.class),
+            ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/bpmn/gateway_complex.png")), 
+            ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/bpmn/gateway_complex.png"))
+        );
+        entries.add(combined);
+                    
+        combined = new CombinedTemplateCreationEntry(
+            "Gateway [converge]",
+            "Create a new Join",
+            JoinWrapper.class,
+            new SimpleFactory(JoinWrapper.class),
+            ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/bpmn/gateway_complex.png")), 
+            ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/bpmn/gateway_complex.png"))
+        );
+        entries.add(combined);
+                        
+        combined = new CombinedTemplateCreationEntry(
+            "Wait Task",
+            "Create a new Event Wait",
+            MilestoneWrapper.class,
+            new SimpleFactory(MilestoneWrapper.class),
+            ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/bpmn/Activity.gif")), 
+            ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/bpmn/Activity.gif"))
+        );
+        entries.add(combined);
+                            
+        combined = new CombinedTemplateCreationEntry(
+            "Reusable Sub-Process",
+            "Create a new SubFlow",
+            SubProcessWrapper.class,
+            new SimpleFactory(SubProcessWrapper.class),
+            ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/bpmn/sub_process.png")), 
+            ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/bpmn/sub_process.png"))
+        );
+        entries.add(combined);
+                                
+        combined = new CombinedTemplateCreationEntry(
+            "Script Task",
+            "Create a new Action",
+            ActionWrapper.class,
+            new SimpleFactory(ActionWrapper.class),
+            ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/bpmn/Activity.gif")), 
+            ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/bpmn/Activity.gif"))
+        );
+        entries.add(combined);
+                      
+        combined = new CombinedTemplateCreationEntry(
+            "Timer Event",
+            "Create a new Timer",
+            TimerWrapper.class,
+            new SimpleFactory(TimerWrapper.class),
+            ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/bpmn/intermediate_timer.png")), 
+            ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/bpmn/intermediate_timer.png"))
+        );
+        entries.add(combined);
+                      
+        combined = new CombinedTemplateCreationEntry(
+            "Error Event",
+            "Create a new Fault",
+            FaultNodeWrapper.class,
+            new SimpleFactory(FaultNodeWrapper.class),
+            ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/bpmn/intermediate_error_10.png")), 
+            ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/bpmn/intermediate_error_10.png"))
+        );
+        entries.add(combined);
+                          
+        combined = new CombinedTemplateCreationEntry(
+		    "Message Event",
+		    "Create a new Event Node",
+		    EventNodeWrapper.class,
+		    new SimpleFactory(EventNodeWrapper.class),
+		    ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/bpmn/intermediate_message.png")), 
+		    ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/bpmn/intermediate_empty.png"))
+		);
+		entries.add(combined);
+	                    
+        combined = new CombinedTemplateCreationEntry(
+            "User Task",
+            "Create a new Human Task",
+            HumanTaskNodeWrapper.class,
+            new SimpleFactory(HumanTaskNodeWrapper.class),
+            ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/bpmn/task.png")), 
+            ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/bpmn/task.png"))
+        );
+        entries.add(combined);
+                              
+        combined = new CombinedTemplateCreationEntry(
+            "Embedded Sub-Process",
+            "Create a new Composite Node",
+            CompositeContextNodeWrapper.class,
+            new SimpleFactory(CompositeContextNodeWrapper.class),
+            ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/bpmn/sub_process_expanded.png")), 
+            ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/bpmn/sub_process_expanded.png"))
+        );
+        entries.add(combined);
+                          
+	    combined = new CombinedTemplateCreationEntry(
+		    "Multiple Instances",
+		    "Create a new ForEach Node",
+		    ForEachNodeWrapper.class,
+		    new SimpleFactory(ForEachNodeWrapper.class),
+		    ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/bpmn/sub_process_expanded.png")), 
+		    ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/bpmn/sub_process_expanded.png"))
+		);
+		entries.add(combined);
+                    
+        drawer.addAll(entries);
+        return drawer;
+    }
+    
+    public PaletteEntry createConnectionEntry() {
+    	final ElementConnectionFactory normalConnectionFactory = new ConnectionWrapperFactory();
+        PaletteEntry tool = new ConnectionCreationToolEntry(
+    		"Sequence Flow",
+            "Creating connections",
+            new CreationFactory() {
+                public Object getNewObject() {
+                	return normalConnectionFactory.createElementConnection();
+                }
+                public Object getObjectType() {
+                	return ConnectionWrapper.class;
+                }
+            },
+            ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/connection.gif")), 
+            ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/connection.gif"))
+        );
+    	return tool;
+    }
+
+    public IFigure createActionNodeFigure() {
+		return new BPMNActionNodeFigure();
+	}
+
+	public IFigure createEndNodeFigure() {
+		return new BPMNEndNodeFigure();
+	}
+
+	public IFigure createEventNodeFigure() {
+		return new BPMNEventNodeFigure();
+	}
+
+	public IFigure createFaultNodeFigure() {
+		return new BPMNFaultNodeFigure();
+	}
+
+	public JoinFigureInterface createJoinFigure() {
+		return new BPMNJoinFigure();
+	}
+
+	public SplitFigureInterface createSplitFigure() {
+		return new BPMNSplitFigure();
+	}
+
+	public IFigure createStartNodeFigure() {
+		return new BPMNStartNodeFigure();
+	}
+
+	public IFigure createTimerNodeFigure() {
+		return new BPMNTimerNodeFigure();
+	}
+
+	public IFigure createMilestoneFigure() {
+		return new BPMNMilestoneFigure();
+	}
+
+	public IFigure createRuleSetNodeFigure() {
+		return new BPMNRuleSetNodeFigure();
+	}
+
+	public IFigure createSubFlowFigure() {
+		return new BPMNSubFlowFigure();
+	}
+
+	public WorkItemFigureInterface createWorkItemFigure() {
+		return new BPMNWorkItemNodeFigure();
+	}
+
+	public IFigure createCompositeNodeFigure() {
+		return new BPMNCompositeNodeFigure();
+	}
+
+}

Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/skin/DefaultSkinProvider.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/skin/DefaultSkinProvider.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/skin/DefaultSkinProvider.java	2008-10-06 13:09:45 UTC (rev 23325)
@@ -0,0 +1,273 @@
+package org.drools.eclipse.flow.ruleflow.skin;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.drools.eclipse.DroolsEclipsePlugin;
+import org.drools.eclipse.flow.common.editor.core.ElementConnectionFactory;
+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.ConnectionWrapperFactory;
+import org.drools.eclipse.flow.ruleflow.core.EndNodeWrapper;
+import org.drools.eclipse.flow.ruleflow.core.EventNodeWrapper;
+import org.drools.eclipse.flow.ruleflow.core.FaultNodeWrapper;
+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.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.editor.editpart.ActionEditPart;
+import org.drools.eclipse.flow.ruleflow.editor.editpart.CompositeNodeEditPart;
+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.FaultNodeEditPart;
+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.flow.ruleflow.editor.editpart.JoinEditPart.JoinFigureInterface;
+import org.drools.eclipse.flow.ruleflow.editor.editpart.SplitEditPart.SplitFigureInterface;
+import org.drools.eclipse.flow.ruleflow.editor.editpart.WorkItemEditPart.WorkItemFigureInterface;
+import org.eclipse.draw2d.IFigure;
+import org.eclipse.gef.palette.CombinedTemplateCreationEntry;
+import org.eclipse.gef.palette.ConnectionCreationToolEntry;
+import org.eclipse.gef.palette.PaletteContainer;
+import org.eclipse.gef.palette.PaletteDrawer;
+import org.eclipse.gef.palette.PaletteEntry;
+import org.eclipse.gef.requests.CreationFactory;
+import org.eclipse.gef.requests.SimpleFactory;
+import org.eclipse.jface.resource.ImageDescriptor;
+
+public class DefaultSkinProvider implements SkinProvider {
+	
+    public PaletteContainer createComponentsDrawer() {
+
+        PaletteDrawer drawer = new PaletteDrawer("Components", null);
+
+        List<PaletteEntry> entries = new ArrayList<PaletteEntry>();
+
+        CombinedTemplateCreationEntry combined = new CombinedTemplateCreationEntry(
+            "Start",
+            "Create a new Start",
+            StartNodeWrapper.class,
+            new SimpleFactory(StartNodeWrapper.class),
+            ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/process_start.gif")),
+            ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/process_start.gif"))
+        );
+        entries.add(combined);
+        
+        combined = new CombinedTemplateCreationEntry(
+            "End",
+            "Create a new End",
+            EndNodeWrapper.class,
+            new SimpleFactory(EndNodeWrapper.class),
+            ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/process_stop.gif")), 
+            ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/process_stop.gif"))
+        );
+        entries.add(combined);
+                
+        combined = new CombinedTemplateCreationEntry(
+            "RuleFlowGroup",
+            "Create a new RuleFlowGroup",
+            RuleSetNodeWrapper.class,
+            new SimpleFactory(RuleSetNodeWrapper.class),
+            ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/activity.gif")), 
+            ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/activity.gif"))
+        );
+        entries.add(combined);
+            
+        combined = new CombinedTemplateCreationEntry(
+            "Split",
+            "Create a new Split",
+            SplitWrapper.class,
+            new SimpleFactory(SplitWrapper.class),
+            ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/split.gif")), 
+            ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/split.gif"))
+        );
+        entries.add(combined);
+                    
+        combined = new CombinedTemplateCreationEntry(
+            "Join",
+            "Create a new Join",
+            JoinWrapper.class,
+            new SimpleFactory(JoinWrapper.class),
+            ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/join.gif")), 
+            ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/join.gif"))
+        );
+        entries.add(combined);
+                        
+        combined = new CombinedTemplateCreationEntry(
+            "Event Wait",
+            "Create a new Event Wait",
+            MilestoneWrapper.class,
+            new SimpleFactory(MilestoneWrapper.class),
+            ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/question.gif")), 
+            ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/question.gif"))
+        );
+        entries.add(combined);
+                            
+        combined = new CombinedTemplateCreationEntry(
+            "SubFlow",
+            "Create a new SubFlow",
+            SubProcessWrapper.class,
+            new SimpleFactory(SubProcessWrapper.class),
+            ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/process.gif")), 
+            ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/process.gif"))
+        );
+        entries.add(combined);
+                                
+        combined = new CombinedTemplateCreationEntry(
+            "Action",
+            "Create a new Action",
+            ActionWrapper.class,
+            new SimpleFactory(ActionWrapper.class),
+            ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/action.gif")), 
+            ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/action.gif"))
+        );
+        entries.add(combined);
+                      
+        combined = new CombinedTemplateCreationEntry(
+            "Timer",
+            "Create a new Timer",
+            TimerWrapper.class,
+            new SimpleFactory(TimerWrapper.class),
+            ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/timer.gif")), 
+            ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/timer.gif"))
+        );
+        entries.add(combined);
+                      
+        combined = new CombinedTemplateCreationEntry(
+            "Fault",
+            "Create a new Fault",
+            FaultNodeWrapper.class,
+            new SimpleFactory(FaultNodeWrapper.class),
+            ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/fault.gif")), 
+            ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/fault.gif"))
+        );
+        entries.add(combined);
+                          
+        combined = new CombinedTemplateCreationEntry(
+		    "Event",
+		    "Create a new Event Node",
+		    EventNodeWrapper.class,
+		    new SimpleFactory(EventNodeWrapper.class),
+		    ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/event.gif")), 
+		    ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/event.gif"))
+		);
+		entries.add(combined);
+	                    
+        combined = new CombinedTemplateCreationEntry(
+            "Human Task",
+            "Create a new Human Task",
+            HumanTaskNodeWrapper.class,
+            new SimpleFactory(HumanTaskNodeWrapper.class),
+            ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/human_task.gif")), 
+            ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/human_task.gif"))
+        );
+        entries.add(combined);
+                              
+        combined = new CombinedTemplateCreationEntry(
+            "Composite",
+            "Create a new Composite Node",
+            CompositeContextNodeWrapper.class,
+            new SimpleFactory(CompositeContextNodeWrapper.class),
+            ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/composite.gif")), 
+            ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/composite.gif"))
+        );
+        entries.add(combined);
+                          
+	    combined = new CombinedTemplateCreationEntry(
+		    "For Each",
+		    "Create a new ForEach Node",
+		    ForEachNodeWrapper.class,
+		    new SimpleFactory(ForEachNodeWrapper.class),
+		    ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/composite.gif")), 
+		    ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/composite.gif"))
+		);
+		entries.add(combined);
+                    
+        drawer.addAll(entries);
+        return drawer;
+    }
+    
+    public PaletteEntry createConnectionEntry() {
+    	final ElementConnectionFactory normalConnectionFactory = new ConnectionWrapperFactory();
+        PaletteEntry tool = new ConnectionCreationToolEntry(
+    		"Connection Creation",
+            "Creating connections",
+            new CreationFactory() {
+                public Object getNewObject() {
+                	return normalConnectionFactory.createElementConnection();
+                }
+                public Object getObjectType() {
+                	return ConnectionWrapper.class;
+                }
+            },
+            ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/connection.gif")), 
+            ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/connection.gif"))
+        );
+    	return tool;
+    }
+
+	public IFigure createActionNodeFigure() {
+		return new ActionEditPart.ActionNodeFigure();
+	}
+
+	public IFigure createEndNodeFigure() {
+		return new EndNodeEditPart.EndNodeFigure();
+	}
+
+	public IFigure createEventNodeFigure() {
+		return new EventNodeEditPart.EventNodeFigure();
+	}
+
+	public IFigure createFaultNodeFigure() {
+		return new FaultNodeEditPart.FaultNodeFigure();
+	}
+
+	public JoinFigureInterface createJoinFigure() {
+		return new JoinEditPart.JoinFigure();
+	}
+
+	public SplitFigureInterface createSplitFigure() {
+		return new SplitEditPart.SplitFigure();
+	}
+
+	public IFigure createStartNodeFigure() {
+		return new StartNodeEditPart.StartNodeFigure();
+	}
+
+	public IFigure createTimerNodeFigure() {
+		return new TimerEditPart.TimerNodeFigure();
+	}
+
+	public IFigure createMilestoneFigure() {
+		return new MilestoneEditPart.MilestoneFigure();
+	}
+
+	public IFigure createRuleSetNodeFigure() {
+		return new RuleSetNodeEditPart.RuleSetNodeFigure();
+	}
+
+	public IFigure createSubFlowFigure() {
+		return new SubFlowEditPart.SubFlowNodeFigure();
+	}
+
+	public WorkItemFigureInterface createWorkItemFigure() {
+		return new WorkItemEditPart.WorkItemFigure();
+	}
+
+	public IFigure createCompositeNodeFigure() {
+		return new CompositeNodeEditPart.CompositeNodeFigure();
+	}
+
+}

Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/skin/SkinManager.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/skin/SkinManager.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/skin/SkinManager.java	2008-10-06 13:09:45 UTC (rev 23325)
@@ -0,0 +1,29 @@
+package org.drools.eclipse.flow.ruleflow.skin;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public final class SkinManager {
+	
+	private static final SkinManager INSTANCE = new SkinManager();
+
+	private Map<String, SkinProvider> skinProviders = new HashMap<String, SkinProvider>();
+	
+	private SkinManager() {
+		registerSkinProviders();
+	}
+	
+	public static SkinManager getInstance() {
+		return INSTANCE;
+	}
+	
+	private void registerSkinProviders() {
+		skinProviders.put("default", new DefaultSkinProvider());
+		skinProviders.put("BPMN", new BPMNSkinProvider());
+	}
+	
+	public SkinProvider getSkinProvider(String type) {
+		return skinProviders.get(type);
+	}
+	
+}

Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/skin/SkinProvider.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/skin/SkinProvider.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/skin/SkinProvider.java	2008-10-06 13:09:45 UTC (rev 23325)
@@ -0,0 +1,42 @@
+package org.drools.eclipse.flow.ruleflow.skin;
+
+import org.drools.eclipse.flow.ruleflow.editor.editpart.JoinEditPart.JoinFigureInterface;
+import org.drools.eclipse.flow.ruleflow.editor.editpart.SplitEditPart.SplitFigureInterface;
+import org.drools.eclipse.flow.ruleflow.editor.editpart.WorkItemEditPart.WorkItemFigureInterface;
+import org.eclipse.draw2d.IFigure;
+import org.eclipse.gef.palette.PaletteContainer;
+import org.eclipse.gef.palette.PaletteEntry;
+
+public interface SkinProvider {
+	
+	PaletteContainer createComponentsDrawer();
+	
+	PaletteEntry createConnectionEntry();
+	
+	IFigure createActionNodeFigure();
+	
+	IFigure createEndNodeFigure();
+	
+	IFigure createEventNodeFigure();
+
+	IFigure createFaultNodeFigure();
+
+	JoinFigureInterface createJoinFigure();
+
+	SplitFigureInterface createSplitFigure();
+
+	IFigure createStartNodeFigure();
+
+	IFigure createTimerNodeFigure();
+
+	IFigure createMilestoneFigure();
+
+	IFigure createRuleSetNodeFigure();
+
+	IFigure createSubFlowFigure();
+
+	WorkItemFigureInterface createWorkItemFigure();
+
+	IFigure createCompositeNodeFigure();
+
+}

Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/preferences/DroolsPreferencePage.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/preferences/DroolsPreferencePage.java	2008-10-06 13:07:47 UTC (rev 23324)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/preferences/DroolsPreferencePage.java	2008-10-06 13:09:45 UTC (rev 23325)
@@ -5,9 +5,12 @@
 import org.eclipse.jface.preference.PreferencePage;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Combo;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Label;
 import org.eclipse.ui.IWorkbench;
 import org.eclipse.ui.IWorkbenchPreferencePage;
 
@@ -16,24 +19,36 @@
 	private Button buildAllCheckBox;
 	private Button collapseEditorCheckBox;
 	private Button cacheParsedRulesCheckBox;
+	private Combo processSkinCombo;
 	
 	protected Control createContents(Composite parent) {
-		buildAllCheckBox = createCheckBox(parent,
+		final Composite composite = new Composite(parent, SWT.NONE);
+        GridLayout gridLayout = new GridLayout();
+        gridLayout.numColumns = 2;
+        composite.setLayout(gridLayout);
+        
+		buildAllCheckBox = createCheckBox(composite,
 			"Automatically reparse all rules if a Java resource is changed.");
-		collapseEditorCheckBox = createCheckBox(parent,
+		collapseEditorCheckBox = createCheckBox(composite,
 			"Use code folding in DRL editor.");
-		cacheParsedRulesCheckBox = createCheckBox(parent,
+		cacheParsedRulesCheckBox = createCheckBox(composite,
 			"When parsing rules, always cache the result for future use. Warning: when disabled, debugging of rules will not work.");
+		Label label = new Label(composite, SWT.NONE);
+		label.setText("Preferred process skin: ");
+		processSkinCombo = new Combo(composite, SWT.LEFT);
+		processSkinCombo.add("default");
+		processSkinCombo.add("BPMN");
 
 		initializeValues();
 
-		return new Composite(parent, SWT.NULL);
+		return composite;
 	}
 
 	private Button createCheckBox(Composite group, String label) {
         Button button = new Button(group, SWT.CHECK | SWT.LEFT);
         button.setText(label);
         GridData data = new GridData();
+        data.horizontalSpan = 2;
         button.setLayoutData(data);
         return button;
     }
@@ -47,6 +62,12 @@
         buildAllCheckBox.setSelection(store.getDefaultBoolean(IDroolsConstants.BUILD_ALL));
         collapseEditorCheckBox.setSelection(store.getDefaultBoolean(IDroolsConstants.EDITOR_FOLDING));
         cacheParsedRulesCheckBox.setSelection(store.getDefaultBoolean(IDroolsConstants.CACHE_PARSED_RULES));
+        String skin = store.getDefaultString(IDroolsConstants.SKIN);
+        int index = 0;
+        if ("BPMN".equals(skin)) {
+        	index = 1;
+        }
+        processSkinCombo.select(index);
     }
 
 	private void initializeValues() {
@@ -54,6 +75,12 @@
         buildAllCheckBox.setSelection(store.getBoolean(IDroolsConstants.BUILD_ALL));
         collapseEditorCheckBox.setSelection(store.getBoolean(IDroolsConstants.EDITOR_FOLDING));
         cacheParsedRulesCheckBox.setSelection(store.getBoolean(IDroolsConstants.CACHE_PARSED_RULES));
+        String skin = store.getString(IDroolsConstants.SKIN);
+        int index = 0;
+        if ("BPMN".equals(skin)) {
+        	index = 1;
+        }
+        processSkinCombo.select(index);
     }
 
 	protected void performDefaults() {
@@ -72,6 +99,8 @@
         store.setValue(IDroolsConstants.BUILD_ALL, buildAllCheckBox.getSelection());
         store.setValue(IDroolsConstants.EDITOR_FOLDING, collapseEditorCheckBox.getSelection());
         store.setValue(IDroolsConstants.CACHE_PARSED_RULES, cacheParsedRulesCheckBox.getSelection());
+        store.setValue(IDroolsConstants.SKIN,
+    		(String) processSkinCombo.getItem(processSkinCombo.getSelectionIndex()));
     }
 
 	public void init(IWorkbench workbench) {

Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/preferences/IDroolsConstants.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/preferences/IDroolsConstants.java	2008-10-06 13:07:47 UTC (rev 23324)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/preferences/IDroolsConstants.java	2008-10-06 13:09:45 UTC (rev 23325)
@@ -8,5 +8,6 @@
 	String DRL_EDITOR_MATCHING_BRACKETS = "Drools.DRLMatchingBrackets";
 	String DRL_EDITOR_MATCHING_BRACKETS_COLOR = "Drools.DRLMatchingBracketsColor";
 	String DSL_RULE_EDITOR_COMPLETION_FULL_SENTENCES = "Drools.DSLRuleEditorCompletionFullSentences";
+	String SKIN = "Drools.Flow.Skin";
 	
 }




More information about the jboss-svn-commits mailing list