[jboss-svn-commits] JBL Code SVN: r21162 - in labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow: ruleflow/core and 2 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Jul 22 08:39:52 EDT 2008


Author: KrisVerlaenen
Date: 2008-07-22 08:39:52 -0400 (Tue, 22 Jul 2008)
New Revision: 21162

Added:
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/ForEachNodeWrapper.java
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/ForEachNodeEditPart.java
Modified:
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/core/DefaultElementWrapper.java
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/core/ElementWrapper.java
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/AbstractNodeWrapper.java
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/CompositeNodeWrapper.java
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/RuleFlowWrapperBuilder.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/RuleFlowEditPartFactory.java
Log:
JBRULES-1690: IDE support for ForEach
 - extended for each in IDE

Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/core/DefaultElementWrapper.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/core/DefaultElementWrapper.java	2008-07-22 12:32:20 UTC (rev 21161)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/core/DefaultElementWrapper.java	2008-07-22 12:39:52 UTC (rev 21162)
@@ -23,6 +23,8 @@
 import java.util.List;
 
 import org.eclipse.draw2d.geometry.Rectangle;
+import org.eclipse.jface.viewers.CellEditor;
+import org.eclipse.swt.widgets.Composite;
 import org.eclipse.ui.views.properties.IPropertyDescriptor;
 import org.eclipse.ui.views.properties.IPropertySource;
 import org.eclipse.ui.views.properties.TextPropertyDescriptor;
@@ -37,9 +39,15 @@
     protected static IPropertyDescriptor[] descriptors;
 
     public static final String NAME = "Name";
+    public static final String ID = "Id";
     static {
         descriptors = new IPropertyDescriptor[] {
             new TextPropertyDescriptor(NAME, "Name"),
+            new TextPropertyDescriptor(ID, "Id") {
+            	public CellEditor createPropertyEditor(Composite parent) {
+                    return null;
+                }
+            },
         };
     }
     
@@ -180,6 +188,9 @@
 		if (NAME.equals(id)) {
 			return getName();
 		}
+		if (ID.equals(id)) {
+			return getId();
+		}
 		return null;
 	}
 

Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/core/ElementWrapper.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/core/ElementWrapper.java	2008-07-22 12:32:20 UTC (rev 21161)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/core/ElementWrapper.java	2008-07-22 12:39:52 UTC (rev 21162)
@@ -26,6 +26,7 @@
  */
 public interface ElementWrapper {
 	
+	static final int CHANGE_ID = 0;
 	static final int CHANGE_INCOMING_CONNECTIONS = 1;
 	static final int CHANGE_OUTGOING_CONNECTIONS = 2;
 	static final int CHANGE_CONSTRAINT = 3;

Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/AbstractNodeWrapper.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/AbstractNodeWrapper.java	2008-07-22 12:32:20 UTC (rev 21161)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/AbstractNodeWrapper.java	2008-07-22 12:39:52 UTC (rev 21162)
@@ -73,12 +73,14 @@
 
     public boolean acceptsIncomingConnection(ElementConnection connection, ElementWrapper source) {
         return source == null
-    		|| ((NodeWrapper) source).getNode().getNodeContainer() == getNode().getNodeContainer();
+    		|| source.getParent() == getParent()
+    		|| getParent() == source;
     }
 
     public boolean acceptsOutgoingConnection(ElementConnection connection, ElementWrapper target) {
         return target == null
-    		|| ((NodeWrapper) target).getNode().getNodeContainer() == getNode().getNodeContainer();
+    		|| ((NodeWrapper) target).getNode().getNodeContainer() == getNode().getNodeContainer()
+    		|| ((NodeWrapper) target).getNode() == getNode().getNodeContainer();
     }
     
 }

Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/CompositeNodeWrapper.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/CompositeNodeWrapper.java	2008-07-22 12:32:20 UTC (rev 21161)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/CompositeNodeWrapper.java	2008-07-22 12:39:52 UTC (rev 21162)
@@ -3,6 +3,7 @@
 import org.drools.eclipse.flow.common.editor.core.ElementConnection;
 import org.drools.eclipse.flow.common.editor.core.ElementContainerElementWrapper;
 import org.drools.eclipse.flow.common.editor.core.ElementWrapper;
+import org.drools.workflow.core.Connection;
 import org.drools.workflow.core.Node;
 import org.drools.workflow.core.node.CompositeNode;
 import org.eclipse.draw2d.geometry.Rectangle;
