[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