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

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Aug 25 18:23:03 EDT 2008


Author: KrisVerlaenen
Date: 2008-08-25 18:23:03 -0400 (Mon, 25 Aug 2008)
New Revision: 21892

Added:
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/CompositeContextNodeWrapper.java
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/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
JBRULES-1616: Composite Node
 -added XML persistence, binary runtime persistence and IDE integration

Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/CompositeContextNodeWrapper.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/CompositeContextNodeWrapper.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/CompositeContextNodeWrapper.java	2008-08-25 22:23:03 UTC (rev 21892)
@@ -0,0 +1,118 @@
+package org.drools.eclipse.flow.ruleflow.core;
+
+import java.util.ArrayList;
+import java.util.List;
+
+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.eclipse.flow.common.view.property.ListPropertyDescriptor;
+import org.drools.eclipse.flow.ruleflow.view.property.variable.VariableListCellEditor;
+import org.drools.process.core.context.variable.Variable;
+import org.drools.process.core.context.variable.VariableScope;
+import org.drools.workflow.core.Node;
+import org.drools.workflow.core.node.CompositeContextNode;
+import org.drools.workflow.core.node.CompositeNode;
+import org.eclipse.ui.views.properties.IPropertyDescriptor;
+import org.eclipse.ui.views.properties.TextPropertyDescriptor;
+
+public class CompositeContextNodeWrapper extends CompositeNodeWrapper {
+
+    public static final String VARIABLES = "variables";
+    public static final String START_NODE = "startNodeId";
+    public static final String END_NODE = "endNodeId";
+
+    private static final long serialVersionUID = 400L;
+    private static IPropertyDescriptor[] descriptors;
+
+    static {
+        descriptors = new IPropertyDescriptor[DefaultElementWrapper.descriptors.length + 3];
+        System.arraycopy(DefaultElementWrapper.descriptors, 0, descriptors, 0, DefaultElementWrapper.descriptors.length);
+        descriptors[descriptors.length - 3] = 
+            new TextPropertyDescriptor(START_NODE, "StartNodeId");
+        descriptors[descriptors.length - 2] = 
+            new TextPropertyDescriptor(END_NODE, "EndNodeId");
+        descriptors[descriptors.length - 1] = 
+        	new ListPropertyDescriptor(VARIABLES, "Variables", VariableListCellEditor.class);
+    }
+    
+    public CompositeContextNodeWrapper() {
+        setNode(new CompositeContextNode());
+        getCompositeNode().setName("CompositeNode");
+        VariableScope variableScope = new VariableScope();
+        getCompositeContextNode().addContext(variableScope);
+        getCompositeContextNode().setDefaultContext(variableScope);
+    }
+    
+	public IPropertyDescriptor[] getPropertyDescriptors() {
+		return descriptors;
+	}
+
+    public CompositeContextNode getCompositeContextNode() {
+        return (CompositeContextNode) getNode();
+    }
+    
+    public boolean acceptsIncomingConnection(ElementConnection connection, ElementWrapper source) {
+        return getIncomingConnections().isEmpty()
+        	&& (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()
+        		|| ((NodeWrapper) target).getNode().getNodeContainer() == getNode());
+    }
+
+    protected void internalAddElement(ElementWrapper element) {
+        getCompositeNode().addNode(((NodeWrapper) element).getNode());
+    }
+
+    protected void internalRemoveElement(ElementWrapper element) {
+        getCompositeNode().removeNode(((NodeWrapper) element).getNode());
+    }
+ 
+    public Object getPropertyValue(Object id) {
+        if (VARIABLES.equals(id)) {
+            return ((VariableScope) getCompositeContextNode().getDefaultContext(VariableScope.VARIABLE_SCOPE)).getVariables();
+        }
+        if (START_NODE.equals(id)) {
+        	CompositeNode.NodeAndType link = getCompositeNode().getLinkedIncomingNode(Node.CONNECTION_DEFAULT_TYPE);
+        	return link == null ? "" : link.getNodeId() + "";
+        }
+        if (END_NODE.equals(id)) {
+        	CompositeNode.NodeAndType link = getCompositeNode().getLinkedOutgoingNode(Node.CONNECTION_DEFAULT_TYPE);
+        	return link == null ? "" : link.getNodeId() + "";
+        }
+        return super.getPropertyValue(id);
+    }
+
+    public void resetPropertyValue(Object id) {
+        if (VARIABLES.equals(id)) {
+            ((VariableScope) getCompositeContextNode().getDefaultContext(
+                VariableScope.VARIABLE_SCOPE)).setVariables(new ArrayList<Variable>());
+        } else if (START_NODE.equals(id)) {
+            getCompositeNode().linkIncomingConnections(Node.CONNECTION_DEFAULT_TYPE, null);
+        } else if (END_NODE.equals(id)) {
+            getCompositeNode().linkOutgoingConnections(null, Node.CONNECTION_DEFAULT_TYPE);
+        } else {
+        	super.resetPropertyValue(id);
+        }
+    }
+
+    @SuppressWarnings("unchecked")
+	public void setPropertyValue(Object id, Object value) {
+        if (VARIABLES.equals(id)) {
+            ((VariableScope) getCompositeContextNode().getDefaultContext(
+                VariableScope.VARIABLE_SCOPE)).setVariables((List<Variable>) value);
+        } else if (START_NODE.equals(id)) {
+            getCompositeNode().linkIncomingConnections(Node.CONNECTION_DEFAULT_TYPE, new Long((String) value), Node.CONNECTION_DEFAULT_TYPE);
+        } else if (END_NODE.equals(id)) {
+            getCompositeNode().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/CompositeNodeWrapper.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/CompositeNodeWrapper.java	2008-08-25 22:22:21 UTC (rev 21891)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/CompositeNodeWrapper.java	2008-08-25 22:23:03 UTC (rev 21892)
@@ -3,19 +3,13 @@
 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;
 
-public class CompositeNodeWrapper extends ElementContainerElementWrapper implements NodeWrapper {
+public abstract class CompositeNodeWrapper extends ElementContainerElementWrapper implements NodeWrapper {
 
     private static final long serialVersionUID = 400L;
-
-    public CompositeNodeWrapper() {
-        setNode(new CompositeNode());
-        getCompositeNode().setName("CompositeNode");
-    }
     
     public void setNode(Node node) {
         setElement(node);

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-08-25 22:22:21 UTC (rev 21891)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/RuleFlowWrapperBuilder.java	2008-08-25 22:23:03 UTC (rev 21892)
@@ -19,6 +19,7 @@
 import org.drools.workflow.core.Connection;
 import org.drools.workflow.core.Node;
 import org.drools.workflow.core.node.ActionNode;
+import org.drools.workflow.core.node.CompositeContextNode;
 import org.drools.workflow.core.node.CompositeNode;
 import org.drools.workflow.core.node.EndNode;
 import org.drools.workflow.core.node.EventNode;
@@ -104,8 +105,8 @@
             return new SubProcessWrapper();
         } else if (node instanceof ForEachNode) {
             return new ForEachNodeWrapper();
-        } else if (node instanceof CompositeNode) {
-            return new CompositeNodeWrapper();
+        } else if (node instanceof CompositeContextNode) {
+            return new CompositeContextNodeWrapper();
         } else if (node instanceof Join) {
             return new JoinWrapper();
         } else if (node instanceof Split) {

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-08-25 22:22:21 UTC (rev 21891)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/RuleFlowPaletteFactory.java	2008-08-25 22:23:03 UTC (rev 21892)
@@ -21,6 +21,7 @@
 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;
@@ -184,25 +185,25 @@
         );
         entries.add(combined);
                               
-//        combined = new CombinedTemplateCreationEntry(
-//            "Composite Node",
-//            "Create a new Composite Node",
-//            CompositeNodeWrapper.class,
-//            new SimpleFactory(CompositeNodeWrapper.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(
+            "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(
-		      "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);
+	    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;

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-08-25 22:22:21 UTC (rev 21891)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/RuleFlowEditPartFactory.java	2008-08-25 22:23:03 UTC (rev 21892)
@@ -19,7 +19,7 @@
 import org.drools.eclipse.flow.common.editor.editpart.ProcessEditPart;
 import org.drools.eclipse.flow.common.editor.editpart.ProcessEditPartFactory;
 import org.drools.eclipse.flow.ruleflow.core.ActionWrapper;
-import org.drools.eclipse.flow.ruleflow.core.CompositeNodeWrapper;
+import org.drools.eclipse.flow.ruleflow.core.CompositeContextNodeWrapper;
 import org.drools.eclipse.flow.ruleflow.core.ConnectionWrapper;
 import org.drools.eclipse.flow.ruleflow.core.EndNodeWrapper;
 import org.drools.eclipse.flow.ruleflow.core.EventNodeWrapper;
@@ -78,7 +78,7 @@
             result = new TimerEditPart();
         } else if (model instanceof ForEachNodeWrapper) {
             result = new ForEachNodeEditPart();
-        } else if (model instanceof CompositeNodeWrapper) {
+        } else if (model instanceof CompositeContextNodeWrapper) {
             result = new ElementContainerEditPart();
         } else if (model instanceof EventNodeWrapper) {
             result = new EventNodeEditPart();




More information about the jboss-svn-commits mailing list