@@ -65,14 +66,16 @@
     
     public boolean acceptsIncomingConnection(ElementConnection connection, ElementWrapper source) {
         return getIncomingConnections().isEmpty()
-        	&& (source == null || 
-    			((NodeWrapper) source).getNode().getNodeContainer() == getNode().getNodeContainer());
+        	&& (source == null
+    			|| ((NodeWrapper) source).getNode().getNodeContainer() == getNode().getNodeContainer()
+    			|| ((NodeWrapper) source).getNode().getNodeContainer() == getNode());
     }
 
     public boolean acceptsOutgoingConnection(ElementConnection connection, ElementWrapper target) {
         return getOutgoingConnections().isEmpty()
-        	&& (target == null || 
-    			((NodeWrapper) target).getNode().getNodeContainer() == getNode().getNodeContainer());
+        	&& (target == null
+    			|| ((NodeWrapper) target).getNode().getNodeContainer() == getNode().getNodeContainer()
+        		|| ((NodeWrapper) target).getNode().getNodeContainer() == getNode());
     }
 
     protected void internalAddElement(ElementWrapper element) {
@@ -82,5 +85,5 @@
     protected void internalRemoveElement(ElementWrapper element) {
         getCompositeNode().removeNode(((NodeWrapper) element).getNode());
     }
-
+ 
 }

Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/ForEachNodeWrapper.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/ForEachNodeWrapper.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/ForEachNodeWrapper.java	2008-07-22 12:39:52 UTC (rev 21162)
@@ -0,0 +1,108 @@
+package org.drools.eclipse.flow.ruleflow.core;
+
+import org.drools.eclipse.flow.common.editor.core.DefaultElementWrapper;
+import org.drools.eclipse.flow.common.editor.core.ElementConnection;
+import org.drools.eclipse.flow.common.editor.core.ElementWrapper;
+import org.drools.process.core.datatype.impl.type.ObjectDataType;
+import org.drools.workflow.core.Node;
+import org.drools.workflow.core.node.CompositeNode;
+import org.drools.workflow.core.node.ForEachNode;
+import org.eclipse.ui.views.properties.IPropertyDescriptor;
+import org.eclipse.ui.views.properties.TextPropertyDescriptor;
+
+public class ForEachNodeWrapper extends CompositeNodeWrapper {
+
+    public static final String VARIABLE_NAME = "variableName";
+    public static final String COLLECTION_EXPRESSION = "collectionExpression";
+    public static final String START_NODE = "startNodeId";
+    public static final String END_NODE = "endNodeId";
+
+    private static final long serialVersionUID = 4L;
+    private static IPropertyDescriptor[] descriptors;
+
+    static {
+        descriptors = new IPropertyDescriptor[DefaultElementWrapper.descriptors.length + 4];
+        System.arraycopy(DefaultElementWrapper.descriptors, 0, descriptors, 0, DefaultElementWrapper.descriptors.length);
+        descriptors[descriptors.length - 4] = 
+            new TextPropertyDescriptor(VARIABLE_NAME, "Variable Name");
+        descriptors[descriptors.length - 3] = 
+            new TextPropertyDescriptor(COLLECTION_EXPRESSION, "CollectionExpression");
+        descriptors[descriptors.length - 2] = 
+            new TextPropertyDescriptor(START_NODE, "StartNodeId");
+        descriptors[descriptors.length - 1] = 
+            new TextPropertyDescriptor(END_NODE, "EndNodeId");
+    }
+    
+    public ForEachNodeWrapper() {
+        setNode(new ForEachNode());
+        getForEachNode().setName("ForEach");
+    }
+    
+    public ForEachNode getForEachNode() {
+    	return (ForEachNode) getNode();
+    }
+    
+	public IPropertyDescriptor[] getPropertyDescriptors() {
+		return descriptors;
+	}
+
+    public boolean acceptsIncomingConnection(ElementConnection connection, ElementWrapper source) {
+        return super.acceptsIncomingConnection(connection, source)
+        	&& getIncomingConnections().isEmpty();
+    }
+
+    public boolean acceptsOutgoingConnection(ElementConnection connection, ElementWrapper target) {
+        return target == null
+			|| (target.getParent() == getParent() && getOutgoingConnections().isEmpty())
+			|| (target.getParent() == this && getForEachNode().getLinkedIncomingNode(Node.CONNECTION_DEFAULT_TYPE) == null);
+    }
+    
+    public Object getPropertyValue(Object id) {
+        if (VARIABLE_NAME.equals(id)) {
+        	String variableName = getForEachNode().getVariableName();
+        	return variableName == null ? "" : variableName;
+        }
+        if (COLLECTION_EXPRESSION.equals(id)) {
+        	String collectionExpression = getForEachNode().getCollectionExpression();
+        	return collectionExpression == null ? "" : collectionExpression;
+        }
+        if (START_NODE.equals(id)) {
+        	CompositeNode.NodeAndType link = getForEachNode().getLinkedIncomingNode(Node.CONNECTION_DEFAULT_TYPE);
+        	return link == null ? "" : link.getNodeId();
+        }
+        if (END_NODE.equals(id)) {
+        	CompositeNode.NodeAndType link = getForEachNode().getLinkedOutgoingNode(Node.CONNECTION_DEFAULT_TYPE);
+        	return link == null ? "" : link.getNodeId();
+        }
+        return super.getPropertyValue(id);
+    }
+
+    public void resetPropertyValue(Object id) {
+        if (VARIABLE_NAME.equals(id)) {
+            getForEachNode().setVariable(null, null);
+        } else if (COLLECTION_EXPRESSION.equals(id)) {
+            getForEachNode().setCollectionExpression(null);
+        } else if (START_NODE.equals(id)) {
+            getForEachNode().linkIncomingConnections(Node.CONNECTION_DEFAULT_TYPE, null);
+        } else if (END_NODE.equals(id)) {
+            getForEachNode().linkOutgoingConnections(null, Node.CONNECTION_DEFAULT_TYPE);
+        } else {
+            super.resetPropertyValue(id);
+        }
+    }
+
+    public void setPropertyValue(Object id, Object value) {
+        if (VARIABLE_NAME.equals(id)) {
+            getForEachNode().setVariable((String) value, new ObjectDataType()); 
+        } else if (COLLECTION_EXPRESSION.equals(id)) {
+            getForEachNode().setCollectionExpression((String) value);
+        } else if (START_NODE.equals(id)) {
+            getForEachNode().linkIncomingConnections(Node.CONNECTION_DEFAULT_TYPE, new Long((String) value), Node.CONNECTION_DEFAULT_TYPE);
+        } else if (END_NODE.equals(id)) {
+            getForEachNode().linkOutgoingConnections(new Long((String) value), Node.CONNECTION_DEFAULT_TYPE, Node.CONNECTION_DEFAULT_TYPE);
+        } else {
+            super.setPropertyValue(id, value);
+        }
+    }
+    
+}

Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/RuleFlowWrapperBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/RuleFlowWrapperBuilder.java	2008-07-22 12:32:20 UTC (rev 21161)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/RuleFlowWrapperBuilder.java	2008-07-22 12:39:52 UTC (rev 21162)
@@ -21,6 +21,7 @@
 import org.drools.workflow.core.node.ActionNode;
 import org.drools.workflow.core.node.CompositeNode;
 import org.drools.workflow.core.node.EndNode;
+import org.drools.workflow.core.node.ForEachNode;
 import org.drools.workflow.core.node.HumanTaskNode;
 import org.drools.workflow.core.node.Join;
 import org.drools.workflow.core.node.MilestoneNode;
@@ -48,7 +49,7 @@
         return null;
     }
     
-    private static void processNodes(Set<Node> nodes, Set<Connection> connections, ElementContainer container, IJavaProject project) {
+    public static void processNodes(Set<Node> nodes, Set<Connection> connections, ElementContainer container, IJavaProject project) {
         Map<Node, NodeWrapper> nodeWrappers = new HashMap<Node, NodeWrapper>();
         for (Node node: nodes) {
             NodeWrapper nodeWrapper = getNodeWrapper(node, project);
@@ -66,17 +67,26 @@
                     connections.add(connection);
                 }
             }
+            if (node instanceof CompositeNode) {
+            	Set<Node> subNodes = new HashSet<Node>();
+            	for (Node subNode: ((CompositeNode) node).getNodes()) {
+            		subNodes.add(subNode);
+            	}
+            	processNodes(subNodes, new HashSet<Connection>(), (CompositeNodeWrapper) nodeWrapper, project);
+            }
         }
         for (Connection connection: connections) {
             ConnectionWrapper connectionWrapper = new ConnectionWrapper();
             connectionWrapper.localSetConnection(connection);
             connectionWrapper.localSetBendpoints(null);
             NodeWrapper from = nodeWrappers.get(connection.getFrom());
-            connectionWrapper.localSetSource(from);
-            from.localAddOutgoingConnection(connectionWrapper);
             NodeWrapper to = nodeWrappers.get(connection.getTo());
-            connectionWrapper.localSetTarget(to);
-            to.localAddIncomingConnection(connectionWrapper);
+            if (from != null && to != null) {
+	            connectionWrapper.localSetSource(from);
+	            from.localAddOutgoingConnection(connectionWrapper);
+	            connectionWrapper.localSetTarget(to);
+	            to.localAddIncomingConnection(connectionWrapper);
+            }
         }
     }
     
@@ -91,6 +101,8 @@
             return new RuleSetNodeWrapper();
         } else if (node instanceof SubProcessNode) {
             return new SubProcessWrapper();
+        } else if (node instanceof ForEachNode) {
+            return new ForEachNodeWrapper();
         } else if (node instanceof CompositeNode) {
             return new CompositeNodeWrapper();
         } else if (node instanceof Join) {

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-07-22 12:32:20 UTC (rev 21161)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/RuleFlowPaletteFactory.java	2008-07-22 12:39:52 UTC (rev 21162)
@@ -25,6 +25,7 @@
 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.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;
@@ -183,6 +184,16 @@
 //        );
 //        entries.add(combined);
                           
+	      combined = new CombinedTemplateCreationEntry(
+		      "ForEach Node",
+		      "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;
     }

Added: 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	                        (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/ForEachNodeEditPart.java	2008-07-22 12:39:52 UTC (rev 21162)
@@ -0,0 +1,65 @@
+package org.drools.eclipse.flow.ruleflow.editor.editpart;
+/*
+ * Copyright 2005 JBoss Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import org.drools.eclipse.flow.common.editor.editpart.ElementContainerEditPart;
+import org.drools.eclipse.flow.common.editor.editpart.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.
+ * 
+ * @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
+ */
+public class ForEachNodeEditPart extends ElementContainerEditPart {
+
+//    public ConnectionAnchor getSourceConnectionAnchor(Request request) {
+//    	Point p = ((DropRequest) request).getLocation();
+//    	Rectangle figureBounds = getFigure().getBounds();
+//    	if (p.x > figureBounds.x && p.x < figureBounds.x + figureBounds.width &&
+//    			p.y > figureBounds.y && p.y < figureBounds.y + figureBounds.height) {
+//        	FixedConnectionAnchor c = new FixedConnectionAnchor(getFigure());
+//        	c.setOffsetV(getFigure().getBounds().height/2);
+//        	c.setOffsetH(0);
+//            return c;
+//    	}
+//    	FixedConnectionAnchor c = new FixedConnectionAnchor(getFigure());
+//    	c.setOffsetV(getFigure().getBounds().height/2);
+//    	c.setOffsetH(getFigure().getBounds().width);
+//        return c;
+//    }
+//
+//    public ConnectionAnchor getTargetConnectionAnchor(Request request) {
+//    	Point p = ((DropRequest) request).getLocation();
+//    	Rectangle figureBounds = getFigure().getBounds();
+//    	if (p.x > figureBounds.x && p.x < figureBounds.x + figureBounds.width &&
+//    			p.y > figureBounds.y && p.y < figureBounds.y + figureBounds.height) {
+//        	FixedConnectionAnchor c = new FixedConnectionAnchor(getFigure());
+//        	c.setOffsetV(getFigure().getBounds().height/2);
+//        	c.setOffsetH(getFigure().getBounds().width);
+//            return c;
+//    	}
+//    	FixedConnectionAnchor c = new FixedConnectionAnchor(getFigure());
+//    	c.setOffsetV(getFigure().getBounds().height/2);
+//    	c.setOffsetH(0);
+//        return c;
+//    }
+
+}

Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/RuleFlowEditPartFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/RuleFlowEditPartFactory.java	2008-07-22 12:32:20 UTC (rev 21161)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/RuleFlowEditPartFactory.java	2008-07-22 12:39:52 UTC (rev 21162)
@@ -22,6 +22,7 @@
 import org.drools.eclipse.flow.ruleflow.core.CompositeNodeWrapper;
 import org.drools.eclipse.flow.ruleflow.core.ConnectionWrapper;
 import org.drools.eclipse.flow.ruleflow.core.EndNodeWrapper;
+import org.drools.eclipse.flow.ruleflow.core.ForEachNodeWrapper;
 import org.drools.eclipse.flow.ruleflow.core.JoinWrapper;
 import org.drools.eclipse.flow.ruleflow.core.MilestoneWrapper;
 import org.drools.eclipse.flow.ruleflow.core.RuleFlowProcessWrapper;
@@ -74,6 +75,8 @@
             ((WorkItemEditPart) result).setProject(project);
         } else if (model instanceof TimerWrapper) {
             result = new TimerEditPart();
+        } else if (model instanceof ForEachNodeWrapper) {
+            result = new ForEachNodeEditPart();
         } else if (model instanceof CompositeNodeWrapper) {
             result = new ElementContainerEditPart();
         } else {




More information about the jboss-svn-commits mailing list