[jboss-svn-commits] JBL Code SVN: r19434 - in labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin: icons and 23 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Sun Apr 6 19:51:00 EDT 2008
Author: KrisVerlaenen
Date: 2008-04-06 19:51:00 -0400 (Sun, 06 Apr 2008)
New Revision: 19434
Added:
labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/icons/composite.gif
labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/icons/human_task.gif
labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/icons/timer.gif
labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/core/ElementContainer.java
labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/core/ElementContainerElementWrapper.java
labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/editpart/ElementContainerEditPart.java
labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/editpart/figure/AbstractElementFigure.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/common/editor/policy/ElementContainerLayoutEditPolicy.java
labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/view/property/ProcessLabelProvider.java
labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/view/property/ProcessTypeMapper.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/DefaultNodeWrapper.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/core/TimerWrapper.java
labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/DefaultNodeEditPart.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/figure/
labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/figure/DefaultNodeFigure.java
labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/ElementNameSection.java
labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/NodeSection.java
labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/ProcessNameSection.java
labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/workitem/
labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/workitem/WorkItemParameterMappingCellEditor.java
labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/workitem/WorkItemParameterMappingDialog.java
labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/workitem/WorkItemParameterMappingPropertyDescriptor.java
labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/workitem/WorkItemResultMappingCellEditor.java
labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/workitem/WorkItemResultMappingDialog.java
labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/workitem/WorkItemResultMappingPropertyDescriptor.java
labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/preferences/DroolsBuildPathPropertyPage.java
Removed:
labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/editpart/work/WorkEditor.java
labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/policy/ProcessLayoutEditPolicy.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/DroolsPluginImages.java
labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/ProcessInfo.java
labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/WorkItemDefinitions.java
labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/builder/DroolsBuilder.java
labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/debug/ProcessInstanceViewer.java
labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/debug/ProcessInstancesView.java
labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/GenericModelEditor.java
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/ElementConnection.java
labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/core/ElementConnectionFactory.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/common/editor/core/ProcessWrapper.java
labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/core/command/AddElementCommand.java
labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/core/command/DeleteElementCommand.java
labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/editpart/ElementConnectionEditPart.java
labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/editpart/ElementEditPart.java
labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/editpart/ProcessEditPart.java
labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/editpart/figure/ElementFigure.java
labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/editpart/work/SampleCustomEditor.java
labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/policy/ElementEditPolicy.java
labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/ActionWrapper.java
labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/ConnectionWrapper.java
labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/ConnectionWrapperFactory.java
labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/EndNodeWrapper.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/MilestoneWrapper.java
labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/NodeWrapper.java
labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/RuleFlowProcessWrapper.java
labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/RuleSetNodeWrapper.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/core/StartNodeWrapper.java
labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/SubFlowWrapper.java
labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/WorkItemWrapper.java
labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/RuleFlowModelEditor.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/EndNodeEditPart.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/RuleFlowEditPartFactory.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/WorkItemEditPart.java
labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/constraint/ConstraintListDialog.java
labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/variable/VariableDialog.java
labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/variable/VariableListDialog.java
labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/view/rules/RulesView.java
labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/resources/org/drools/eclipse/flow/ruleflow/SampleRuleFlow.rf.template
labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/resources/org/drools/eclipse/wizard/project/Sample.xls.template
labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/resources/org/drools/eclipse/wizard/project/ruleflow.rf.template
labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/resources/org/drools/eclipse/wizard/project/ruleflow.rfm.template
Log:
JBRULES-1548: ePDL: XML-based process definition language
- Ruleflow processes now stored using nicer XML format
JBRULES-1549: Workflow Context
- Context as the basis for grouping nodes
JBRULES-1550: Workflow timer
- Timer node + service
JBRULES-1551: Workflow human tasks
- Added initial implementation for integration human tasks
Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/.classpath
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/.classpath 2008-04-06 23:49:40 UTC (rev 19433)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/.classpath 2008-04-06 23:51:00 UTC (rev 19434)
@@ -2,6 +2,8 @@
<classpath>
<classpathentry kind="src" path="src/main/java"/>
<classpathentry kind="src" path="src/main/resources"/>
+ <classpathentry combineaccessrules="false" kind="src" path="/drools-compiler"/>
+ <classpathentry combineaccessrules="false" kind="src" path="/drools-core"/>
<classpathentry exported="true" kind="lib" path="lib/drools-compiler.jar" sourcepath="/drools-compiler"/>
<classpathentry exported="true" kind="lib" path="lib/drools-core.jar" sourcepath="/drools-core"/>
<classpathentry exported="true" kind="lib" path="lib/drools-decisiontables.jar"/>
Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/icons/composite.gif
===================================================================
(Binary files differ)
Property changes on: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/icons/composite.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/icons/human_task.gif
===================================================================
(Binary files differ)
Property changes on: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/icons/human_task.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/icons/timer.gif
===================================================================
(Binary files differ)
Property changes on: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/icons/timer.gif
___________________________________________________________________
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-04-06 23:49:40 UTC (rev 19433)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/DroolsEclipsePlugin.java 2008-04-06 23:51:00 UTC (rev 19434)
@@ -16,6 +16,7 @@
*/
import java.io.Reader;
+import java.io.StringReader;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
@@ -34,12 +35,13 @@
import org.drools.eclipse.builder.Util;
import org.drools.eclipse.dsl.editor.DSLAdapter;
import org.drools.eclipse.editors.AbstractRuleEditor;
-import org.drools.eclipse.flow.ruleflow.core.RuleFlowProcessWrapper;
import org.drools.eclipse.preferences.IDroolsConstants;
import org.drools.eclipse.util.ProjectClassLoader;
import org.drools.lang.descr.PackageDescr;
+import org.drools.process.core.Process;
import org.drools.rule.builder.dialect.java.JavaDialectConfiguration;
import org.drools.ruleflow.core.RuleFlowProcess;
+import org.drools.xml.XmlProcessReader;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.IResourceVisitor;
@@ -60,8 +62,6 @@
import org.eclipse.ui.plugin.AbstractUIPlugin;
import org.osgi.framework.BundleContext;
-import com.thoughtworks.xstream.XStream;
-
/**
* The main plugin class to be used in the desktop.
*
@@ -412,21 +412,20 @@
public ProcessInfo parseProcess(String input, IResource resource) {
try {
- XStream stream = new XStream();
- stream.setMode(XStream.ID_REFERENCES);
-
ClassLoader oldLoader = Thread.currentThread().getContextClassLoader();
ClassLoader newLoader = this.getClass().getClassLoader();
try {
Thread.currentThread().setContextClassLoader(newLoader);
- Object o = stream.fromXML(input);
- if (o instanceof RuleFlowProcessWrapper) {
- RuleFlowProcessWrapper processWrapper = (RuleFlowProcessWrapper) o;
- RuleFlowProcess process = processWrapper.getRuleFlowProcess();
+ PackageBuilderConfiguration configuration = new PackageBuilderConfiguration();
+ XmlProcessReader xmlReader = new XmlProcessReader( configuration.getSemanticModules() );
+
+ Process o = xmlReader.read(new StringReader(input));
+ if (o instanceof RuleFlowProcess) {
+ RuleFlowProcess process = (RuleFlowProcess) o;
PackageBuilder packageBuilder = new PackageBuilder();
ProcessBuilder processBuilder = new ProcessBuilder(packageBuilder);
processBuilder.buildProcess(process);
- ProcessInfo processInfo = new ProcessInfo(process.getId(), processWrapper, packageBuilder.getPackage());
+ ProcessInfo processInfo = new ProcessInfo(process.getId(), process);
processInfo.setErrors(processBuilder.getErrors());
if (useCachePreference) {
processInfos.put(resource, processInfo);
Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/DroolsPluginImages.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/DroolsPluginImages.java 2008-04-06 23:49:40 UTC (rev 19433)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/DroolsPluginImages.java 2008-04-06 23:51:00 UTC (rev 19434)
@@ -98,7 +98,7 @@
* @param path The path where the image can be found. This path is relative to where
* this plugin class is found (i.e. typically the packages directory)
*/
- private final static void declareRegistryImage(String key, String path) {
+ public final static void declareRegistryImage(String key, String path) {
ImageDescriptor desc= ImageDescriptor.getMissingImageDescriptor();
try {
desc= ImageDescriptor.createFromURL(makeIconFileURL(path));
@@ -132,6 +132,10 @@
return getImageRegistry().get(key);
}
+ public static void putImage(String key, Image image) {
+ getImageRegistry().put(key, image);
+ }
+
/**
* Returns the <code>ImageDescriptor</code> identified by the given key,
* or <code>null</code> if it does not exist.
Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/ProcessInfo.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/ProcessInfo.java 2008-04-06 23:49:40 UTC (rev 19433)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/ProcessInfo.java 2008-04-06 23:51:00 UTC (rev 19434)
@@ -2,33 +2,25 @@
import java.util.List;
-import org.drools.eclipse.flow.common.editor.core.ProcessWrapper;
import org.drools.process.core.Process;
-import org.drools.rule.Package;
public class ProcessInfo {
- private Package processPackage;
private String processId;
- private ProcessWrapper processWrapper;
+ private Process process;
private List errors;
- public ProcessInfo(String processId, ProcessWrapper processWrapper, Package processPackage) {
+ public ProcessInfo(String processId, Process process) {
this.processId = processId;
- this.processPackage = processPackage;
- this.processWrapper = processWrapper;
+ this.process = process;
}
- public Process getProcess() {
- return (Process) processPackage.getRuleFlows().get(processId);
- }
-
public String getProcessId() {
return processId;
}
- public ProcessWrapper getProcessWrapper() {
- return processWrapper;
+ public Process getProcess() {
+ return process;
}
public List getErrors() {
Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/WorkItemDefinitions.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/WorkItemDefinitions.java 2008-04-06 23:49:40 UTC (rev 19433)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/WorkItemDefinitions.java 2008-04-06 23:51:00 UTC (rev 19434)
@@ -1,60 +1,52 @@
package org.drools.eclipse;
-import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
+import org.drools.RuleBaseConfiguration;
+import org.drools.eclipse.builder.DroolsBuilder;
+import org.drools.eclipse.util.ProjectClassLoader;
import org.drools.process.core.WorkDefinition;
-import org.drools.process.core.datatype.impl.type.StringDataType;
-import org.drools.process.core.impl.ParameterDefinitionImpl;
-import org.drools.process.core.impl.WorkDefinitionExtensionImpl;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.JavaCore;
public final class WorkItemDefinitions {
- private static Map workDefinitions = new HashMap();
-
- static {
- // Email
- WorkDefinitionExtensionImpl emailDefinition = new WorkDefinitionExtensionImpl();
- emailDefinition.setName("Email");
- emailDefinition.addParameter(new ParameterDefinitionImpl("From", new StringDataType()));
- emailDefinition.addParameter(new ParameterDefinitionImpl("To", new StringDataType()));
- emailDefinition.addParameter(new ParameterDefinitionImpl("Subject", new StringDataType()));
- emailDefinition.addParameter(new ParameterDefinitionImpl("Text", new StringDataType()));
- emailDefinition.setDisplayName("Email");
- emailDefinition.setIcon("icons/import_statement.gif");
- emailDefinition.setCustomEditor("org.drools.eclipse.flow.common.editor.editpart.work.SampleCustomEditor");
- addWorkDefinition(emailDefinition);
- // Log
- WorkDefinitionExtensionImpl logDefinition = new WorkDefinitionExtensionImpl();
- logDefinition.setName("Log");
- logDefinition.addParameter(new ParameterDefinitionImpl("Message", new StringDataType()));
- logDefinition.setDisplayName("Log");
- logDefinition.setIcon("icons/open.gif");
- addWorkDefinition(logDefinition);
- // Order
-// WorkDefinitionExtensionImpl orderDefinition = new WorkDefinitionExtensionImpl();
-// orderDefinition.setName("Order");
-// orderDefinition.addParameter(new ParameterDefinitionImpl("OrderId", new StringDataType()));
-// orderDefinition.setDisplayName("Order");
-// orderDefinition.setIcon("icons/open.gif");
-// addWorkDefinition(orderDefinition);
+ private WorkItemDefinitions() {
+ }
+ public static Map<String, WorkDefinition> getWorkDefinitions(IResource resource) {
+ return getWorkDefinitions(resource == null ? null : resource.getProject());
}
- private WorkItemDefinitions() {
+ public static Map<String, WorkDefinition> getWorkDefinitions(IProject project) {
+ if (project != null) {
+ ClassLoader oldLoader = Thread.currentThread().getContextClassLoader();
+ ClassLoader newLoader = DroolsBuilder.class.getClassLoader();
+ try {
+ if (project.getNature("org.eclipse.jdt.core.javanature") != null) {
+ IJavaProject javaProject = JavaCore.create(project);
+ newLoader = ProjectClassLoader.getProjectClassLoader(javaProject);
+ }
+ try {
+ Thread.currentThread().setContextClassLoader(newLoader);
+ return new RuleBaseConfiguration().getProcessWorkDefinitions();
+ } finally {
+ Thread.currentThread().setContextClassLoader(oldLoader);
+ }
+ } catch (Exception e) {
+ DroolsEclipsePlugin.log(e);
+ }
+ }
+ return new HashMap<String, WorkDefinition>();
}
- private static void addWorkDefinition(WorkDefinition workDefinition) {
- workDefinitions.put(workDefinition.getName(), workDefinition);
+ public static void main(String[] args) {
+ for (WorkDefinition def: new RuleBaseConfiguration().getProcessWorkDefinitions().values()) {
+ System.out.println(def);
+ }
}
- public static Collection getWorkDefinitions() {
- return workDefinitions.values();
- }
-
- public static WorkDefinition getWorkDefinition(String name) {
- return (WorkDefinition) workDefinitions.get(name);
- }
-
}
Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/builder/DroolsBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/builder/DroolsBuilder.java 2008-04-06 23:49:40 UTC (rev 19433)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/builder/DroolsBuilder.java 2008-04-06 23:51:00 UTC (rev 19434)
@@ -276,13 +276,19 @@
}
private DroolsBuildMarker[] parseRuleFlowFile(IFile file) {
+ if (!file.exists()) {
+ return new DroolsBuildMarker[0];
+ }
List markers = new ArrayList();
try {
String input = convertToString(file.getContents());
ProcessInfo processInfo =
DroolsEclipsePlugin.getDefault().parseProcess(input, file);
- markParseErrors(markers, processInfo.getErrors());
+ if (processInfo != null) {
+ markParseErrors(markers, processInfo.getErrors());
+ }
} catch (Exception t) {
+ t.printStackTrace();
String message = t.getMessage();
if (message == null || message.trim().equals( "" )) {
message = "Error: " + t.getClass().getName();
Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/debug/ProcessInstanceViewer.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/debug/ProcessInstanceViewer.java 2008-04-06 23:49:40 UTC (rev 19433)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/debug/ProcessInstanceViewer.java 2008-04-06 23:51:00 UTC (rev 19434)
@@ -13,7 +13,9 @@
import org.drools.eclipse.flow.common.editor.editpart.ProcessEditPart;
import org.drools.eclipse.flow.common.editor.editpart.figure.ElementFigure;
import org.drools.eclipse.flow.ruleflow.core.RuleFlowProcessWrapper;
+import org.drools.eclipse.flow.ruleflow.core.RuleFlowWrapperBuilder;
import org.drools.eclipse.flow.ruleflow.editor.editpart.RuleFlowEditPartFactory;
+import org.drools.ruleflow.core.RuleFlowProcess;
import org.eclipse.draw2d.ColorConstants;
import org.eclipse.gef.GraphicalViewer;
import org.eclipse.gef.editparts.ScalableRootEditPart;
@@ -21,8 +23,6 @@
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.CTabFolder;
-import org.eclipse.swt.custom.CTabFolder2Adapter;
-import org.eclipse.swt.custom.CTabFolderEvent;
import org.eclipse.swt.custom.CTabItem;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.layout.GridData;
@@ -85,7 +85,8 @@
graphicalViewer.createControl(composite);
graphicalViewer.getControl().setBackground(ColorConstants.listBackground);
graphicalViewer.setRootEditPart(new ScalableRootEditPart());
- graphicalViewer.setEditPartFactory(new RuleFlowEditPartFactory());
+ // TODO fix this !
+ graphicalViewer.setEditPartFactory(new RuleFlowEditPartFactory(null));
setProcess(processInfo);
for (String nodeId: nodeIds) {
handleNodeInstanceSelection(nodeId);
@@ -93,7 +94,8 @@
}
private void setProcess(ProcessInfo processInfo) {
- ProcessWrapper processWrapper = processInfo.getProcessWrapper();
+ RuleFlowProcess process = (RuleFlowProcess) processInfo.getProcess();
+ ProcessWrapper processWrapper = RuleFlowWrapperBuilder.getProcessWrapper(process, null);
graphicalViewer.setContents(
processWrapper == null ? new RuleFlowProcessWrapper() : processWrapper);
}
@@ -126,7 +128,7 @@
}
public void selectionChanged(IWorkbenchPart part, ISelection selection) {
- System.out.println("Selection changed: " + selection);
+ // Do nothing
}
}
Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/debug/ProcessInstancesView.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/debug/ProcessInstancesView.java 2008-04-06 23:49:40 UTC (rev 19433)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/debug/ProcessInstancesView.java 2008-04-06 23:51:00 UTC (rev 19434)
@@ -93,6 +93,7 @@
}
nodeIds.add(nodeId);
}
+ // TODO: pass current java project, to retrieve work item definitions
((ProcessInstanceViewer) view).showProcessInstance(id, processId, nodeIds);
}
}
Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/GenericModelEditor.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/GenericModelEditor.java 2008-04-06 23:49:40 UTC (rev 19433)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/GenericModelEditor.java 2008-04-06 23:51:00 UTC (rev 19434)
@@ -19,8 +19,6 @@
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.util.EventObject;
@@ -65,7 +63,7 @@
*
* @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
*/
-public abstract class GenericModelEditor extends GraphicalEditorWithPalette {
+public abstract class GenericModelEditor extends GraphicalEditorWithPalette { // implements ITabbedPropertySheetPageContributor {
private Object model;
private boolean savePreviouslyNeeded = false;
@@ -137,11 +135,7 @@
super.commandStackChanged(event);
}
- protected void createOutputStream(OutputStream os) throws IOException {
- ObjectOutputStream out = new ObjectOutputStream(os);
- out.writeObject(model);
- out.close();
- }
+ protected abstract void writeModel(OutputStream os) throws IOException;
protected void configureGraphicalViewer() {
super.configureGraphicalViewer();
@@ -170,7 +164,7 @@
public void doSave(IProgressMonitor monitor) {
try {
ByteArrayOutputStream out = new ByteArrayOutputStream();
- createOutputStream(out);
+ writeModel(out);
IFile file = ((IFileEditorInput) getEditorInput()).getFile();
file.setContents(new ByteArrayInputStream(out.toByteArray()), true,
false, monitor);
@@ -200,7 +194,7 @@
throws CoreException {
try {
ByteArrayOutputStream out = new ByteArrayOutputStream();
- createOutputStream(out);
+ writeModel(out);
file.create(new ByteArrayInputStream(out.toByteArray()),
true, monitor);
out.close();
@@ -266,29 +260,25 @@
protected void setInput(IEditorInput input) {
super.setInput(input);
- IFile file = ((IFileEditorInput) input).getFile();
+ IFile file = getFile();
setPartName(file.getName());
try {
InputStream is = file.getContents(false);
- createInputStream(is);
- } catch (Exception e) {
- DroolsEclipsePlugin.log(e);
- model = createModel();
+ createModel(is);
+ } catch (Throwable t) {
+ DroolsEclipsePlugin.log(t);
}
if (getGraphicalViewer() != null) {
initializeGraphicalViewer();
}
}
-
- protected void createInputStream(InputStream is) throws Exception {
- ObjectInputStream ois = new ObjectInputStreamWithLoader(is, getClass()
- .getClassLoader());
- model = ois.readObject();
- ois.close();
+
+ public IFile getFile() {
+ return ((IFileEditorInput) getEditorInput()).getFile();
}
+
+ protected abstract void createModel(InputStream is);
- protected abstract Object createModel();
-
public Object getAdapter(Class type) {
if (type == IContentOutlinePage.class) {
return getOverviewOutlinePage();
@@ -297,6 +287,9 @@
return ((ScalableRootEditPart) getGraphicalViewer()
.getRootEditPart()).getZoomManager();
}
+// if (type == IPropertySheetPage.class) {
+// return new TabbedPropertySheetPage(this);
+// }
return super.getAdapter(type);
}
@@ -308,4 +301,8 @@
}
return overviewOutlinePage;
}
+
+ public String getContributorId() {
+ return getSite().getId();
+ }
}
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-04-06 23:49:40 UTC (rev 19433)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/core/DefaultElementWrapper.java 2008-04-06 23:51:00 UTC (rev 19434)
@@ -20,7 +20,6 @@
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collections;
-import java.util.Iterator;
import java.util.List;
import org.eclipse.draw2d.geometry.Rectangle;
@@ -33,7 +32,7 @@
*
* @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
*/
-public abstract class DefaultElementWrapper implements IPropertySource, ElementWrapper, Serializable {
+public abstract class DefaultElementWrapper implements ElementWrapper, IPropertySource, Serializable {
protected static IPropertyDescriptor[] descriptors;
@@ -45,11 +44,11 @@
}
private Object element;
- private Rectangle constraint;
- private ProcessWrapper parent;
- private List incomingConnections = new ArrayList();
- private List outgoingConnections = new ArrayList();
- private transient List listeners = new ArrayList();
+ private ElementContainer parent;
+ private transient Rectangle constraint;
+ private List<ElementConnection> incomingConnections = new ArrayList<ElementConnection>();
+ private List<ElementConnection> outgoingConnections = new ArrayList<ElementConnection>();
+ private transient List<ModelListener> listeners = new ArrayList<ModelListener>();
protected void setElement(Object element) {
this.element = element;
@@ -60,35 +59,47 @@
}
public void setConstraint(Rectangle constraint) {
- this.constraint = constraint;
+ this.constraint = constraint;
+ internalSetConstraint(constraint);
notifyListeners(CHANGE_CONSTRAINT);
}
-
+
+ protected abstract void internalSetConstraint(Rectangle constraint);
+
public Rectangle getConstraint() {
- return constraint;
+ if (constraint == null) {
+ constraint = internalGetConstraint();
+ }
+ return constraint;
}
+
+ protected abstract Rectangle internalGetConstraint();
- public void setParent(ProcessWrapper parent) {
+ public void setParent(ElementContainer parent) {
this.parent = parent;
}
- protected ProcessWrapper getParent() {
+ public ElementContainer getParent() {
return parent;
}
- public List getOutgoingConnections() {
+ public List<ElementConnection> getOutgoingConnections() {
return Collections.unmodifiableList(outgoingConnections);
}
- public List getIncomingConnections() {
+ public List<ElementConnection> getIncomingConnections() {
return Collections.unmodifiableList(incomingConnections);
}
public void addIncomingConnection(ElementConnection connection) {
- incomingConnections.add(connection);
+ localAddIncomingConnection(connection);
internalAddIncomingConnection(connection);
notifyListeners(CHANGE_INCOMING_CONNECTIONS);
}
+
+ public void localAddIncomingConnection(ElementConnection connection) {
+ incomingConnections.add(connection);
+ }
protected void internalAddIncomingConnection(ElementConnection connection) {
}
@@ -103,11 +114,15 @@
}
public void addOutgoingConnection(ElementConnection connection) {
- outgoingConnections.add(connection);
+ localAddOutgoingConnection(connection);
internalAddOutgoingConnection(connection);
notifyListeners(CHANGE_OUTGOING_CONNECTIONS);
}
+ public void localAddOutgoingConnection(ElementConnection connection) {
+ outgoingConnections.add(connection);
+ }
+
protected void internalAddOutgoingConnection(ElementConnection connection) {
}
@@ -138,8 +153,7 @@
protected void notifyListeners(int change) {
ModelEvent event = new ModelEvent(change);
- for (Iterator it = listeners.iterator(); it.hasNext();) {
- ModelListener listener = (ModelListener) it.next();
+ for (ModelListener listener: listeners) {
listener.modelChanged(event);
}
}
@@ -147,7 +161,7 @@
private void readObject(ObjectInputStream aInputStream)
throws ClassNotFoundException, IOException {
aInputStream.defaultReadObject();
- listeners = new ArrayList();
+ listeners = new ArrayList<ModelListener>();
}
public IPropertyDescriptor[] getPropertyDescriptors() {
Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/core/ElementConnection.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/core/ElementConnection.java 2008-04-06 23:49:40 UTC (rev 19433)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/core/ElementConnection.java 2008-04-06 23:51:00 UTC (rev 19434)
@@ -29,7 +29,7 @@
*
* @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
*/
-public class ElementConnection implements Serializable {
+public abstract class ElementConnection implements Serializable {
private static final long serialVersionUID = 400L;
@@ -37,20 +37,17 @@
private ElementWrapper source;
private ElementWrapper target;
- private List bendpoints = new ArrayList();
- private transient List listeners = new ArrayList();
+ private transient List<Point> bendpoints = new ArrayList<Point>();
+ private transient List<ModelListener> listeners = new ArrayList<ModelListener>();
public ElementConnection() {
}
- public ElementConnection(ElementWrapper source, ElementWrapper target) {
- if (source == null) {
- throw new IllegalArgumentException("source is null");
- }
- if (target == null) {
- throw new IllegalArgumentException("target is null");
- }
+ public void localSetSource(ElementWrapper source) {
this.source = source;
+ }
+
+ public void localSetTarget(ElementWrapper target) {
this.target = target;
}
@@ -91,29 +88,43 @@
return source;
}
-
public ElementWrapper getTarget() {
return target;
}
public void addBendpoint(int index, Point point) {
bendpoints.add(index, point);
+ internalSetBendpoints(bendpoints);
notifyListeners(CHANGE_BENDPOINTS);
}
-
+
public void removeBendpoint(int index) {
bendpoints.remove(index);
+ internalSetBendpoints(bendpoints);
notifyListeners(CHANGE_BENDPOINTS);
}
public void replaceBendpoint(int index, Point point) {
bendpoints.set(index, point);
+ internalSetBendpoints(bendpoints);
notifyListeners(CHANGE_BENDPOINTS);
}
- public List getBendpoints() {
+ protected void internalSetBendpoints(List<Point> bendPoints) {
+ }
+
+ public void localSetBendpoints(List<Point> bendpoints) {
+ this.bendpoints = bendpoints;
+ }
+
+ public List<Point> getBendpoints() {
+ if (bendpoints == null) {
+ bendpoints = internalGetBendpoints();
+ }
return bendpoints;
}
+
+ protected abstract List<Point> internalGetBendpoints();
public void addListener(ModelListener listener) {
listeners.add(listener);
Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/core/ElementConnectionFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/core/ElementConnectionFactory.java 2008-04-06 23:49:40 UTC (rev 19433)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/core/ElementConnectionFactory.java 2008-04-06 23:51:00 UTC (rev 19434)
@@ -20,10 +20,8 @@
*
* @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
*/
-public class ElementConnectionFactory {
+public interface ElementConnectionFactory {
- public ElementConnection createElementConnection() {
- return new ElementConnection();
- }
+ ElementConnection createElementConnection();
}
Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/core/ElementContainer.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/core/ElementContainer.java (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/core/ElementContainer.java 2008-04-06 23:51:00 UTC (rev 19434)
@@ -0,0 +1,17 @@
+package org.drools.eclipse.flow.common.editor.core;
+
+import java.util.List;
+
+public interface ElementContainer {
+
+ void addElement(ElementWrapper element);
+
+ void localAddElement(ElementWrapper element);
+
+ void removeElement(ElementWrapper element);
+
+ List<ElementWrapper> getElements();
+
+ ProcessWrapper getProcessWrapper();
+
+}
Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/core/ElementContainerElementWrapper.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/core/ElementContainerElementWrapper.java (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/core/ElementContainerElementWrapper.java 2008-04-06 23:51:00 UTC (rev 19434)
@@ -0,0 +1,42 @@
+package org.drools.eclipse.flow.common.editor.core;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public abstract class ElementContainerElementWrapper extends DefaultElementWrapper implements ElementContainer {
+
+ public static final int ADD_ELEMENT = 5;
+ public static final int REMOVE_ELEMENT = 6;
+
+ List<ElementWrapper> elements = new ArrayList<ElementWrapper>();
+
+ public void addElement(ElementWrapper element) {
+ internalAddElement(element);
+ localAddElement(element);
+ notifyListeners(ADD_ELEMENT);
+ }
+
+ public void localAddElement(ElementWrapper element) {
+ elements.add(element);
+ }
+
+ protected abstract void internalAddElement(ElementWrapper element);
+
+ public void removeElement(ElementWrapper element) {
+ internalRemoveElement(element);
+ elements.remove(element);
+ element.setParent(null);
+ notifyListeners(REMOVE_ELEMENT);
+ }
+
+ protected abstract void internalRemoveElement(ElementWrapper element);
+
+ public List<ElementWrapper> getElements() {
+ return elements;
+ }
+
+ public ProcessWrapper getProcessWrapper() {
+ return getParent().getProcessWrapper();
+ }
+
+}
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-04-06 23:49:40 UTC (rev 19433)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/core/ElementWrapper.java 2008-04-06 23:51:00 UTC (rev 19434)
@@ -38,13 +38,16 @@
void setConstraint(Rectangle constraint);
Rectangle getConstraint();
- void setParent(ProcessWrapper parent);
+ void setParent(ElementContainer parent);
+ ElementContainer getParent();
- List getOutgoingConnections();
- List getIncomingConnections();
+ List<ElementConnection> getOutgoingConnections();
+ List<ElementConnection> getIncomingConnections();
void addIncomingConnection(ElementConnection connection);
+ void localAddIncomingConnection(ElementConnection connection);
void removeIncomingConnection(ElementConnection connection);
void addOutgoingConnection(ElementConnection connection);
+ void localAddOutgoingConnection(ElementConnection connection);
void removeOutgoingConnection(ElementConnection connection);
boolean acceptsIncomingConnection(ElementConnection connection);
boolean acceptsOutgoingConnection(ElementConnection connection);
Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/core/ProcessWrapper.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/core/ProcessWrapper.java 2008-04-06 23:49:40 UTC (rev 19433)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/core/ProcessWrapper.java 2008-04-06 23:51:00 UTC (rev 19434)
@@ -21,13 +21,14 @@
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
-import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.drools.eclipse.flow.common.view.property.ListPropertyDescriptor;
import org.drools.eclipse.flow.ruleflow.view.property.variable.VariableListCellEditor;
import org.drools.process.core.Process;
+import org.drools.process.core.context.variable.Variable;
+import org.drools.process.core.context.variable.VariableScope;
import org.eclipse.ui.views.properties.ComboBoxPropertyDescriptor;
import org.eclipse.ui.views.properties.IPropertyDescriptor;
import org.eclipse.ui.views.properties.IPropertySource;
@@ -38,7 +39,7 @@
*
* @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
*/
-public abstract class ProcessWrapper implements IPropertySource, Serializable {
+public abstract class ProcessWrapper implements ElementContainer, IPropertySource, Serializable {
public static final int CHANGE_ELEMENTS = 1;
public static final int CHANGE_ROUTER_LAYOUT = 2;
@@ -70,20 +71,23 @@
}
private Process process;
- private Map elements = new HashMap();
- private Integer routerLayout;
- private transient List listeners = new ArrayList();
+ private Map<String, ElementWrapper> elements = new HashMap<String, ElementWrapper>();
+ private transient List<ModelListener> listeners = new ArrayList<ModelListener>();
public ProcessWrapper() {
process = createProcess();
}
-
+
protected abstract Process createProcess();
public Process getProcess() {
return process;
}
+ public void localSetProcess(Process process) {
+ this.process = process;
+ }
+
public String getName() {
return process.getName() == null ? "" : process.getName();
}
@@ -117,19 +121,21 @@
}
public Integer getRouterLayout() {
+ Integer routerLayout = (Integer) process.getMetaData("routerLayout");
if (routerLayout == null) {
- routerLayout = ROUTER_LAYOUT_SHORTEST_PATH;
+ return ROUTER_LAYOUT_MANUAL;
}
return routerLayout;
}
public void setRouterLayout(Integer routerLayout) {
- this.routerLayout = routerLayout;
+ process.setMetaData("routerLayout", routerLayout);
notifyListeners(CHANGE_ROUTER_LAYOUT);
}
- public List getElements() {
- return Collections.unmodifiableList(new ArrayList(elements.values()));
+ public List<ElementWrapper> getElements() {
+ return Collections.unmodifiableList(
+ new ArrayList<ElementWrapper>(elements.values()));
}
public ElementWrapper getElement(String id) {
@@ -139,10 +145,14 @@
public void addElement(ElementWrapper element) {
internalAddElement(element);
//id is set in methode above
- elements.put(element.getId(), element);
+ localAddElement(element);
notifyListeners(CHANGE_ELEMENTS);
}
+ public void localAddElement(ElementWrapper element) {
+ elements.put(element.getId(), element);
+ }
+
protected abstract void internalAddElement(ElementWrapper element);
public void removeElement(ElementWrapper element) {
@@ -153,6 +163,10 @@
protected abstract void internalRemoveElement(ElementWrapper element);
+ public ProcessWrapper getProcessWrapper() {
+ return this;
+ }
+
public void addListener(ModelListener listener) {
listeners.add(listener);
}
@@ -163,15 +177,14 @@
public void notifyListeners(int change) {
ModelEvent event = new ModelEvent(change);
- for (Iterator it = listeners.iterator(); it.hasNext(); ) {
- ModelListener listener = (ModelListener) it.next();
+ for (ModelListener listener: listeners) {
listener.modelChanged(event);
}
}
private void readObject(ObjectInputStream aInputStream) throws ClassNotFoundException, IOException {
aInputStream.defaultReadObject();
- listeners = new ArrayList();
+ listeners = new ArrayList<ModelListener>();
}
public Object getEditableValue() {
@@ -196,10 +209,10 @@
return getPackageName();
}
if (ROUTER_LAYOUT.equals(id)) {
- return routerLayout;
+ return getRouterLayout();
}
if (VARIABLES.equals(id)) {
- return getProcess().getVariables();
+ return ((VariableScope) getProcess().getDefaultContext(VariableScope.VARIABLE_SCOPE)).getVariables();
}
return null;
}
@@ -225,7 +238,8 @@
setRouterLayout(null);
}
if (VARIABLES.equals(id)) {
- getProcess().setVariables(new ArrayList());
+ ((VariableScope) getProcess().getDefaultContext(
+ VariableScope.VARIABLE_SCOPE)).setVariables(new ArrayList<Variable>());
}
}
@@ -241,7 +255,8 @@
} else if (ROUTER_LAYOUT.equals(id)) {
setRouterLayout((Integer) value);
} else if (VARIABLES.equals(id)) {
- getProcess().setVariables((List) value);
+ ((VariableScope) getProcess().getDefaultContext(
+ VariableScope.VARIABLE_SCOPE)).setVariables((List<Variable>) value);
}
}
}
Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/core/command/AddElementCommand.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/core/command/AddElementCommand.java 2008-04-06 23:49:40 UTC (rev 19433)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/core/command/AddElementCommand.java 2008-04-06 23:51:00 UTC (rev 19434)
@@ -15,8 +15,8 @@
* limitations under the License.
*/
+import org.drools.eclipse.flow.common.editor.core.ElementContainer;
import org.drools.eclipse.flow.common.editor.core.ElementWrapper;
-import org.drools.eclipse.flow.common.editor.core.ProcessWrapper;
import org.eclipse.gef.commands.Command;
/**
@@ -27,14 +27,14 @@
public class AddElementCommand extends Command {
private ElementWrapper child;
- private ProcessWrapper parent;
+ private ElementContainer parent;
public void execute() {
parent.addElement(child);
child.setParent(parent);
}
- protected ProcessWrapper getParent() {
+ protected ElementContainer getParent() {
return parent;
}
@@ -46,7 +46,7 @@
child = newChild;
}
- public void setParent(ProcessWrapper newParent) {
+ public void setParent(ElementContainer newParent) {
parent = newParent;
}
Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/core/command/DeleteElementCommand.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/core/command/DeleteElementCommand.java 2008-04-06 23:49:40 UTC (rev 19433)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/core/command/DeleteElementCommand.java 2008-04-06 23:51:00 UTC (rev 19434)
@@ -20,8 +20,8 @@
import java.util.List;
import org.drools.eclipse.flow.common.editor.core.ElementConnection;
+import org.drools.eclipse.flow.common.editor.core.ElementContainer;
import org.drools.eclipse.flow.common.editor.core.ElementWrapper;
-import org.drools.eclipse.flow.common.editor.core.ProcessWrapper;
import org.eclipse.gef.commands.Command;
/**
@@ -32,7 +32,7 @@
public class DeleteElementCommand extends Command {
private ElementWrapper child;
- private ProcessWrapper parent;
+ private ElementContainer parent;
private List incomingElementWrappers = new ArrayList();
private List outgoingElementWrappers = new ArrayList();
@@ -89,7 +89,7 @@
this.child = child;
}
- public void setParent(ProcessWrapper parent) {
+ public void setParent(ElementContainer parent) {
this.parent = parent;
}
Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/editpart/ElementConnectionEditPart.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/editpart/ElementConnectionEditPart.java 2008-04-06 23:49:40 UTC (rev 19433)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/editpart/ElementConnectionEditPart.java 2008-04-06 23:51:00 UTC (rev 19434)
@@ -40,7 +40,7 @@
*
* @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
*/
-public class ElementConnectionEditPart extends AbstractConnectionEditPart implements ModelListener {
+public abstract class ElementConnectionEditPart extends AbstractConnectionEditPart implements ModelListener {
protected void createEditPolicies() {
ConnectionEditPolicy connectionEditPolicy = new ConnectionEditPolicy();
@@ -50,9 +50,7 @@
installEditPolicy(EditPolicy.CONNECTION_BENDPOINTS_ROLE, new ConnectionBendpointEditPolicy());
}
- protected ElementConnectionFactory getDefaultElementConnectionFactory() {
- return new ElementConnectionFactory();
- }
+ protected abstract ElementConnectionFactory getDefaultElementConnectionFactory();
protected IFigure createFigure() {
PolylineConnection result = new PolylineConnection();
Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/editpart/ElementContainerEditPart.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/editpart/ElementContainerEditPart.java (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/editpart/ElementContainerEditPart.java 2008-04-06 23:51:00 UTC (rev 19434)
@@ -0,0 +1,54 @@
+package org.drools.eclipse.flow.common.editor.editpart;
+
+import java.util.List;
+
+import org.drools.eclipse.flow.common.editor.core.ElementContainerElementWrapper;
+import org.drools.eclipse.flow.common.editor.core.ModelEvent;
+import org.drools.eclipse.flow.common.editor.editpart.figure.ElementContainerFigure;
+import org.drools.eclipse.flow.common.editor.policy.ElementContainerLayoutEditPolicy;
+import org.eclipse.draw2d.IFigure;
+import org.eclipse.gef.EditPolicy;
+import org.eclipse.gef.MouseWheelHelper;
+import org.eclipse.gef.editparts.ViewportMouseWheelHelper;
+
+public class ElementContainerEditPart extends ElementEditPart {
+
+ protected ElementContainerElementWrapper getElementContainerElementWrapper() {
+ return (ElementContainerElementWrapper) getModel();
+ }
+
+ protected IFigure createFigure() {
+ return new ElementContainerFigure();
+ }
+
+ protected void createEditPolicies() {
+ super.createEditPolicies();
+ installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, null);
+ installEditPolicy(EditPolicy.LAYOUT_ROLE, new ElementContainerLayoutEditPolicy());
+ }
+
+ public void modelChanged(ModelEvent event) {
+ if (event.getChange() == ElementContainerElementWrapper.ADD_ELEMENT) {
+ refreshChildren();
+ } else if (event.getChange() == ElementContainerElementWrapper.REMOVE_ELEMENT) {
+ refreshChildren();
+ } else {
+ super.modelChanged(event);
+ }
+ }
+
+ public Object getAdapter(Class key) {
+ if (key == MouseWheelHelper.class) {
+ return new ViewportMouseWheelHelper(this);
+ }
+ return super.getAdapter(key);
+ }
+
+ protected List getModelChildren() {
+ return getElementContainerElementWrapper().getElements();
+ }
+
+ public IFigure getContentPane() {
+ return ((ElementContainerFigure) getFigure()).getPane();
+ }
+}
Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/editpart/ElementEditPart.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/editpart/ElementEditPart.java 2008-04-06 23:49:40 UTC (rev 19433)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/editpart/ElementEditPart.java 2008-04-06 23:51:00 UTC (rev 19434)
@@ -17,6 +17,8 @@
import java.util.List;
+import org.drools.eclipse.flow.common.editor.GenericModelEditor;
+import org.drools.eclipse.flow.common.editor.core.ElementConnection;
import org.drools.eclipse.flow.common.editor.core.ElementWrapper;
import org.drools.eclipse.flow.common.editor.core.ModelEvent;
import org.drools.eclipse.flow.common.editor.core.ModelListener;
@@ -45,6 +47,7 @@
public abstract class ElementEditPart extends AbstractGraphicalEditPart implements NodeEditPart, ModelListener {
private DirectEditManager manager;
+ private GenericModelEditor editor;
protected void createEditPolicies() {
installEditPolicy(EditPolicy.GRAPHICAL_NODE_ROLE, new ElementNodeEditPolicy());
@@ -52,15 +55,15 @@
installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, new ElementDirectEditPolicy());
}
- protected ElementWrapper getElementWrapper() {
+ public ElementWrapper getElementWrapper() {
return (ElementWrapper) getModel();
}
- protected List getModelSourceConnections() {
+ protected List<ElementConnection> getModelSourceConnections() {
return getElementWrapper().getOutgoingConnections();
}
- protected List getModelTargetConnections() {
+ protected List<ElementConnection> getModelTargetConnections() {
return getElementWrapper().getIncomingConnections();
}
@@ -136,5 +139,13 @@
}
manager.show();
}
+
+ public void setEditor(GenericModelEditor editor) {
+ this.editor = editor;
+ }
+
+ public GenericModelEditor getEditor() {
+ return this.editor;
+ }
}
Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/editpart/ProcessEditPart.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/editpart/ProcessEditPart.java 2008-04-06 23:49:40 UTC (rev 19433)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/editpart/ProcessEditPart.java 2008-04-06 23:51:00 UTC (rev 19434)
@@ -23,7 +23,7 @@
import org.drools.eclipse.flow.common.editor.core.ModelListener;
import org.drools.eclipse.flow.common.editor.core.ProcessWrapper;
import org.drools.eclipse.flow.common.editor.editpart.figure.ElementFigure;
-import org.drools.eclipse.flow.common.editor.policy.ProcessLayoutEditPolicy;
+import org.drools.eclipse.flow.common.editor.policy.ElementContainerLayoutEditPolicy;
import org.eclipse.draw2d.Animation;
import org.eclipse.draw2d.AutomaticRouter;
import org.eclipse.draw2d.BendpointConnectionRouter;
@@ -65,7 +65,7 @@
installEditPolicy(EditPolicy.NODE_ROLE, null);
installEditPolicy(EditPolicy.GRAPHICAL_NODE_ROLE, null);
installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE, null);
- installEditPolicy(EditPolicy.LAYOUT_ROLE, new ProcessLayoutEditPolicy());
+ installEditPolicy(EditPolicy.LAYOUT_ROLE, new ElementContainerLayoutEditPolicy());
installEditPolicy(EditPolicy.COMPONENT_ROLE, new RootComponentEditPolicy());
}
@@ -73,7 +73,7 @@
return getProcessWrapper().getElements();
}
- protected ProcessWrapper getProcessWrapper() {
+ public ProcessWrapper getProcessWrapper() {
return (ProcessWrapper) getModel();
}
Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/editpart/figure/AbstractElementFigure.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/editpart/figure/AbstractElementFigure.java (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/editpart/figure/AbstractElementFigure.java 2008-04-06 23:51:00 UTC (rev 19434)
@@ -0,0 +1,69 @@
+package org.drools.eclipse.flow.common.editor.editpart.figure;
+/*
+ * 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.eclipse.draw2d.Label;
+import org.eclipse.draw2d.Panel;
+import org.eclipse.draw2d.geometry.Rectangle;
+import org.eclipse.swt.graphics.Image;
+
+/**
+ * Default implementation of an element Figure.
+ *
+ * @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
+ */
+public abstract class AbstractElementFigure extends Panel implements ElementFigure {
+
+ private boolean selected;
+ private Label label = new Label();
+
+ public AbstractElementFigure() {
+ add(label);
+ customizeFigure();
+ setSize(80, 40);
+ }
+
+ public void setIcon(Image icon) {
+ label.setIcon(icon);
+ }
+
+ public void setText(String text) {
+ label.setText(text);
+ }
+
+ public Label getLabel() {
+ return label;
+ }
+
+ public void setBounds(Rectangle bounds) {
+ super.setBounds(bounds);
+ label.setBounds(bounds);
+ }
+
+ protected abstract void customizeFigure();
+
+ public void setSelected(boolean b) {
+ selected = b;
+ }
+
+ public boolean isSelected() {
+ return selected;
+ }
+
+ public void setFocus(boolean b) {
+ repaint();
+ }
+}
Added: 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 (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/editpart/figure/ElementContainerFigure.java 2008-04-06 23:51:00 UTC (rev 19434)
@@ -0,0 +1,55 @@
+package org.drools.eclipse.flow.common.editor.editpart.figure;
+
+import org.eclipse.draw2d.Figure;
+import org.eclipse.draw2d.FreeformLayer;
+import org.eclipse.draw2d.FreeformLayout;
+import org.eclipse.draw2d.FreeformViewport;
+import org.eclipse.draw2d.IFigure;
+import org.eclipse.draw2d.Label;
+import org.eclipse.draw2d.LineBorder;
+import org.eclipse.draw2d.ScrollPane;
+import org.eclipse.draw2d.StackLayout;
+import org.eclipse.swt.graphics.Image;
+
+public class ElementContainerFigure extends Figure implements ElementFigure {
+
+ private IFigure pane;
+ private boolean selected = false;
+
+ public ElementContainerFigure() {
+ setSize(200, 150);
+ ScrollPane scrollpane = new ScrollPane();
+ pane = new FreeformLayer();
+ pane.setLayoutManager(new FreeformLayout());
+ setLayoutManager(new StackLayout());
+ add(scrollpane);
+ scrollpane.setViewport(new FreeformViewport());
+ scrollpane.setContents(pane);
+ }
+
+ public Label getLabel() {
+ return null;
+ }
+
+ public boolean isSelected() {
+ return selected;
+ }
+
+ public void setIcon(Image icon) {
+ // Do nothing
+ }
+
+ public void setSelected(boolean b) {
+ this.selected = b;
+ ((LineBorder) getBorder()).setWidth(b ? 3 : 1);
+ }
+
+ public void setText(String text) {
+ // Do nothing
+ }
+
+ public IFigure getPane() {
+ return pane;
+ }
+
+}
Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/editpart/figure/ElementFigure.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/editpart/figure/ElementFigure.java 2008-04-06 23:49:40 UTC (rev 19433)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/editpart/figure/ElementFigure.java 2008-04-06 23:51:00 UTC (rev 19434)
@@ -15,9 +15,8 @@
* limitations under the License.
*/
+import org.eclipse.draw2d.IFigure;
import org.eclipse.draw2d.Label;
-import org.eclipse.draw2d.Panel;
-import org.eclipse.draw2d.geometry.Rectangle;
import org.eclipse.swt.graphics.Image;
/**
@@ -25,45 +24,16 @@
*
* @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
*/
-public abstract class ElementFigure extends Panel {
+public interface ElementFigure extends IFigure {
- private boolean selected;
- private Label label = new Label();
-
- public ElementFigure() {
- add(label);
- customizeFigure();
- setSize(80, 40);
- }
+ void setIcon(Image icon);
- public void setIcon(Image icon) {
- label.setIcon(icon);
- }
+ void setText(String text);
- public void setText(String text) {
- label.setText(text);
- }
+ void setSelected(boolean b);
- public Label getLabel() {
- return label;
- }
+ boolean isSelected();
- public void setBounds(Rectangle bounds) {
- super.setBounds(bounds);
- label.setBounds(bounds);
- }
-
- protected abstract void customizeFigure();
-
- public void setSelected(boolean b) {
- selected = b;
- }
-
- public boolean isSelected() {
- return selected;
- }
+ Label getLabel();
- public void setFocus(boolean b) {
- repaint();
- }
}
Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/editpart/work/SampleCustomEditor.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/editpart/work/SampleCustomEditor.java 2008-04-06 23:49:40 UTC (rev 19433)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/editpart/work/SampleCustomEditor.java 2008-04-06 23:51:00 UTC (rev 19434)
@@ -8,6 +8,7 @@
import org.drools.process.core.ParameterDefinition;
import org.drools.process.core.Work;
import org.drools.process.core.WorkDefinition;
+import org.drools.process.core.WorkEditor;
import org.drools.process.core.impl.WorkImpl;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
Deleted: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/editpart/work/WorkEditor.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/editpart/work/WorkEditor.java 2008-04-06 23:49:40 UTC (rev 19433)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/editpart/work/WorkEditor.java 2008-04-06 23:51:00 UTC (rev 19434)
@@ -1,16 +0,0 @@
-package org.drools.eclipse.flow.common.editor.editpart.work;
-
-import org.drools.process.core.Work;
-import org.drools.process.core.WorkDefinition;
-
-public interface WorkEditor {
-
- void setWorkDefinition(WorkDefinition definition);
-
- void setWork(Work work);
-
- void show();
-
- Work getWork();
-
-}
Copied: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/policy/ElementContainerLayoutEditPolicy.java (from rev 18471, labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/policy/ProcessLayoutEditPolicy.java)
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/policy/ElementContainerLayoutEditPolicy.java (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/policy/ElementContainerLayoutEditPolicy.java 2008-04-06 23:51:00 UTC (rev 19434)
@@ -0,0 +1,60 @@
+package org.drools.eclipse.flow.common.editor.policy;
+/*
+ * Copyright 2005 JBoss Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import org.drools.eclipse.flow.common.editor.core.ElementContainer;
+import org.drools.eclipse.flow.common.editor.core.ElementWrapper;
+import org.drools.eclipse.flow.common.editor.core.command.AddElementCommand;
+import org.drools.eclipse.flow.common.editor.core.command.ChangeConstraintCommand;
+import org.eclipse.draw2d.geometry.Rectangle;
+import org.eclipse.gef.EditPart;
+import org.eclipse.gef.Request;
+import org.eclipse.gef.commands.Command;
+import org.eclipse.gef.editpolicies.XYLayoutEditPolicy;
+import org.eclipse.gef.requests.CreateRequest;
+
+/**
+ * Policy for performing layout of a process.
+ *
+ * @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
+ */
+public class ElementContainerLayoutEditPolicy extends XYLayoutEditPolicy {
+
+ protected Command getCreateCommand(CreateRequest request) {
+ AddElementCommand command = new AddElementCommand();
+ command.setParent((ElementContainer) getHost().getModel());
+ ElementWrapper element = (ElementWrapper) request.getNewObject();
+ element.setConstraint((Rectangle) getConstraintFor(request));
+ command.setChild(element);
+ return command;
+ }
+
+ protected Command getDeleteDependantCommand(Request request) {
+ return null;
+ }
+
+ protected Command createAddCommand(EditPart child, Object constraint) {
+ // TODO this is needed to allow dragging of elements from one container to another
+ return null;
+ }
+
+ protected Command createChangeConstraintCommand(EditPart child, Object constraint) {
+ ChangeConstraintCommand command = new ChangeConstraintCommand();
+ command.setElement((ElementWrapper) child.getModel());
+ command.setConstraint((Rectangle)constraint);
+ return command;
+ }
+}
Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/policy/ElementEditPolicy.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/policy/ElementEditPolicy.java 2008-04-06 23:49:40 UTC (rev 19433)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/policy/ElementEditPolicy.java 2008-04-06 23:51:00 UTC (rev 19434)
@@ -15,6 +15,7 @@
* limitations under the License.
*/
+import org.drools.eclipse.flow.common.editor.core.ElementContainer;
import org.drools.eclipse.flow.common.editor.core.ElementWrapper;
import org.drools.eclipse.flow.common.editor.core.ProcessWrapper;
import org.drools.eclipse.flow.common.editor.core.command.DeleteElementCommand;
@@ -30,7 +31,7 @@
public class ElementEditPolicy extends ComponentEditPolicy {
protected Command createDeleteCommand(GroupRequest deleteRequest) {
- ProcessWrapper parent = (ProcessWrapper) getHost().getParent().getModel();
+ ElementContainer parent = (ElementContainer) getHost().getParent().getModel();
DeleteElementCommand deleteCmd = new DeleteElementCommand();
deleteCmd.setParent(parent);
deleteCmd.setChild((ElementWrapper) (getHost().getModel()));
Deleted: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/policy/ProcessLayoutEditPolicy.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/policy/ProcessLayoutEditPolicy.java 2008-04-06 23:49:40 UTC (rev 19433)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/policy/ProcessLayoutEditPolicy.java 2008-04-06 23:51:00 UTC (rev 19434)
@@ -1,63 +0,0 @@
-package org.drools.eclipse.flow.common.editor.policy;
-/*
- * Copyright 2005 JBoss Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import org.drools.eclipse.flow.common.editor.core.ElementWrapper;
-import org.drools.eclipse.flow.common.editor.core.ProcessWrapper;
-import org.drools.eclipse.flow.common.editor.core.command.AddElementCommand;
-import org.drools.eclipse.flow.common.editor.core.command.ChangeConstraintCommand;
-import org.eclipse.draw2d.geometry.Rectangle;
-import org.eclipse.gef.EditPart;
-import org.eclipse.gef.Request;
-import org.eclipse.gef.commands.Command;
-import org.eclipse.gef.editpolicies.XYLayoutEditPolicy;
-import org.eclipse.gef.requests.CreateRequest;
-
-/**
- * Policy for performing layout of a process.
- *
- * @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
- */
-public class ProcessLayoutEditPolicy extends XYLayoutEditPolicy {
-
- protected Command getCreateCommand(CreateRequest request) {
- AddElementCommand command = new AddElementCommand();
- command.setParent((ProcessWrapper) getHost().getModel());
- ElementWrapper element = (ElementWrapper) request.getNewObject();
- element.setConstraint((Rectangle) getConstraintFor(request));
- command.setChild(element);
- return command;
- }
-
- protected Command getDeleteDependantCommand(Request request) {
- return null;
- }
-
- protected Command createAddCommand(EditPart child, Object constraint) {
- ElementWrapper element = (ElementWrapper) child.getModel();
- AddElementCommand add = new AddElementCommand();
- add.setParent((ProcessWrapper) getHost().getModel());
- add.setChild(element);
- return add;
- }
-
- protected Command createChangeConstraintCommand(EditPart child, Object constraint) {
- ChangeConstraintCommand command = new ChangeConstraintCommand();
- command.setElement((ElementWrapper) child.getModel());
- command.setConstraint((Rectangle)constraint);
- return command;
- }
-}
Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/view/property/ProcessLabelProvider.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/view/property/ProcessLabelProvider.java (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/view/property/ProcessLabelProvider.java 2008-04-06 23:51:00 UTC (rev 19434)
@@ -0,0 +1,44 @@
+package org.drools.eclipse.flow.common.view.property;
+
+import org.drools.eclipse.flow.common.editor.editpart.ElementConnectionEditPart;
+import org.drools.eclipse.flow.common.editor.editpart.ElementEditPart;
+import org.drools.eclipse.flow.common.editor.editpart.ProcessEditPart;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.ILabelProviderListener;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.swt.graphics.Image;
+
+public class ProcessLabelProvider implements ILabelProvider {
+
+ public Image getImage(Object element) {
+ return null;
+ }
+
+ public String getText(Object element) {
+ if (element instanceof IStructuredSelection) {
+ element = ((IStructuredSelection)element).getFirstElement();
+ }
+ if (element instanceof ElementEditPart) {
+ return "Element " + ((ElementEditPart) element).getElementWrapper().getName();
+ } else if (element instanceof ProcessEditPart) {
+ return "Process " + ((ProcessEditPart) element).getProcessWrapper().getName();
+ } else if (element instanceof ElementConnectionEditPart) {
+ element = ((ElementConnectionEditPart) element).getModel().toString();
+ }
+ return element.toString();
+ }
+
+ public boolean isLabelProperty(Object element, String property) {
+ return false;
+ }
+
+ public void addListener(ILabelProviderListener listener) {
+ }
+
+ public void removeListener(ILabelProviderListener listener) {
+ }
+
+ public void dispose() {
+ }
+
+}
Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/view/property/ProcessTypeMapper.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/view/property/ProcessTypeMapper.java (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/view/property/ProcessTypeMapper.java 2008-04-06 23:51:00 UTC (rev 19434)
@@ -0,0 +1,26 @@
+package org.drools.eclipse.flow.common.view.property;
+
+import org.drools.eclipse.flow.common.editor.editpart.ElementConnectionEditPart;
+import org.drools.eclipse.flow.common.editor.editpart.ElementEditPart;
+import org.drools.eclipse.flow.common.editor.editpart.ProcessEditPart;
+import org.eclipse.ui.views.properties.tabbed.ITypeMapper;
+
+public class ProcessTypeMapper implements ITypeMapper {
+
+ public ProcessTypeMapper() {
+ }
+
+ public Class<?> mapType(Object object) {
+ if (object instanceof ElementEditPart) {
+ return ((ElementEditPart) object).getModel().getClass();
+ }
+ if (object instanceof ProcessEditPart) {
+ return ((ProcessEditPart) object).getModel().getClass();
+ }
+ if (object instanceof ElementConnectionEditPart) {
+ return ((ElementConnectionEditPart) object).getModel().getClass();
+ }
+ return object.getClass();
+ }
+
+}
Added: 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 (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/AbstractNodeWrapper.java 2008-04-06 23:51:00 UTC (rev 19434)
@@ -0,0 +1,71 @@
+package org.drools.eclipse.flow.ruleflow.core;
+/*
+ * Copyright 2005 JBoss Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import org.drools.eclipse.flow.common.editor.core.DefaultElementWrapper;
+import org.drools.workflow.core.Node;
+import org.eclipse.draw2d.geometry.Rectangle;
+
+/**
+ * Wrapper for a node.
+ *
+ * @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
+ */
+public abstract class AbstractNodeWrapper extends DefaultElementWrapper implements NodeWrapper {
+
+ public void setNode(Node node) {
+ setElement(node);
+ }
+
+ public Node getNode() {
+ return (Node) getElement();
+ }
+
+ public String getId() {
+ long id = getNode().getId();
+ return id == -1 ? null : getNode().getId() + "";
+ }
+
+ public String getName() {
+ return getNode().getName();
+ }
+
+ public void internalSetName(String name) {
+ getNode().setName(name);
+ notifyListeners(CHANGE_NAME);
+ }
+
+ protected void internalSetConstraint(Rectangle constraint) {
+ Node node = getNode();
+ node.setMetaData("x", constraint.x);
+ node.setMetaData("y", constraint.y);
+ node.setMetaData("width", constraint.width);
+ node.setMetaData("height", constraint.height);
+ }
+
+ public Rectangle internalGetConstraint() {
+ Node node = getNode();
+ Integer x = (Integer) node.getMetaData("x");
+ Integer y = (Integer) node.getMetaData("y");
+ Integer width = (Integer) node.getMetaData("width");
+ Integer height = (Integer) node.getMetaData("height");
+ return new Rectangle(
+ x == null ? 0 : x,
+ y == null ? 0 : y,
+ width == null ? -1 : width,
+ height == null ? -1 : height);
+ }
+}
Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/ActionWrapper.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/ActionWrapper.java 2008-04-06 23:49:40 UTC (rev 19433)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/ActionWrapper.java 2008-04-06 23:51:00 UTC (rev 19434)
@@ -18,6 +18,7 @@
import org.drools.eclipse.flow.common.editor.core.DefaultElementWrapper;
import org.drools.eclipse.flow.common.editor.core.ElementConnection;
import org.drools.eclipse.flow.ruleflow.view.property.action.ActionPropertyDescriptor;
+import org.drools.workflow.core.WorkflowProcess;
import org.drools.workflow.core.node.ActionNode;
import org.eclipse.ui.views.properties.IPropertyDescriptor;
@@ -26,7 +27,7 @@
*
* @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
*/
-public class ActionWrapper extends NodeWrapper {
+public class ActionWrapper extends AbstractNodeWrapper {
private static final long serialVersionUID = -3618183280436588589L;
@@ -43,7 +44,7 @@
descriptors = new IPropertyDescriptor[DefaultElementWrapper.descriptors.length + 1];
System.arraycopy(DefaultElementWrapper.descriptors, 0, descriptors, 0, DefaultElementWrapper.descriptors.length);
descriptors[descriptors.length - 1] =
- new ActionPropertyDescriptor(ACTION, "Action", getActionNode(), ((RuleFlowProcessWrapper) getParent()).getRuleFlowProcess());
+ new ActionPropertyDescriptor(ACTION, "Action", getActionNode(), (WorkflowProcess) getParent().getProcessWrapper().getProcess());
}
public ActionNode getActionNode() {
Added: 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 (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/CompositeNodeWrapper.java 2008-04-06 23:51:00 UTC (rev 19434)
@@ -0,0 +1,82 @@
+package org.drools.eclipse.flow.ruleflow.core;
+
+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.Node;
+import org.drools.workflow.core.node.CompositeNode;
+import org.eclipse.draw2d.geometry.Rectangle;
+
+public 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);
+ }
+
+ public Node getNode() {
+ return (Node) getElement();
+ }
+
+ public String getId() {
+ long id = getNode().getId();
+ return id == -1 ? null : getNode().getId() + "";
+ }
+
+ public String getName() {
+ return getNode().getName();
+ }
+
+ public void internalSetName(String name) {
+ getNode().setName(name);
+ notifyListeners(CHANGE_NAME);
+ }
+
+ protected void internalSetConstraint(Rectangle constraint) {
+ Node node = getNode();
+ node.setMetaData("x", constraint.x);
+ node.setMetaData("y", constraint.y);
+ node.setMetaData("width", constraint.width);
+ node.setMetaData("height", constraint.height);
+ }
+
+ public Rectangle internalGetConstraint() {
+ Node node = getNode();
+ Integer x = (Integer) node.getMetaData("x");
+ Integer y = (Integer) node.getMetaData("y");
+ Integer width = (Integer) node.getMetaData("width");
+ Integer height = (Integer) node.getMetaData("height");
+ return new Rectangle(
+ x == null ? 0 : x,
+ y == null ? 0 : y,
+ width == null ? -1 : width,
+ height == null ? -1 : height);
+ }
+
+ public CompositeNode getCompositeNode() {
+ return (CompositeNode) getNode();
+ }
+
+ public boolean acceptsIncomingConnection(ElementConnection connection) {
+ return getIncomingConnections().isEmpty();
+ }
+
+ public boolean acceptsOutgoingConnection(ElementConnection connection) {
+ return getOutgoingConnections().isEmpty();
+ }
+
+ protected void internalAddElement(ElementWrapper element) {
+ getCompositeNode().addNode(((NodeWrapper) element).getNode());
+ }
+
+ protected void internalRemoveElement(ElementWrapper element) {
+ getCompositeNode().removeNode(((NodeWrapper) element).getNode());
+ }
+
+}
Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/ConnectionWrapper.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/ConnectionWrapper.java 2008-04-06 23:49:40 UTC (rev 19433)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/ConnectionWrapper.java 2008-04-06 23:51:00 UTC (rev 19434)
@@ -15,10 +15,16 @@
* limitations under the License.
*/
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
import org.drools.eclipse.flow.common.editor.core.ElementConnection;
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.impl.ConnectionImpl;
+import org.eclipse.draw2d.geometry.Point;
/**
* Wrapper for a connection.
@@ -34,10 +40,14 @@
public ConnectionWrapper() {
}
- public ConnectionWrapper(NodeWrapper source, NodeWrapper target) {
- super(source, target);
- }
+ public Connection getConnection() {
+ return connection;
+ }
+ public void localSetConnection(Connection connection) {
+ this.connection = (ConnectionImpl) connection;
+ }
+
public void disconnect() {
super.disconnect();
connection.terminate();
@@ -50,4 +60,40 @@
Node to = ((NodeWrapper) getTarget()).getNode();
connection = new ConnectionImpl(from, Node.CONNECTION_DEFAULT_TYPE, to, Node.CONNECTION_DEFAULT_TYPE);
}
+
+ protected List<Point> internalGetBendpoints() {
+ return (List<Point>) stringToBendpoints((String) connection.getMetaData("bendpoints"));
+ }
+
+ protected void internalSetBendpoints(List<Point> bendpoints) {
+ connection.setMetaData("bendpoints", bendpointsToString(bendpoints));
+ }
+
+ private String bendpointsToString(List<Point> bendpoints) {
+ if (bendpoints == null) {
+ return null;
+ }
+ String result = "[";
+ for (Iterator<Point> iterator = bendpoints.iterator(); iterator.hasNext(); ) {
+ Point point = iterator.next();
+ result += point.x + "," + point.y + (iterator.hasNext() ? ";" : "");
+ }
+ result += "]";
+ return result;
+ }
+
+ private List<Point> stringToBendpoints(String s) {
+ List<Point> result = new ArrayList<Point>();
+ if (s == null) {
+ return result;
+ }
+ s = s.substring(1, s.length() - 1);
+ String[] bendpoints = s.split(";");
+ for (String bendpoint: bendpoints) {
+ String[] xy = bendpoint.split(",");
+ result.add(new Point(new Integer(xy[0]), new Integer(xy[1])));
+ }
+ return result;
+ }
+
}
Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/ConnectionWrapperFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/ConnectionWrapperFactory.java 2008-04-06 23:49:40 UTC (rev 19433)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/ConnectionWrapperFactory.java 2008-04-06 23:51:00 UTC (rev 19434)
@@ -23,14 +23,10 @@
*
* @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
*/
-public class ConnectionWrapperFactory extends ElementConnectionFactory {
+public class ConnectionWrapperFactory implements ElementConnectionFactory {
- public ConnectionWrapperFactory() {
- }
-
public ElementConnection createElementConnection() {
- ConnectionWrapper connection = new ConnectionWrapper();
- return connection;
+ return new ConnectionWrapper();
}
}
Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/DefaultNodeWrapper.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/DefaultNodeWrapper.java (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/DefaultNodeWrapper.java 2008-04-06 23:51:00 UTC (rev 19434)
@@ -0,0 +1,34 @@
+package org.drools.eclipse.flow.ruleflow.core;
+
+import org.drools.eclipse.DroolsEclipsePlugin;
+import org.drools.eclipse.flow.common.editor.core.ElementConnection;
+import org.drools.workflow.core.Node;
+import org.drools.workflow.core.NodeExtension;
+
+public class DefaultNodeWrapper extends AbstractNodeWrapper {
+
+ private static final long serialVersionUID = 400L;
+
+ public DefaultNodeWrapper(String nodeClassName) {
+ try {
+ Class<?> nodeClass = Class.forName(nodeClassName);
+ Node node = (Node) nodeClass.newInstance();
+ if (node instanceof NodeExtension) {
+ NodeExtension nodeExtension = (NodeExtension) node;
+ node.setName(nodeExtension.getDefaultName());
+ }
+ setNode(node);
+ } catch (Throwable t) {
+ DroolsEclipsePlugin.log(t);
+ }
+ }
+
+ public boolean acceptsIncomingConnection(ElementConnection connection) {
+ return getIncomingConnections().isEmpty();
+ }
+
+ public boolean acceptsOutgoingConnection(ElementConnection connection) {
+ return getOutgoingConnections().isEmpty();
+ }
+
+}
Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/EndNodeWrapper.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/EndNodeWrapper.java 2008-04-06 23:49:40 UTC (rev 19433)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/EndNodeWrapper.java 2008-04-06 23:51:00 UTC (rev 19434)
@@ -23,7 +23,7 @@
*
* @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
*/
-public class EndNodeWrapper extends NodeWrapper {
+public class EndNodeWrapper extends AbstractNodeWrapper {
private static final long serialVersionUID = 400L;
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-04-06 23:49:40 UTC (rev 19433)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/JoinWrapper.java 2008-04-06 23:51:00 UTC (rev 19434)
@@ -17,7 +17,6 @@
import org.drools.eclipse.flow.common.editor.core.DefaultElementWrapper;
import org.drools.eclipse.flow.common.editor.core.ElementConnection;
-import org.drools.workflow.core.Connection;
import org.drools.workflow.core.node.Join;
import org.eclipse.ui.views.properties.ComboBoxPropertyDescriptor;
import org.eclipse.ui.views.properties.IPropertyDescriptor;
@@ -27,7 +26,7 @@
*
* @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
*/
-public class JoinWrapper extends NodeWrapper {
+public class JoinWrapper extends AbstractNodeWrapper {
private static final long serialVersionUID = 400L;
private static IPropertyDescriptor[] descriptors;
Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/MilestoneWrapper.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/MilestoneWrapper.java 2008-04-06 23:49:40 UTC (rev 19433)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/MilestoneWrapper.java 2008-04-06 23:51:00 UTC (rev 19434)
@@ -18,6 +18,7 @@
import org.drools.eclipse.flow.common.editor.core.DefaultElementWrapper;
import org.drools.eclipse.flow.common.editor.core.ElementConnection;
import org.drools.eclipse.flow.ruleflow.view.property.constraint.MilestoneConstraintPropertyDescriptor;
+import org.drools.workflow.core.WorkflowProcess;
import org.drools.workflow.core.node.MilestoneNode;
import org.eclipse.ui.views.properties.IPropertyDescriptor;
@@ -26,7 +27,7 @@
*
* @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
*/
-public class MilestoneWrapper extends NodeWrapper {
+public class MilestoneWrapper extends AbstractNodeWrapper {
private static final long serialVersionUID = -5976489437109982927L;
private IPropertyDescriptor[] descriptors;
@@ -42,7 +43,7 @@
descriptors = new IPropertyDescriptor[DefaultElementWrapper.descriptors.length + 1];
System.arraycopy(DefaultElementWrapper.descriptors, 0, descriptors, 0, DefaultElementWrapper.descriptors.length);
descriptors[descriptors.length - 1] =
- new MilestoneConstraintPropertyDescriptor(CONSTRAINT, "Constraint", getMilestoneNode(), ((RuleFlowProcessWrapper) getParent()).getRuleFlowProcess());
+ new MilestoneConstraintPropertyDescriptor(CONSTRAINT, "Constraint", getMilestoneNode(), (WorkflowProcess) getParent().getProcessWrapper().getProcess());
}
public MilestoneNode getMilestoneNode() {
Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/NodeWrapper.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/NodeWrapper.java 2008-04-06 23:49:40 UTC (rev 19433)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/NodeWrapper.java 2008-04-06 23:51:00 UTC (rev 19434)
@@ -1,4 +1,8 @@
package org.drools.eclipse.flow.ruleflow.core;
+
+import org.drools.eclipse.flow.common.editor.core.ElementWrapper;
+import org.drools.workflow.core.Node;
+
/*
* Copyright 2005 JBoss Inc
*
@@ -15,36 +19,16 @@
* limitations under the License.
*/
-import org.drools.eclipse.flow.common.editor.core.DefaultElementWrapper;
-import org.drools.workflow.core.Node;
/**
* Wrapper for a node.
*
* @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
*/
-public abstract class NodeWrapper extends DefaultElementWrapper {
+public interface NodeWrapper extends ElementWrapper {
- protected void setNode(Node node) {
- setElement(node);
- }
+ void setNode(Node node);
- public Node getNode() {
- return (Node) getElement();
- }
+ Node getNode();
- public String getId() {
- long id = getNode().getId();
- return id == -1 ? null : getNode().getId() + "";
- }
-
- public String getName() {
- return getNode().getName();
- }
-
- public void internalSetName(String name) {
- getNode().setName(name);
- notifyListeners(CHANGE_NAME);
- }
-
}
Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/RuleFlowProcessWrapper.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/RuleFlowProcessWrapper.java 2008-04-06 23:49:40 UTC (rev 19433)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/RuleFlowProcessWrapper.java 2008-04-06 23:51:00 UTC (rev 19434)
@@ -19,6 +19,7 @@
import org.drools.eclipse.flow.common.editor.core.ProcessWrapper;
import org.drools.process.core.Process;
import org.drools.ruleflow.core.RuleFlowProcess;
+import org.drools.workflow.core.Node;
/**
* Wrapper for a RuleFlow process.
@@ -38,7 +39,15 @@
}
protected void internalAddElement(ElementWrapper element) {
- getRuleFlowProcess().addNode(((NodeWrapper) element).getNode());
+ Node node = ((NodeWrapper) element).getNode();
+ long id = 0;
+ for (Node n: getRuleFlowProcess().getNodes()) {
+ if (n.getId() > id) {
+ id = n.getId();
+ }
+ }
+ node.setId(++id);
+ getRuleFlowProcess().addNode(node);
}
protected void internalRemoveElement(ElementWrapper element) {
Added: 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 (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/RuleFlowWrapperBuilder.java 2008-04-06 23:51:00 UTC (rev 19434)
@@ -0,0 +1,117 @@
+package org.drools.eclipse.flow.ruleflow.core;
+
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.drools.eclipse.WorkItemDefinitions;
+import org.drools.eclipse.flow.common.editor.core.ElementContainer;
+import org.drools.process.core.Work;
+import org.drools.process.core.WorkDefinition;
+import org.drools.ruleflow.core.RuleFlowProcess;
+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.CompositeNode;
+import org.drools.workflow.core.node.EndNode;
+import org.drools.workflow.core.node.Join;
+import org.drools.workflow.core.node.MilestoneNode;
+import org.drools.workflow.core.node.RuleSetNode;
+import org.drools.workflow.core.node.Split;
+import org.drools.workflow.core.node.StartNode;
+import org.drools.workflow.core.node.SubProcessNode;
+import org.drools.workflow.core.node.TimerNode;
+import org.drools.workflow.core.node.WorkItemNode;
+import org.eclipse.core.resources.IResource;
+
+public class RuleFlowWrapperBuilder {
+
+ public static RuleFlowProcessWrapper getProcessWrapper(RuleFlowProcess process, IResource resource) {
+ if (process == null) {
+ return null;
+ }
+ RuleFlowProcessWrapper processWrapper = new RuleFlowProcessWrapper();
+ processWrapper.localSetProcess(process);
+ Set<Node> nodes = new HashSet<Node>();
+ nodes.addAll(Arrays.asList(process.getNodes()));
+ Set<Connection> connections = new HashSet<Connection>();
+ processNodes(nodes, connections, processWrapper, resource);
+ return processWrapper;
+ }
+
+ private static void processNodes(Set<Node> nodes, Set<Connection> connections, ElementContainer container, IResource resource) {
+ Map<Node, NodeWrapper> nodeWrappers = new HashMap<Node, NodeWrapper>();
+ for (Node node: nodes) {
+ NodeWrapper nodeWrapper = getNodeWrapper(node, resource);
+ nodeWrapper.setNode(node);
+ nodeWrapper.setParent(container);
+ container.localAddElement(nodeWrapper);
+ nodeWrappers.put(node, nodeWrapper);
+ for (List<Connection> inConnections: node.getIncomingConnections().values()) {
+ for (Connection connection: inConnections) {
+ connections.add(connection);
+ }
+ }
+ for (List<Connection> outConnections: node.getOutgoingConnections().values()) {
+ for (Connection connection: outConnections) {
+ connections.add(connection);
+ }
+ }
+ }
+ for (Connection connection: connections) {
+ ConnectionWrapper connectionWrapper = new ConnectionWrapper();
+ connectionWrapper.localSetConnection(connection);
+ connectionWrapper.localSetBendpoints(null);
+ NodeWrapper from = nodeWrappers.get(connection.getFrom());
+ connectionWrapper.localSetSource(from);
+ from.localAddOutgoingConnection(connectionWrapper);
+ NodeWrapper to = nodeWrappers.get(connection.getTo());
+ connectionWrapper.localSetTarget(to);
+ to.localAddIncomingConnection(connectionWrapper);
+ }
+ }
+
+ private static NodeWrapper getNodeWrapper(Node node, IResource resource) {
+ if (node instanceof StartNode) {
+ return new StartNodeWrapper();
+ } else if (node instanceof EndNode) {
+ return new EndNodeWrapper();
+ } else if (node instanceof ActionNode) {
+ return new ActionWrapper();
+ } else if (node instanceof RuleSetNode) {
+ return new RuleSetNodeWrapper();
+ } else if (node instanceof SubProcessNode) {
+ return new SubFlowWrapper();
+ } else if (node instanceof CompositeNode) {
+ return new CompositeNodeWrapper();
+ } else if (node instanceof Join) {
+ return new JoinWrapper();
+ } else if (node instanceof Split) {
+ return new SplitWrapper();
+ } else if (node instanceof MilestoneNode) {
+ return new MilestoneWrapper();
+ } else if (node instanceof TimerNode) {
+ return new TimerWrapper();
+ } else if (node instanceof WorkItemNode) {
+ WorkItemWrapper workItemWrapper = new WorkItemWrapper();
+ Work work = ((WorkItemNode) node).getWork();
+ if (work != null && work.getName() != null) {
+ WorkDefinition workDefinition =
+ WorkItemDefinitions.getWorkDefinitions(resource)
+ .get(work.getName());
+ if (workDefinition == null) {
+ throw new IllegalArgumentException(
+ "Could not find work definition for work " + work.getName());
+ }
+ workItemWrapper.setWorkDefinition(workDefinition);
+ }
+ return workItemWrapper;
+ }
+ throw new IllegalArgumentException(
+ "Could not find node wrapper for node " + node);
+ }
+
+}
Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/RuleSetNodeWrapper.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/RuleSetNodeWrapper.java 2008-04-06 23:49:40 UTC (rev 19433)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/RuleSetNodeWrapper.java 2008-04-06 23:51:00 UTC (rev 19434)
@@ -26,7 +26,7 @@
*
* @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
*/
-public class RuleSetNodeWrapper extends NodeWrapper {
+public class RuleSetNodeWrapper extends AbstractNodeWrapper {
private static final long serialVersionUID = 400L;
private static IPropertyDescriptor[] descriptors;
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-04-06 23:49:40 UTC (rev 19433)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/SplitWrapper.java 2008-04-06 23:51:00 UTC (rev 19434)
@@ -26,6 +26,7 @@
import org.drools.eclipse.flow.ruleflow.view.property.constraint.ConstraintsPropertyDescriptor;
import org.drools.workflow.core.Connection;
import org.drools.workflow.core.Constraint;
+import org.drools.workflow.core.WorkflowProcess;
import org.drools.workflow.core.node.Split;
import org.eclipse.ui.views.properties.ComboBoxPropertyDescriptor;
import org.eclipse.ui.views.properties.IPropertyDescriptor;
@@ -35,7 +36,7 @@
*
* @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
*/
-public class SplitWrapper extends NodeWrapper {
+public class SplitWrapper extends AbstractNodeWrapper {
public static final String TYPE = "type";
public static final String CONSTRAINTS = "constraints";
@@ -75,7 +76,7 @@
IPropertyDescriptor[] result = new IPropertyDescriptor[descriptors.length + 1];
System.arraycopy(descriptors, 0, result, 0, descriptors.length);
result[descriptors.length] =
- new ConstraintsPropertyDescriptor(CONSTRAINTS, "Constraints", getSplit(), ((RuleFlowProcessWrapper) getParent()).getRuleFlowProcess());
+ new ConstraintsPropertyDescriptor(CONSTRAINTS, "Constraints", getSplit(), (WorkflowProcess) getParent().getProcessWrapper().getProcess());
return result;
}
return descriptors;
@@ -88,7 +89,8 @@
if (CONSTRAINTS.equals(id)) {
return getSplit().getType() == Split.TYPE_XOR
|| getSplit().getType() == Split.TYPE_OR
- ? new MyHashMap(getSplit().getConstraints()) : new MyHashMap();
+ ? new MyHashMap<Split.ConnectionRef, Constraint>(getSplit().getConstraints())
+ : new MyHashMap<Split.ConnectionRef, Constraint>();
}
return super.getPropertyValue(id);
}
@@ -97,8 +99,7 @@
if (TYPE.equals(id)) {
getSplit().setType(Split.TYPE_UNDEFINED);
} else if (CONSTRAINTS.equals(id)) {
- for (Iterator it = getSplit().getDefaultOutgoingConnections().iterator(); it.hasNext(); ) {
- Connection connection = (Connection) it.next();
+ for (Connection connection: getSplit().getDefaultOutgoingConnections()) {
getSplit().setConstraint(connection, null);
}
} else {
@@ -110,10 +111,21 @@
if (TYPE.equals(id)) {
getSplit().setType(((Integer) value).intValue());
} else if (CONSTRAINTS.equals(id)) {
- Iterator iterator = ((Map) value).entrySet().iterator();
+ Iterator<Map.Entry<Split.ConnectionRef, Constraint>> iterator = ((Map<Split.ConnectionRef, Constraint>) value).entrySet().iterator();
while (iterator.hasNext()) {
- Map.Entry element = (Map.Entry) iterator.next();
- getSplit().setConstraint((Connection) element.getKey(), (Constraint) element.getValue());
+ Map.Entry<Split.ConnectionRef, Constraint> element = iterator.next();
+ Split.ConnectionRef connectionRef = element.getKey();
+ Connection outgoingConnection = null;
+ for (Connection out: getSplit().getDefaultOutgoingConnections()) {
+ if (out.getToType().equals(connectionRef.getToType())
+ && out.getTo().getId() == connectionRef.getNodeId()) {
+ outgoingConnection = out;
+ }
+ }
+ if (outgoingConnection == null) {
+ throw new IllegalArgumentException("Could not find outgoing connection");
+ }
+ getSplit().setConstraint(outgoingConnection, (Constraint) element.getValue());
}
} else {
super.setPropertyValue(id, value);
@@ -125,11 +137,11 @@
setDescriptors();
}
- public class MyHashMap extends HashMap {
+ public class MyHashMap<K, V> extends HashMap<K, V> {
private static final long serialVersionUID = -1748055291307174539L;
public MyHashMap() {
}
- public MyHashMap(Map map) {
+ public MyHashMap(Map<K, V> map) {
super(map);
}
public String toString() {
Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/StartNodeWrapper.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/StartNodeWrapper.java 2008-04-06 23:49:40 UTC (rev 19433)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/StartNodeWrapper.java 2008-04-06 23:51:00 UTC (rev 19434)
@@ -16,7 +16,6 @@
*/
import org.drools.eclipse.flow.common.editor.core.ElementConnection;
-import org.drools.workflow.core.Connection;
import org.drools.workflow.core.node.StartNode;
/**
@@ -24,7 +23,7 @@
*
* @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
*/
-public class StartNodeWrapper extends NodeWrapper {
+public class StartNodeWrapper extends AbstractNodeWrapper {
private static final long serialVersionUID = 400L;
Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/SubFlowWrapper.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/SubFlowWrapper.java 2008-04-06 23:49:40 UTC (rev 19433)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/SubFlowWrapper.java 2008-04-06 23:51:00 UTC (rev 19434)
@@ -27,7 +27,7 @@
*
* @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
*/
-public class SubFlowWrapper extends NodeWrapper {
+public class SubFlowWrapper extends AbstractNodeWrapper {
private static final long serialVersionUID = 3668348577732020324L;
private static IPropertyDescriptor[] descriptors;
Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/TimerWrapper.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/TimerWrapper.java (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/TimerWrapper.java 2008-04-06 23:51:00 UTC (rev 19434)
@@ -0,0 +1,119 @@
+package org.drools.eclipse.flow.ruleflow.core;
+/*
+ * Copyright 2005 JBoss Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import org.drools.eclipse.flow.common.editor.core.DefaultElementWrapper;
+import org.drools.eclipse.flow.common.editor.core.ElementConnection;
+import org.drools.process.core.timer.Timer;
+import org.drools.workflow.core.node.TimerNode;
+import org.eclipse.ui.views.properties.IPropertyDescriptor;
+import org.eclipse.ui.views.properties.TextPropertyDescriptor;
+
+/**
+ * Wrapper for a timer node.
+ *
+ * @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
+ */
+public class TimerWrapper extends AbstractNodeWrapper {
+
+ private static final long serialVersionUID = 400L;
+
+ private IPropertyDescriptor[] descriptors;
+
+ public static final String TIMER_DELAY = "TimerDelay";
+ public static final String TIMER_PERIOD = "TimerPeriod";
+
+ public TimerWrapper() {
+ setNode(new TimerNode());
+ getTimerNode().setName("Timer");
+ getTimerNode().setTimer(new Timer());
+ }
+
+ private void setDescriptors() {
+ descriptors = new IPropertyDescriptor[DefaultElementWrapper.descriptors.length + 2];
+ System.arraycopy(DefaultElementWrapper.descriptors, 0, descriptors, 0, DefaultElementWrapper.descriptors.length);
+ descriptors[descriptors.length - 2] =
+ new TextPropertyDescriptor(TIMER_DELAY, "Timer Delay");
+ descriptors[descriptors.length - 1] =
+ new TextPropertyDescriptor(TIMER_PERIOD, "Timer Period");
+ }
+
+ public TimerNode getTimerNode() {
+ return (TimerNode) getNode();
+ }
+
+ public IPropertyDescriptor[] getPropertyDescriptors() {
+ if (descriptors == null) {
+ setDescriptors();
+ }
+ return descriptors;
+ }
+
+ public boolean acceptsIncomingConnection(ElementConnection connection) {
+ return getIncomingConnections().isEmpty();
+ }
+
+ public boolean acceptsOutgoingConnection(ElementConnection connection) {
+ return getOutgoingConnections().isEmpty();
+ }
+
+ public Object getPropertyValue(Object id) {
+ Timer timer = getTimerNode().getTimer();
+ if (TIMER_DELAY.equals(id)) {
+ return timer == null ? "" : timer.getDelay() + "";
+ }
+ if (TIMER_PERIOD.equals(id)) {
+ return timer == null ? "" : timer.getPeriod() + "";
+ }
+ return super.getPropertyValue(id);
+ }
+
+ public void resetPropertyValue(Object id) {
+ Timer timer = getTimerNode().getTimer();
+ if (TIMER_DELAY.equals(id)) {
+ if (timer == null) {
+ timer = new Timer();
+ getTimerNode().setTimer(timer);
+ } else {
+ timer.setDelay(0);
+ }
+ } else if (TIMER_PERIOD.equals(id)) {
+ if (timer == null) {
+ timer = new Timer();
+ getTimerNode().setTimer(timer);
+ } else {
+ timer.setPeriod(0);
+ }
+ } else {
+ super.resetPropertyValue(id);
+ }
+ }
+
+ public void setPropertyValue(Object id, Object value) {
+ Timer timer = getTimerNode().getTimer();
+ if (TIMER_DELAY.equals(id)) {
+ if (timer == null) {
+ timer = new Timer();
+ getTimerNode().setTimer(timer);
+ }
+ timer.setDelay(new Long((String) value));
+ } else if (TIMER_PERIOD.equals(id)) {
+ timer.setPeriod(new Long((String) value));
+ } else {
+ super.setPropertyValue(id, value);
+ }
+ }
+}
Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/WorkItemWrapper.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/WorkItemWrapper.java 2008-04-06 23:49:40 UTC (rev 19433)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/WorkItemWrapper.java 2008-04-06 23:51:00 UTC (rev 19434)
@@ -15,30 +15,38 @@
* limitations under the License.
*/
-import java.util.Iterator;
+import java.util.HashMap;
+import java.util.Map;
import java.util.Set;
-import org.drools.eclipse.WorkItemDefinitions;
import org.drools.eclipse.flow.common.editor.core.DefaultElementWrapper;
import org.drools.eclipse.flow.common.editor.core.ElementConnection;
+import org.drools.eclipse.flow.ruleflow.view.property.workitem.WorkItemParameterMappingPropertyDescriptor;
+import org.drools.eclipse.flow.ruleflow.view.property.workitem.WorkItemResultMappingPropertyDescriptor;
import org.drools.process.core.ParameterDefinition;
import org.drools.process.core.Work;
import org.drools.process.core.WorkDefinition;
+import org.drools.process.core.impl.WorkImpl;
+import org.drools.workflow.core.Node;
import org.drools.workflow.core.node.WorkItemNode;
+import org.eclipse.ui.views.properties.ComboBoxPropertyDescriptor;
import org.eclipse.ui.views.properties.IPropertyDescriptor;
import org.eclipse.ui.views.properties.TextPropertyDescriptor;
/**
- * Wrapper for a task node.
+ * Wrapper for a work item node.
*
* @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
*/
-public class WorkItemWrapper extends NodeWrapper {
+public class WorkItemWrapper extends AbstractNodeWrapper {
- public static final String TASK = "Task";
+ public static final String WAIT_FOR_COMPLETION = "WaitForCompletion";
+ public static final String RESULT_MAPPING = "ResultMapping";
+ public static final String PARAMETER_MAPPING = "ParameterMapping";
- private static final long serialVersionUID = -3618183280436588589L;
+ private static final long serialVersionUID = 400L;
+ private WorkDefinition workDefinition;
private IPropertyDescriptor[] descriptors;
public WorkItemWrapper() {
@@ -49,16 +57,35 @@
return (WorkItemNode) getNode();
}
- private WorkDefinition getWorkDefinition() {
+ public void setNode(Node node) {
+ super.setNode(node);
+ if (this.workDefinition != null) {
+ Work work = getWorkItemNode().getWork();
+ if (work == null) {
+ work = new WorkImpl();
+ work.setName(workDefinition.getName());
+ getWorkItemNode().setWork(work);
+ }
+ work.setParameterDefinitions(workDefinition.getParameters());
+ }
+ }
+
+ public void setWorkDefinition(WorkDefinition workDefinition) {
+ this.workDefinition = workDefinition;
Work work = getWorkItemNode().getWork();
- if (work != null && work.getName() != null) {
- return WorkItemDefinitions.getWorkDefinition(work.getName());
+ if (work == null) {
+ work = new WorkImpl();
+ work.setName(workDefinition.getName());
+ getWorkItemNode().setWork(work);
}
- return null;
+ work.setParameterDefinitions(workDefinition.getParameters());
}
+ public WorkDefinition getWorkDefinition() {
+ return this.workDefinition;
+ }
+
private boolean workParameterExists(String parameterName) {
- WorkDefinition workDefinition = getWorkDefinition();
if (workDefinition != null) {
return workDefinition.getParameter(parameterName) != null;
}
@@ -66,17 +93,21 @@
}
private void setDescriptors() {
- WorkDefinition workDefinition = getWorkDefinition();
if (workDefinition != null) {
- Set parameters = workDefinition.getParameters();
- descriptors = new IPropertyDescriptor[DefaultElementWrapper.descriptors.length + parameters.size()];
+ Set<ParameterDefinition> parameters = workDefinition.getParameters();
+ descriptors = new IPropertyDescriptor[DefaultElementWrapper.descriptors.length + parameters.size() + 3];
System.arraycopy(DefaultElementWrapper.descriptors, 0, descriptors, 0, DefaultElementWrapper.descriptors.length);
int i = 0;
- for (Iterator iterator = parameters.iterator(); iterator.hasNext(); ) {
- ParameterDefinition def = (ParameterDefinition) iterator.next();
- descriptors[descriptors.length - parameters.size() + (i++)] =
+ for (ParameterDefinition def: parameters) {
+ descriptors[DefaultElementWrapper.descriptors.length + (i++)] =
new TextPropertyDescriptor(def.getName(), def.getName());
}
+ descriptors[descriptors.length - 3] =
+ new ComboBoxPropertyDescriptor(WAIT_FOR_COMPLETION, "Wait for completion", new String[] {"true", "false"});
+ descriptors[descriptors.length - 2] =
+ new WorkItemParameterMappingPropertyDescriptor(PARAMETER_MAPPING, "Parameter Mapping", getWorkItemNode());
+ descriptors[descriptors.length - 1] =
+ new WorkItemResultMappingPropertyDescriptor(RESULT_MAPPING, "Result Mapping", getWorkItemNode());
}
if (descriptors == null) {
descriptors = DefaultElementWrapper.descriptors;
@@ -99,7 +130,13 @@
}
public Object getPropertyValue(Object id) {
- if (id instanceof String) {
+ if (WAIT_FOR_COMPLETION.equals(id)) {
+ return getWorkItemNode().isWaitForCompletion() ? new Integer(0) : new Integer(1);
+ } else if (PARAMETER_MAPPING.equals(id)) {
+ return getWorkItemNode().getInMappings();
+ } else if (RESULT_MAPPING.equals(id)) {
+ return getWorkItemNode().getOutMappings();
+ } else if (id instanceof String) {
String name = (String) id;
if (workParameterExists(name)) {
Object value = getWorkItemNode().getWork().getParameter(name);
@@ -113,7 +150,13 @@
}
public void resetPropertyValue(Object id) {
- if (id instanceof String && workParameterExists((String) id)) {
+ if (WAIT_FOR_COMPLETION.equals(id)) {
+ getWorkItemNode().setWaitForCompletion(true);
+ } else if (PARAMETER_MAPPING.equals(id)) {
+ getWorkItemNode().setInMappings(new HashMap<String, String>());
+ } else if (RESULT_MAPPING.equals(id)) {
+ getWorkItemNode().setOutMappings(new HashMap<String, String>());
+ } else if (id instanceof String && workParameterExists((String) id)) {
getWorkItemNode().getWork().setParameter((String) id, null);
} else {
super.resetPropertyValue(id);
@@ -121,7 +164,13 @@
}
public void setPropertyValue(Object id, Object value) {
- if (id instanceof String && workParameterExists((String) id)) {
+ if (WAIT_FOR_COMPLETION.equals(id)) {
+ getWorkItemNode().setWaitForCompletion(((Integer) value).intValue() == 0);
+ } else if (PARAMETER_MAPPING.equals(id)) {
+ getWorkItemNode().setInMappings((Map<String, String>) value);
+ } else if (RESULT_MAPPING.equals(id)) {
+ getWorkItemNode().setOutMappings((Map<String, String>) value);
+ } else if (id instanceof String && workParameterExists((String) id)) {
getWorkItemNode().getWork().setParameter((String) id, value);
} else {
super.setPropertyValue(id, value);
Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/RuleFlowModelEditor.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/RuleFlowModelEditor.java 2008-04-06 23:49:40 UTC (rev 19433)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/RuleFlowModelEditor.java 2008-04-06 23:51:00 UTC (rev 19434)
@@ -16,18 +16,32 @@
*/
import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.List;
+import org.drools.compiler.PackageBuilderConfiguration;
import org.drools.eclipse.DroolsEclipsePlugin;
+import org.drools.eclipse.DroolsPluginImages;
+import org.drools.eclipse.WorkItemDefinitions;
+import org.drools.eclipse.builder.DroolsBuilder;
import org.drools.eclipse.flow.common.editor.GenericModelEditor;
import org.drools.eclipse.flow.ruleflow.core.RuleFlowProcessWrapper;
+import org.drools.eclipse.flow.ruleflow.core.RuleFlowWrapperBuilder;
import org.drools.eclipse.flow.ruleflow.core.StartNodeWrapper;
+import org.drools.eclipse.flow.ruleflow.core.WorkItemWrapper;
import org.drools.eclipse.flow.ruleflow.editor.editpart.RuleFlowEditPartFactory;
+import org.drools.eclipse.util.ProjectClassLoader;
+import org.drools.process.core.WorkDefinition;
+import org.drools.process.core.WorkDefinitionExtension;
+import org.drools.ruleflow.core.RuleFlowProcess;
+import org.drools.xml.XmlProcessReader;
+import org.drools.xml.XmlRuleFlowProcessDumper;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.CoreException;
@@ -35,14 +49,20 @@
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.draw2d.geometry.Rectangle;
import org.eclipse.gef.EditPartFactory;
+import org.eclipse.gef.palette.CombinedTemplateCreationEntry;
+import org.eclipse.gef.palette.PaletteDrawer;
import org.eclipse.gef.palette.PaletteRoot;
+import org.eclipse.gef.requests.SimpleFactory;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.JavaCore;
import org.eclipse.jface.dialogs.ProgressMonitorDialog;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IFileEditorInput;
import org.eclipse.ui.actions.WorkspaceModifyOperation;
import org.eclipse.ui.part.FileEditorInput;
-import com.thoughtworks.xstream.XStream;
-
/**
* Graphical editor for a RuleFlow.
*
@@ -51,7 +71,7 @@
public class RuleFlowModelEditor extends GenericModelEditor {
protected EditPartFactory createEditPartFactory() {
- return new RuleFlowEditPartFactory();
+ return new RuleFlowEditPartFactory(this);
}
protected PaletteRoot createPalette() {
@@ -73,25 +93,86 @@
return (RuleFlowProcessWrapper) getModel();
}
- protected void createOutputStream(OutputStream os) throws IOException {
- createOutputStream(os, true);
+ protected void setInput(IEditorInput input) {
+ super.setInput(input);
+ refreshPalette(((IFileEditorInput) input).getFile());
}
+
+ private void refreshPalette(IFile file) {
+ IProject project = getFile().getProject();
+ if (project != null) {
+ ClassLoader oldLoader = Thread.currentThread().getContextClassLoader();
+ ClassLoader newLoader = DroolsBuilder.class.getClassLoader();
+ try {
+ if (project.getNature("org.eclipse.jdt.core.javanature") != null) {
+ IJavaProject javaProject = JavaCore.create(project);
+ newLoader = ProjectClassLoader.getProjectClassLoader(javaProject);
+ }
+ try {
+ Thread.currentThread().setContextClassLoader(newLoader);
+ PaletteDrawer drawer = (PaletteDrawer) getPaletteRoot().getChildren().get(2);
+ List entries = new ArrayList();
+ for (final WorkDefinition workDefinition: WorkItemDefinitions.getWorkDefinitions(file).values()) {
+ final String label;
+ String description = workDefinition.getName();
+ String icon = null;
+ if (workDefinition instanceof WorkDefinitionExtension) {
+ WorkDefinitionExtension extension = (WorkDefinitionExtension) workDefinition;
+ label = extension.getDisplayName();
+ description = extension.getExplanationText();
+ icon = extension.getIcon();
+ } else {
+ label = workDefinition.getName();
+ }
+
+ URL iconUrl = null;
+ if (icon != null) {
+ iconUrl = newLoader.getResource(icon);
+ }
+ if (iconUrl == null) {
+ iconUrl = DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/action.gif");
+ }
+ CombinedTemplateCreationEntry combined = new CombinedTemplateCreationEntry(
+ label,
+ description,
+ WorkItemWrapper.class,
+ new SimpleFactory(WorkItemWrapper.class) {
+ public Object getNewObject() {
+ WorkItemWrapper workItemWrapper = (WorkItemWrapper) super.getNewObject();
+ workItemWrapper.setName(label);
+ workItemWrapper.setWorkDefinition(workDefinition);
+ return workItemWrapper;
+ }
+ },
+ ImageDescriptor.createFromURL(iconUrl),
+ ImageDescriptor.createFromURL(iconUrl)
+ );
+ entries.add(combined);
+ }
+ drawer.setChildren(entries);
+ } finally {
+ Thread.currentThread().setContextClassLoader(oldLoader);
+ }
+ } catch (Exception e) {
+ DroolsEclipsePlugin.log(e);
+ }
+ }
+ }
+ protected void writeModel(OutputStream os) throws IOException {
+ writeModel(os, true);
+ }
- protected void createOutputStream(OutputStream os, boolean includeGraphics) throws IOException {
+ protected void writeModel(OutputStream os, boolean includeGraphics) throws IOException {
OutputStreamWriter writer = new OutputStreamWriter(os);
try {
- XStream stream = new XStream();
- stream.setMode(XStream.ID_REFERENCES);
- if (includeGraphics) {
- stream.toXML(getRuleFlowModel(), writer);
- } else {
- stream.toXML(getRuleFlowModel().getProcess(), writer);
- }
- writer.close();
+ XmlRuleFlowProcessDumper dumper = new XmlRuleFlowProcessDumper();
+ String out = dumper.dump(getRuleFlowModel().getRuleFlowProcess(), includeGraphics);
+ writer.write(out);
} catch (Throwable t) {
DroolsEclipsePlugin.log(t);
}
+ writer.close();
}
public void doSave(IProgressMonitor monitor) {
@@ -105,11 +186,9 @@
public void execute(final IProgressMonitor monitor)
throws CoreException {
try {
- ByteArrayOutputStream out = new ByteArrayOutputStream();
- createOutputStream(out, false);
- modelFile.create(new ByteArrayInputStream(out.toByteArray()),
- true, monitor);
- out.close();
+ XmlRuleFlowProcessDumper dumper = new XmlRuleFlowProcessDumper();
+ String out = dumper.dump(getRuleFlowModel().getRuleFlowProcess(), false);
+ modelFile.create(new ByteArrayInputStream(out.getBytes()), true, monitor);
} catch (Exception e) {
e.printStackTrace();
}
@@ -125,13 +204,10 @@
e.printStackTrace();
}
} else {
- ByteArrayOutputStream out = new ByteArrayOutputStream();
try {
- createOutputStream(out, false);
- modelFile.setContents(
- new ByteArrayInputStream(out.toByteArray()),
- true, false, monitor);
- out.close();
+ XmlRuleFlowProcessDumper dumper = new XmlRuleFlowProcessDumper();
+ String out = dumper.dump(getRuleFlowModel().getRuleFlowProcess(), false);
+ modelFile.setContents(new ByteArrayInputStream(out.getBytes()), true, false, monitor);
} catch (Throwable t) {
DroolsEclipsePlugin.log(t);
}
@@ -147,19 +223,25 @@
return modelFile;
}
- protected void createInputStream(InputStream is) throws Exception {
- InputStreamReader reader = new InputStreamReader(is);
- XStream stream = new XStream();
- stream.setMode(XStream.ID_REFERENCES);
-
- ClassLoader oldLoader = Thread.currentThread().getContextClassLoader();
- ClassLoader newLoader = this.getClass().getClassLoader();
+ protected void createModel(InputStream is) {
try {
- Thread.currentThread().setContextClassLoader(newLoader);
- setModel(stream.fromXML(reader));
- } finally {
- Thread.currentThread().setContextClassLoader(oldLoader);
+ InputStreamReader reader = new InputStreamReader(is);
+ PackageBuilderConfiguration configuration = new PackageBuilderConfiguration();
+ XmlProcessReader xmlReader = new XmlProcessReader( configuration.getSemanticModules() );
+ try {
+ RuleFlowProcess process = (RuleFlowProcess) xmlReader.read(reader);
+ if (process == null) {
+ setModel(createModel());
+ } else {
+ setModel(RuleFlowWrapperBuilder.getProcessWrapper(process, getFile()));
+ }
+ } catch (Throwable t) {
+ DroolsEclipsePlugin.log(t);
+ setModel(createModel());
+ }
+ reader.close();
+ } catch (Throwable t) {
+ DroolsEclipsePlugin.log(t);
}
- reader.close();
}
}
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-04-06 23:49:40 UTC (rev 19433)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/RuleFlowPaletteFactory.java 2008-04-06 23:51:00 UTC (rev 19434)
@@ -16,11 +16,9 @@
*/
import java.util.ArrayList;
-import java.util.Iterator;
import java.util.List;
import org.drools.eclipse.DroolsEclipsePlugin;
-import org.drools.eclipse.WorkItemDefinitions;
import org.drools.eclipse.flow.common.editor.core.ElementConnectionFactory;
import org.drools.eclipse.flow.ruleflow.core.ActionWrapper;
import org.drools.eclipse.flow.ruleflow.core.ConnectionWrapper;
@@ -32,11 +30,7 @@
import org.drools.eclipse.flow.ruleflow.core.SplitWrapper;
import org.drools.eclipse.flow.ruleflow.core.StartNodeWrapper;
import org.drools.eclipse.flow.ruleflow.core.SubFlowWrapper;
-import org.drools.eclipse.flow.ruleflow.core.WorkItemWrapper;
-import org.drools.process.core.WorkDefinition;
-import org.drools.process.core.WorkDefinitionExtension;
-import org.drools.process.core.impl.WorkImpl;
-import org.drools.workflow.core.Connection;
+import org.drools.eclipse.flow.ruleflow.core.TimerWrapper;
import org.eclipse.gef.palette.CombinedTemplateCreationEntry;
import org.eclipse.gef.palette.ConnectionCreationToolEntry;
import org.eclipse.gef.palette.MarqueeToolEntry;
@@ -67,7 +61,7 @@
List categories = new ArrayList();
categories.add(createControlGroup(root));
categories.add(createComponentsDrawer());
- categories.add(createTaskNodesDrawer());
+ categories.add(createWorkNodesDrawer());
return categories;
}
@@ -157,51 +151,71 @@
);
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(
+// "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);
+
drawer.addAll(entries);
return drawer;
}
- private static PaletteContainer createTaskNodesDrawer() {
+ private static PaletteContainer createWorkNodesDrawer() {
PaletteDrawer drawer = new PaletteDrawer("Work Items", null);
- List entries = new ArrayList();
-
- for (Iterator iterator = WorkItemDefinitions.getWorkDefinitions().iterator(); iterator.hasNext(); ) {
- final WorkDefinition workDefinition = (WorkDefinition) iterator.next();
- final String label;
- String description = workDefinition.getName();
- String icon = null;
- if (workDefinition instanceof WorkDefinitionExtension) {
- WorkDefinitionExtension extension = (WorkDefinitionExtension) workDefinition;
- label = extension.getDisplayName();
- description = extension.getExplanationText();
- icon = extension.getIcon();
- } else {
- label = workDefinition.getName();
- }
-
- CombinedTemplateCreationEntry combined = new CombinedTemplateCreationEntry(
- label,
- description,
- WorkItemWrapper.class,
- new SimpleFactory(WorkItemWrapper.class) {
- public Object getNewObject() {
- WorkItemWrapper taskWrapper = (WorkItemWrapper) super.getNewObject();
- taskWrapper.setName(label);
- taskWrapper.getWorkItemNode().setName(label);
- taskWrapper.getWorkItemNode().setWork(new WorkImpl());
- taskWrapper.getWorkItemNode().getWork().setName(workDefinition.getName());
- return taskWrapper;
- }
- },
- ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry(icon == null? "icons/action.gif" : icon)),
- ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry(icon == null? "icons/action.gif" : icon))
- );
- entries.add(combined);
- }
-
- drawer.addAll(entries);
+// List entries = new ArrayList();
+//
+// for (Iterator iterator = WorkItemDefinitions.getWorkDefinitions().iterator(); iterator.hasNext(); ) {
+// final WorkDefinition workDefinition = (WorkDefinition) iterator.next();
+// final String label;
+// String description = workDefinition.getName();
+// String icon = null;
+// if (workDefinition instanceof WorkDefinitionExtension) {
+// WorkDefinitionExtension extension = (WorkDefinitionExtension) workDefinition;
+// label = extension.getDisplayName();
+// description = extension.getExplanationText();
+// icon = extension.getIcon();
+// } else {
+// label = workDefinition.getName();
+// }
+//
+// CombinedTemplateCreationEntry combined = new CombinedTemplateCreationEntry(
+// label,
+// description,
+// WorkItemWrapper.class,
+// new SimpleFactory(WorkItemWrapper.class) {
+// public Object getNewObject() {
+// WorkItemWrapper taskWrapper = (WorkItemWrapper) super.getNewObject();
+// taskWrapper.setName(label);
+// taskWrapper.getWorkItemNode().setName(label);
+// taskWrapper.getWorkItemNode().setWork(new WorkImpl());
+// taskWrapper.getWorkItemNode().getWork().setName(workDefinition.getName());
+// return taskWrapper;
+// }
+// },
+// ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry(icon == null? "icons/action.gif" : icon)),
+// ImageDescriptor.createFromURL(DroolsEclipsePlugin.getDefault().getBundle().getEntry(icon == null? "icons/action.gif" : icon))
+// );
+// 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/ActionEditPart.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/ActionEditPart.java 2008-04-06 23:49:40 UTC (rev 19433)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/ActionEditPart.java 2008-04-06 23:51:00 UTC (rev 19434)
@@ -17,7 +17,7 @@
import org.drools.eclipse.DroolsEclipsePlugin;
import org.drools.eclipse.flow.common.editor.editpart.ElementEditPart;
-import org.drools.eclipse.flow.common.editor.editpart.figure.ElementFigure;
+import org.drools.eclipse.flow.common.editor.editpart.figure.AbstractElementFigure;
import org.eclipse.draw2d.IFigure;
import org.eclipse.draw2d.RoundedRectangle;
import org.eclipse.draw2d.geometry.Dimension;
@@ -40,7 +40,7 @@
return new RuleSetNodeFigure();
}
- public static class RuleSetNodeFigure extends ElementFigure {
+ public static class RuleSetNodeFigure extends AbstractElementFigure {
private static final Image ICON = ImageDescriptor.createFromURL(
DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/action.gif")).createImage();
Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/DefaultNodeEditPart.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/DefaultNodeEditPart.java (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/DefaultNodeEditPart.java 2008-04-06 23:51:00 UTC (rev 19434)
@@ -0,0 +1,21 @@
+package org.drools.eclipse.flow.ruleflow.editor.editpart;
+
+import org.drools.eclipse.flow.common.editor.editpart.ElementEditPart;
+import org.drools.eclipse.flow.ruleflow.core.NodeWrapper;
+import org.drools.eclipse.flow.ruleflow.editor.editpart.figure.DefaultNodeFigure;
+import org.drools.workflow.core.Node;
+import org.drools.workflow.core.NodeExtension;
+import org.eclipse.draw2d.IFigure;
+
+public class DefaultNodeEditPart extends ElementEditPart {
+
+ protected IFigure createFigure() {
+ DefaultNodeFigure figure = new DefaultNodeFigure();
+ Node node = ((NodeWrapper) getElementWrapper()).getNode();
+ if (node instanceof NodeExtension) {
+ figure.setIcon(((NodeExtension) node).getIcon());
+ }
+ return figure;
+ }
+
+}
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-04-06 23:49:40 UTC (rev 19433)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/EndNodeEditPart.java 2008-04-06 23:51:00 UTC (rev 19434)
@@ -17,7 +17,7 @@
import org.drools.eclipse.DroolsEclipsePlugin;
import org.drools.eclipse.flow.common.editor.editpart.ElementEditPart;
-import org.drools.eclipse.flow.common.editor.editpart.figure.ElementFigure;
+import org.drools.eclipse.flow.common.editor.editpart.figure.AbstractElementFigure;
import org.eclipse.draw2d.IFigure;
import org.eclipse.draw2d.LineBorder;
import org.eclipse.jface.resource.ImageDescriptor;
@@ -34,7 +34,7 @@
return new EndNodeFigure();
}
- public static class EndNodeFigure extends ElementFigure {
+ public static class EndNodeFigure extends AbstractElementFigure {
private static final Image icon = ImageDescriptor.createFromURL(
DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/process_stop.gif")).createImage();
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-04-06 23:49:40 UTC (rev 19433)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/JoinEditPart.java 2008-04-06 23:51:00 UTC (rev 19434)
@@ -16,7 +16,7 @@
*/
import org.drools.eclipse.flow.common.editor.editpart.ElementEditPart;
-import org.drools.eclipse.flow.common.editor.editpart.figure.ElementFigure;
+import org.drools.eclipse.flow.common.editor.editpart.figure.AbstractElementFigure;
import org.eclipse.draw2d.ConnectionAnchor;
import org.eclipse.draw2d.Ellipse;
import org.eclipse.draw2d.EllipseAnchor;
@@ -56,7 +56,7 @@
return new EllipseAnchor(getFigure());
}
- public class JoinFigure extends ElementFigure {
+ public class JoinFigure extends AbstractElementFigure {
private Ellipse ellipse;
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-04-06 23:49:40 UTC (rev 19433)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/MilestoneEditPart.java 2008-04-06 23:51:00 UTC (rev 19434)
@@ -17,7 +17,7 @@
import org.drools.eclipse.DroolsEclipsePlugin;
import org.drools.eclipse.flow.common.editor.editpart.ElementEditPart;
-import org.drools.eclipse.flow.common.editor.editpart.figure.ElementFigure;
+import org.drools.eclipse.flow.common.editor.editpart.figure.AbstractElementFigure;
import org.eclipse.draw2d.IFigure;
import org.eclipse.draw2d.RoundedRectangle;
import org.eclipse.draw2d.geometry.Dimension;
@@ -40,7 +40,7 @@
return new RuleSetNodeFigure();
}
- public static class RuleSetNodeFigure extends ElementFigure {
+ public static class RuleSetNodeFigure 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/RuleFlowEditPartFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/RuleFlowEditPartFactory.java 2008-04-06 23:49:40 UTC (rev 19433)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/RuleFlowEditPartFactory.java 2008-04-06 23:51:00 UTC (rev 19434)
@@ -15,8 +15,10 @@
* limitations under the License.
*/
+import org.drools.eclipse.flow.common.editor.editpart.ElementContainerEditPart;
import org.drools.eclipse.flow.common.editor.editpart.ProcessEditPart;
import org.drools.eclipse.flow.ruleflow.core.ActionWrapper;
+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.JoinWrapper;
@@ -26,7 +28,9 @@
import org.drools.eclipse.flow.ruleflow.core.SplitWrapper;
import org.drools.eclipse.flow.ruleflow.core.StartNodeWrapper;
import org.drools.eclipse.flow.ruleflow.core.SubFlowWrapper;
+import org.drools.eclipse.flow.ruleflow.core.TimerWrapper;
import org.drools.eclipse.flow.ruleflow.core.WorkItemWrapper;
+import org.drools.eclipse.flow.ruleflow.editor.RuleFlowModelEditor;
import org.eclipse.gef.EditPart;
import org.eclipse.gef.EditPartFactory;
@@ -36,7 +40,13 @@
* @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
*/
public class RuleFlowEditPartFactory implements EditPartFactory {
-
+
+ private RuleFlowModelEditor editor;
+
+ public RuleFlowEditPartFactory(RuleFlowModelEditor editor) {
+ this.editor = editor;
+ }
+
public EditPart createEditPart(EditPart context, Object model) {
EditPart result = null;
if (model instanceof RuleFlowProcessWrapper) {
@@ -61,6 +71,11 @@
result = new ActionEditPart();
} else if (model instanceof WorkItemWrapper) {
result = new WorkItemEditPart();
+ ((WorkItemEditPart) result).setEditor(editor);
+ } else if (model instanceof TimerWrapper) {
+ result = new TimerEditPart();
+ } else if (model instanceof CompositeNodeWrapper) {
+ result = new ElementContainerEditPart();
} else {
throw new IllegalArgumentException(
"Unknown model object " + model);
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-04-06 23:49:40 UTC (rev 19433)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/RuleSetNodeEditPart.java 2008-04-06 23:51:00 UTC (rev 19434)
@@ -16,7 +16,7 @@
*/
import org.drools.eclipse.flow.common.editor.editpart.ElementEditPart;
-import org.drools.eclipse.flow.common.editor.editpart.figure.ElementFigure;
+import org.drools.eclipse.flow.common.editor.editpart.figure.AbstractElementFigure;
import org.eclipse.draw2d.IFigure;
import org.eclipse.draw2d.RoundedRectangle;
import org.eclipse.draw2d.geometry.Dimension;
@@ -37,7 +37,7 @@
return new RuleSetNodeFigure();
}
- public class RuleSetNodeFigure extends ElementFigure {
+ public 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-04-06 23:49:40 UTC (rev 19433)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/SplitEditPart.java 2008-04-06 23:51:00 UTC (rev 19434)
@@ -16,7 +16,7 @@
*/
import org.drools.eclipse.flow.common.editor.editpart.ElementEditPart;
-import org.drools.eclipse.flow.common.editor.editpart.figure.ElementFigure;
+import org.drools.eclipse.flow.common.editor.editpart.figure.AbstractElementFigure;
import org.eclipse.draw2d.ConnectionAnchor;
import org.eclipse.draw2d.Ellipse;
import org.eclipse.draw2d.EllipseAnchor;
@@ -56,7 +56,7 @@
return new EllipseAnchor(getFigure());
}
- public class SplitFigure extends ElementFigure {
+ public class SplitFigure extends AbstractElementFigure {
private Ellipse ellipse;
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-04-06 23:49:40 UTC (rev 19433)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/StartNodeEditPart.java 2008-04-06 23:51:00 UTC (rev 19434)
@@ -17,7 +17,7 @@
import org.drools.eclipse.DroolsEclipsePlugin;
import org.drools.eclipse.flow.common.editor.editpart.ElementEditPart;
-import org.drools.eclipse.flow.common.editor.editpart.figure.ElementFigure;
+import org.drools.eclipse.flow.common.editor.editpart.figure.AbstractElementFigure;
import org.eclipse.draw2d.IFigure;
import org.eclipse.draw2d.LineBorder;
import org.eclipse.jface.resource.ImageDescriptor;
@@ -34,7 +34,7 @@
return new StartNodeFigure();
}
- public static class StartNodeFigure extends ElementFigure {
+ public static class StartNodeFigure extends AbstractElementFigure {
private static final Image icon = ImageDescriptor.createFromURL(
DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/process_start.gif")).createImage();
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-04-06 23:49:40 UTC (rev 19433)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/SubFlowEditPart.java 2008-04-06 23:51:00 UTC (rev 19434)
@@ -17,7 +17,7 @@
import org.drools.eclipse.DroolsEclipsePlugin;
import org.drools.eclipse.flow.common.editor.editpart.ElementEditPart;
-import org.drools.eclipse.flow.common.editor.editpart.figure.ElementFigure;
+import org.drools.eclipse.flow.common.editor.editpart.figure.AbstractElementFigure;
import org.eclipse.draw2d.IFigure;
import org.eclipse.draw2d.RoundedRectangle;
import org.eclipse.draw2d.geometry.Dimension;
@@ -40,7 +40,7 @@
return new SubFlowNodeFigure();
}
- public static class SubFlowNodeFigure extends ElementFigure {
+ public static class SubFlowNodeFigure extends AbstractElementFigure {
private static final Image ICON = ImageDescriptor.createFromURL(
DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/process.gif")).createImage();
Added: 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 (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/TimerEditPart.java 2008-04-06 23:51:00 UTC (rev 19434)
@@ -0,0 +1,71 @@
+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.DroolsEclipsePlugin;
+import org.drools.eclipse.flow.common.editor.editpart.ElementEditPart;
+import org.drools.eclipse.flow.common.editor.editpart.figure.AbstractElementFigure;
+import org.eclipse.draw2d.IFigure;
+import org.eclipse.draw2d.RoundedRectangle;
+import org.eclipse.draw2d.geometry.Dimension;
+import org.eclipse.draw2d.geometry.Rectangle;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.widgets.Display;
+
+/**
+ * EditPart for a timer node.
+ *
+ * @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
+ */
+public class TimerEditPart extends ElementEditPart {
+
+ private static final Color color = new Color(Display.getCurrent(), 255, 250, 205);
+
+ protected IFigure createFigure() {
+ return new TimerNodeFigure();
+ }
+
+ public static class TimerNodeFigure extends AbstractElementFigure {
+
+ private static final Image ICON = ImageDescriptor.createFromURL(
+ DroolsEclipsePlugin.getDefault().getBundle().getEntry("icons/timer.gif")).createImage();
+
+ private RoundedRectangle rectangle;
+
+ protected void customizeFigure() {
+ rectangle = new RoundedRectangle();
+ rectangle.setCornerDimensions(new Dimension(25, 25));
+ add(rectangle, 0);
+ rectangle.setBackgroundColor(color);
+ rectangle.setBounds(getBounds());
+ setSelected(false);
+ 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();
+ }
+ }
+}
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-04-06 23:49:40 UTC (rev 19433)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/WorkItemEditPart.java 2008-04-06 23:51:00 UTC (rev 19434)
@@ -18,20 +18,26 @@
import java.lang.reflect.Constructor;
import org.drools.eclipse.DroolsEclipsePlugin;
-import org.drools.eclipse.WorkItemDefinitions;
+import org.drools.eclipse.DroolsPluginImages;
+import org.drools.eclipse.builder.DroolsBuilder;
import org.drools.eclipse.flow.common.editor.editpart.ElementEditPart;
-import org.drools.eclipse.flow.common.editor.editpart.figure.ElementFigure;
-import org.drools.eclipse.flow.common.editor.editpart.work.WorkEditor;
+import org.drools.eclipse.flow.common.editor.editpart.figure.AbstractElementFigure;
import org.drools.eclipse.flow.ruleflow.core.WorkItemWrapper;
+import org.drools.eclipse.util.ProjectClassLoader;
import org.drools.process.core.WorkDefinition;
import org.drools.process.core.WorkDefinitionExtension;
+import org.drools.process.core.WorkEditor;
import org.drools.workflow.core.node.WorkItemNode;
+import org.eclipse.core.resources.IProject;
import org.eclipse.draw2d.IFigure;
import org.eclipse.draw2d.RoundedRectangle;
import org.eclipse.draw2d.geometry.Dimension;
import org.eclipse.draw2d.geometry.Rectangle;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.JavaCore;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
@@ -44,8 +50,6 @@
private static final Color color = new Color(Display.getCurrent(), 255, 250, 205);
- private transient WorkDefinition workDefinition;
-
protected IFigure createFigure() {
String icon = null;
WorkDefinition workDefinition = getWorkDefinition();
@@ -55,15 +59,41 @@
if (icon == null) {
icon = "icons/action.gif";
}
- return new TaskNodeFigure(icon);
+ Image image = DroolsPluginImages.getImage(icon);
+ WorkItemFigure figure = new WorkItemFigure();
+ if (image == null) {
+ IProject project = getEditor().getFile().getProject();
+ if (project != null) {
+ ClassLoader oldLoader = Thread.currentThread().getContextClassLoader();
+ ClassLoader newLoader = DroolsBuilder.class.getClassLoader();
+ try {
+ if (project.getNature("org.eclipse.jdt.core.javanature") != null) {
+ IJavaProject javaProject = JavaCore.create(project);
+ newLoader = ProjectClassLoader.getProjectClassLoader(javaProject);
+ }
+ try {
+ Thread.currentThread().setContextClassLoader(newLoader);
+ image = ImageDescriptor.createFromURL(
+ newLoader.getResource(icon)).createImage();
+ DroolsPluginImages.putImage(icon, image);
+ } finally {
+ Thread.currentThread().setContextClassLoader(oldLoader);
+ }
+ } catch (Exception e) {
+ DroolsEclipsePlugin.log(e);
+ }
+ }
+ }
+ figure.setIcon(image);
+ return figure;
}
+ protected WorkItemWrapper getWorkItemWrapper() {
+ return (WorkItemWrapper) getElementWrapper();
+ }
+
private WorkDefinition getWorkDefinition() {
- if (this.workDefinition == null) {
- String taskName = ((WorkItemWrapper) getElementWrapper()).getWorkItemNode().getWork().getName();
- this.workDefinition = WorkItemDefinitions.getWorkDefinition(taskName);
- }
- return workDefinition;
+ return getWorkItemWrapper().getWorkDefinition();
}
protected void doubleClicked() {
@@ -79,28 +109,36 @@
}
private void openEditor(String editorClassName, WorkDefinition workDefinition) {
- try {
- Class<WorkEditor> editorClass =
- (Class<WorkEditor>) Class.forName(editorClassName);
- Constructor<WorkEditor> constructor = editorClass.getConstructor(Shell.class);
- WorkEditor editor = constructor.newInstance(getViewer().getControl().getShell());
- editor.setWorkDefinition(workDefinition);
- WorkItemNode workItemNode = ((WorkItemWrapper) getElementWrapper()).getWorkItemNode();
- editor.setWork(workItemNode.getWork());
- editor.show();
- workItemNode.setWork(editor.getWork());
- } catch (Throwable t) {
- DroolsEclipsePlugin.log(t);
+ IProject project = getEditor().getFile().getProject();
+ if (project != null) {
+ ClassLoader oldLoader = Thread.currentThread().getContextClassLoader();
+ ClassLoader newLoader = DroolsBuilder.class.getClassLoader();
+ try {
+ if (project.getNature("org.eclipse.jdt.core.javanature") != null) {
+ IJavaProject javaProject = JavaCore.create(project);
+ newLoader = ProjectClassLoader.getProjectClassLoader(javaProject);
+ }
+ try {
+ Thread.currentThread().setContextClassLoader(newLoader);
+ Class<WorkEditor> editorClass = (Class<WorkEditor>) newLoader.loadClass(editorClassName);
+ Constructor<WorkEditor> constructor = editorClass.getConstructor(Shell.class);
+ WorkEditor editor = constructor.newInstance(getViewer().getControl().getShell());
+ editor.setWorkDefinition(workDefinition);
+ WorkItemNode workItemNode = getWorkItemWrapper().getWorkItemNode();
+ editor.setWork(workItemNode.getWork());
+ editor.show();
+ workItemNode.setWork(editor.getWork());
+ } finally {
+ Thread.currentThread().setContextClassLoader(oldLoader);
+ }
+ } catch (Exception e) {
+ DroolsEclipsePlugin.log(e);
+ }
}
}
- public static class TaskNodeFigure extends ElementFigure {
+ public static class WorkItemFigure extends AbstractElementFigure {
- public TaskNodeFigure(String icon) {
- setIcon(ImageDescriptor.createFromURL(
- DroolsEclipsePlugin.getDefault().getBundle().getEntry(icon)).createImage());
- }
-
private RoundedRectangle rectangle;
protected void customizeFigure() {
Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/figure/DefaultNodeFigure.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/figure/DefaultNodeFigure.java (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/figure/DefaultNodeFigure.java 2008-04-06 23:51:00 UTC (rev 19434)
@@ -0,0 +1,52 @@
+package org.drools.eclipse.flow.ruleflow.editor.editpart.figure;
+
+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.Color;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.graphics.RGB;
+import org.eclipse.swt.widgets.Display;
+
+public class DefaultNodeFigure extends AbstractElementFigure {
+
+ private Image icon;
+ private Color color;
+
+ private RoundedRectangle rectangle;
+
+ public void setIcon(String iconName) {
+ icon = ImageDescriptor.createFromURL(
+ DroolsEclipsePlugin.getDefault().getBundle()
+ .getEntry(iconName)).createImage();
+ }
+
+ public void setColor(RGB rgb) {
+ color = new Color(Display.getCurrent(), rgb);
+ }
+
+ protected void customizeFigure() {
+ rectangle = new RoundedRectangle();
+ rectangle.setCornerDimensions(new Dimension(25, 25));
+ add(rectangle, 0);
+ rectangle.setBackgroundColor(color);
+ 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/view/property/ElementNameSection.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/ElementNameSection.java (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/ElementNameSection.java 2008-04-06 23:51:00 UTC (rev 19434)
@@ -0,0 +1,73 @@
+package org.drools.eclipse.flow.ruleflow.view.property;
+
+import org.drools.eclipse.flow.common.editor.core.ElementWrapper;
+import org.drools.eclipse.flow.common.editor.editpart.ElementEditPart;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CLabel;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.layout.FormAttachment;
+import org.eclipse.swt.layout.FormData;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.views.properties.tabbed.AbstractPropertySection;
+import org.eclipse.ui.views.properties.tabbed.ITabbedPropertyConstants;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;
+
+public class ElementNameSection extends AbstractPropertySection implements ModifyListener {
+
+ private Text nameText;
+ private ElementWrapper elementWrapper;
+
+ public void createControls(Composite parent, TabbedPropertySheetPage aTabbedPropertySheetPage) {
+ super.createControls(parent, aTabbedPropertySheetPage);
+ Composite composite = getWidgetFactory().createFlatFormComposite(parent);
+
+ nameText = getWidgetFactory().createText(composite, "");
+ FormData data = new FormData();
+ data.left = new FormAttachment(0, STANDARD_LABEL_WIDTH);
+ data.right = new FormAttachment(100, 0);
+ data.top = new FormAttachment(0, ITabbedPropertyConstants.VSPACE);
+ nameText.setLayoutData(data);
+ nameText.addModifyListener(this);
+
+ CLabel labelLabel = getWidgetFactory().createCLabel(composite, "Name:");
+ data = new FormData();
+ data.left = new FormAttachment(0, 0);
+ data.right = new FormAttachment(nameText, -ITabbedPropertyConstants.HSPACE);
+ data.top = new FormAttachment(nameText, 0, SWT.CENTER);
+ labelLabel.setLayoutData(data);
+ }
+
+ public void setInput(IWorkbenchPart part, ISelection selection) {
+ super.setInput(part, selection);
+ if (selection instanceof IStructuredSelection) {
+ Object input = ((IStructuredSelection) selection).getFirstElement();
+ if (input instanceof ElementEditPart) {
+ input = ((ElementEditPart) input).getModel();
+ }
+ if (input instanceof ElementWrapper) {
+ this.elementWrapper = (ElementWrapper) input;
+ }
+ }
+ }
+
+ public void refresh() {
+ if (elementWrapper != null) {
+ nameText.removeModifyListener(this);
+ nameText.setText(elementWrapper.getName());
+ nameText.addModifyListener(this);
+ }
+ }
+
+
+ public void modifyText(ModifyEvent arg0) {
+ if (elementWrapper != null) {
+ elementWrapper.setName(nameText.getText());
+ }
+ }
+
+}
Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/NodeSection.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/NodeSection.java (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/NodeSection.java 2008-04-06 23:51:00 UTC (rev 19434)
@@ -0,0 +1,7 @@
+package org.drools.eclipse.flow.ruleflow.view.property;
+
+import org.eclipse.ui.views.properties.tabbed.AbstractPropertySection;
+
+public class NodeSection extends AbstractPropertySection {
+
+}
Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/ProcessNameSection.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/ProcessNameSection.java (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/ProcessNameSection.java 2008-04-06 23:51:00 UTC (rev 19434)
@@ -0,0 +1,74 @@
+package org.drools.eclipse.flow.ruleflow.view.property;
+
+import org.drools.eclipse.flow.common.editor.core.ProcessWrapper;
+import org.drools.eclipse.flow.common.editor.editpart.ProcessEditPart;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CLabel;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.layout.FormAttachment;
+import org.eclipse.swt.layout.FormData;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.views.properties.tabbed.AbstractPropertySection;
+import org.eclipse.ui.views.properties.tabbed.ITabbedPropertyConstants;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;
+
+public class ProcessNameSection extends AbstractPropertySection implements ModifyListener {
+
+ private Text nameText;
+ private ProcessWrapper processWrapper;
+
+ public void createControls(Composite parent, TabbedPropertySheetPage aTabbedPropertySheetPage) {
+ super.createControls(parent, aTabbedPropertySheetPage);
+ Composite composite = getWidgetFactory().createFlatFormComposite(parent);
+
+ nameText = getWidgetFactory().createText(composite, "");
+ FormData data = new FormData();
+ data.left = new FormAttachment(0, STANDARD_LABEL_WIDTH);
+ data.right = new FormAttachment(100, 0);
+ data.top = new FormAttachment(0, ITabbedPropertyConstants.VSPACE);
+ nameText.setLayoutData(data);
+ nameText.addModifyListener(this);
+
+ CLabel labelLabel = getWidgetFactory().createCLabel(composite, "Name:");
+ data = new FormData();
+ data.left = new FormAttachment(0, 0);
+ data.right = new FormAttachment(nameText, -ITabbedPropertyConstants.HSPACE);
+ data.top = new FormAttachment(nameText, 0, SWT.CENTER);
+ labelLabel.setLayoutData(data);
+
+ }
+
+ public void setInput(IWorkbenchPart part, ISelection selection) {
+ super.setInput(part, selection);
+ if (selection instanceof IStructuredSelection) {
+ Object input = ((IStructuredSelection) selection).getFirstElement();
+ if (input instanceof ProcessEditPart) {
+ input = ((ProcessEditPart) input).getModel();
+ }
+ if (input instanceof ProcessWrapper) {
+ this.processWrapper = (ProcessWrapper) input;
+ }
+ }
+ }
+
+ public void refresh() {
+ if (processWrapper != null) {
+ nameText.removeModifyListener(this);
+ nameText.setText(processWrapper.getName());
+ nameText.addModifyListener(this);
+ }
+ }
+
+
+ public void modifyText(ModifyEvent arg0) {
+ if (processWrapper != null) {
+ processWrapper.setName(nameText.getText());
+ }
+ }
+
+}
Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/constraint/ConstraintListDialog.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/constraint/ConstraintListDialog.java 2008-04-06 23:49:40 UTC (rev 19433)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/constraint/ConstraintListDialog.java 2008-04-06 23:51:00 UTC (rev 19434)
@@ -16,7 +16,6 @@
*/
import java.util.HashMap;
-import java.util.Iterator;
import java.util.List;
import java.util.Map;
@@ -46,8 +45,8 @@
private WorkflowProcess process;
private Split split;
- private Map newMap;
- private Map labels = new HashMap();
+ private Map<Split.ConnectionRef, Constraint> newMap;
+ private Map<Connection, Label> labels = new HashMap<Connection, Label>();
protected ConstraintListDialog(Shell parentShell, WorkflowProcess process,
Split split) {
@@ -62,25 +61,23 @@
gridLayout.numColumns = 3;
composite.setLayout(gridLayout);
- List outgoingConnections = split.getDefaultOutgoingConnections();
+ List<Connection> outgoingConnections = split.getDefaultOutgoingConnections();
labels.clear();
- for (Iterator it = outgoingConnections.iterator(); it.hasNext(); ) {
- Connection outgoingConnection = (Connection) it.next();
+ for (Connection outgoingConnection: outgoingConnections) {
Label label1 = new Label(composite, SWT.NONE);
- label1.setText("To node " + outgoingConnection.getTo().getName()
- + ": ");
-
+ label1.setText("To node "
+ + outgoingConnection.getTo().getName() + ": ");
Label label2 = new Label(composite, SWT.NONE);
labels.put(outgoingConnection, label2);
GridData gridData = new GridData();
gridData.grabExcessHorizontalSpace = true;
gridData.horizontalAlignment = GridData.FILL;
label2.setLayoutData(gridData);
- Constraint constraint = (Constraint) newMap.get(outgoingConnection);
+ Constraint constraint = newMap.get(
+ new Split.ConnectionRef(outgoingConnection.getTo().getId(), outgoingConnection.getToType()));
if (constraint != null) {
label2.setText(constraint.getName());
}
-
Button editButton = new Button(composite, SWT.NONE);
editButton.setText("Edit");
editButton.addSelectionListener(new EditButtonListener(
@@ -92,7 +89,7 @@
public void setValue(Object value) {
super.setValue(value);
- this.newMap = new HashMap((Map) value);
+ this.newMap = new HashMap<Split.ConnectionRef, Constraint>((Map<Split.ConnectionRef, Constraint>) value);
}
protected Object updateValue(Object value) {
@@ -106,14 +103,17 @@
RuleFlowConstraintDialog dialog = new RuleFlowConstraintDialog(
getShell(), process);
dialog.create();
- Constraint constraint = (Constraint) newMap.get(connection);
+ Split.ConnectionRef connectionRef = new Split.ConnectionRef(connection.getTo().getId(), connection.getToType());
+ Constraint constraint = newMap.get(connectionRef);
dialog.setConstraint(constraint);
int code = dialog.open();
if (code != CANCEL) {
constraint = dialog.getConstraint();
- newMap.put(connection, constraint);
- setConnectionText((Label) labels.get(connection), constraint
- .getName());
+ newMap.put(
+ connectionRef,
+ constraint);
+ setConnectionText(
+ (Label) labels.get(connection), constraint.getName());
}
}
Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/variable/VariableDialog.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/variable/VariableDialog.java 2008-04-06 23:49:40 UTC (rev 19433)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/variable/VariableDialog.java 2008-04-06 23:51:00 UTC (rev 19434)
@@ -22,7 +22,7 @@
import org.drools.eclipse.flow.common.view.datatype.editor.impl.DataTypeEditorComposite;
import org.drools.eclipse.flow.common.view.datatype.editor.impl.EditorComposite;
import org.drools.eclipse.flow.common.view.property.EditBeanDialog;
-import org.drools.process.core.Variable;
+import org.drools.process.core.context.variable.Variable;
import org.drools.process.core.datatype.DataType;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/variable/VariableListDialog.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/variable/VariableListDialog.java 2008-04-06 23:49:40 UTC (rev 19433)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/variable/VariableListDialog.java 2008-04-06 23:51:00 UTC (rev 19434)
@@ -16,7 +16,7 @@
*/
import org.drools.eclipse.flow.common.view.property.EditListDialog;
-import org.drools.process.core.impl.VariableImpl;
+import org.drools.process.core.context.variable.Variable;
import org.eclipse.swt.widgets.Shell;
/**
@@ -31,6 +31,6 @@
}
protected Object createItem() {
- return new VariableImpl();
+ return new Variable();
}
}
Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/workitem/WorkItemParameterMappingCellEditor.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/workitem/WorkItemParameterMappingCellEditor.java (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/workitem/WorkItemParameterMappingCellEditor.java 2008-04-06 23:51:00 UTC (rev 19434)
@@ -0,0 +1,45 @@
+package org.drools.eclipse.flow.ruleflow.view.property.workitem;
+/*
+ * 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.view.property.BeanDialogCellEditor;
+import org.drools.eclipse.flow.common.view.property.EditBeanDialog;
+import org.drools.workflow.core.node.WorkItemNode;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Shell;
+
+/**
+ * Cell editor for work item result mappings.
+ *
+ * @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
+ */
+public class WorkItemParameterMappingCellEditor extends BeanDialogCellEditor {
+
+ private WorkItemNode workItemNode;
+
+ public WorkItemParameterMappingCellEditor(Composite parent, WorkItemNode workItemNode) {
+ super(parent);
+ this.workItemNode = workItemNode;
+ }
+
+ protected EditBeanDialog createDialog(Shell shell) {
+ return new WorkItemParameterMappingDialog(shell, workItemNode);
+ }
+
+ protected String getLabelText(Object value) {
+ return "";
+ }
+}
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/workitem/WorkItemParameterMappingDialog.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/workitem/WorkItemParameterMappingDialog.java (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/workitem/WorkItemParameterMappingDialog.java 2008-04-06 23:51:00 UTC (rev 19434)
@@ -0,0 +1,238 @@
+package org.drools.eclipse.flow.ruleflow.view.property.workitem;
+/*
+ * Copyright 2005 JBoss Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.drools.eclipse.flow.common.view.property.EditBeanDialog;
+import org.drools.workflow.core.node.WorkItemNode;
+import org.eclipse.jface.resource.JFaceResources;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.TableEditor;
+import org.eclipse.swt.events.FocusEvent;
+import org.eclipse.swt.events.FocusListener;
+import org.eclipse.swt.events.MouseEvent;
+import org.eclipse.swt.events.MouseListener;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.graphics.Rectangle;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.swt.widgets.TableItem;
+import org.eclipse.swt.widgets.Text;
+
+/**
+ * Dialog for editing work item parameter mappings.
+ *
+ * @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
+ */
+public class WorkItemParameterMappingDialog extends EditBeanDialog implements FocusListener, MouseListener {
+
+ private Table table;
+ private Button removeButton;
+ private Text text;
+ private TableEditor editor;
+ private int selectedColumn = -1;
+
+ public WorkItemParameterMappingDialog(Shell parentShell, WorkItemNode workItemNode) {
+ super(parentShell, "Parameter Mapping");
+ setValue(workItemNode.getInMappings());
+ }
+
+ protected Object updateValue(Object value) {
+ Map<String, String> mapping = new HashMap<String, String>();
+ for (TableItem item: table.getItems()) {
+ mapping.put(item.getText(0), item.getText(1));
+ }
+ return mapping;
+ }
+
+ protected Point getInitialSize() {
+ return new Point(450, 300);
+ }
+
+ public Control createDialogArea(Composite parent) {
+ Composite composite = (Composite) super.createDialogArea(parent);
+ GridLayout layout = new GridLayout();
+ layout.numColumns = 2;
+ composite.setLayout(layout);
+
+ table = new Table(composite, SWT.SINGLE);
+ GridData gd = new GridData();
+ gd.verticalSpan = 3;
+ gd.grabExcessHorizontalSpace = true;
+ gd.grabExcessVerticalSpace = true;
+ gd.verticalAlignment = GridData.FILL;
+ gd.horizontalAlignment = GridData.FILL;
+ table.setLayoutData(gd);
+ table.addSelectionListener(new SelectionListener() {
+ public void widgetDefaultSelected(SelectionEvent e) {
+ removeButton.setEnabled(table.getSelectionIndex() != -1);
+ }
+ public void widgetSelected(SelectionEvent e) {
+ removeButton.setEnabled(table.getSelectionIndex() != -1);
+ }
+ });
+ table.addMouseListener(this);
+ table.setHeaderVisible(true);
+ table.setLinesVisible(true);
+ TableColumn variableNameColumn = new TableColumn(table, SWT.LEFT);
+ variableNameColumn.setText("Parameter");
+ variableNameColumn.setWidth(150);
+ TableColumn parameterNameColumn = new TableColumn(table, SWT.LEFT);
+ parameterNameColumn.setText("Variable");
+ parameterNameColumn.setWidth(225);
+
+ editor = new TableEditor(table);
+ text = new Text(table, SWT.NORMAL);
+ text.setVisible(false);
+ text.setText("");
+ editor.minimumWidth = text.getSize().x;
+ editor.horizontalAlignment = SWT.LEFT;
+ editor.grabHorizontal = true;
+
+ Button addButton = new Button(composite, SWT.PUSH);
+ addButton.setText("Add");
+ addButton.setFont(JFaceResources.getDialogFont());
+ addButton.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent event) {
+ addButtonPressed();
+ }
+ });
+ gd = new GridData();
+ gd.horizontalAlignment = SWT.FILL;
+ addButton.setLayoutData(gd);
+
+ removeButton = new Button(composite, SWT.PUSH);
+ removeButton.setText("Remove");
+ removeButton.setFont(JFaceResources.getDialogFont());
+ removeButton.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent event) {
+ removeButtonPressed();
+ }
+ });
+ gd = new GridData();
+ removeButton.setLayoutData(gd);
+ removeButton.setEnabled(false);
+
+ updateTable();
+
+ return composite;
+ }
+
+ private void updateTable() {
+ Map<String, String> mapping = (Map<String, String>) getValue();
+ for (Map.Entry<String, String> entry: mapping.entrySet()) {
+ TableItem item = new TableItem(table, SWT.NONE);
+ item.setText(new String[] { entry.getKey(), entry.getValue()} );
+ }
+ }
+
+ private void addButtonPressed() {
+ TableItem item = new TableItem(table, SWT.NONE);
+ item.setText(0, "parameter");
+ item.setText(1, "variable");
+ table.setSelection(item);
+ }
+
+ private void removeButtonPressed() {
+ int i = table.getSelectionIndex();
+ if (i == -1) {
+ return;
+ }
+ table.remove(i);
+ removeButton.setEnabled(table.getItemCount() == 0);
+ }
+
+ private void doEdit() {
+ if (text.isVisible()) {
+ endEdit();
+ }
+ if (table.getSelectionIndex() == -1 || selectedColumn == -1) return;
+ TableItem selection = table.getItem(table.getSelectionIndex());
+ String value = selection.getText(selectedColumn);
+ text.setText(value == null ? "" : value);
+ editor.setEditor(text, selection, selectedColumn);
+ text.setVisible(true);
+ text.selectAll();
+ text.setFocus();
+ text.addFocusListener(this);
+ }
+
+ private void endEdit() {
+ text.setVisible(false);
+ text.setText("");
+ text.removeFocusListener(this);
+ }
+
+ public void focusGained(FocusEvent e) {
+ }
+
+ public void focusLost(FocusEvent e) {
+ if (e.widget == text) {
+ applyValue();
+ endEdit();
+ }
+ }
+
+ public void mouseDoubleClick(MouseEvent e) {
+ }
+
+ public void mouseDown(MouseEvent e) {
+ selectedColumn = getSelectedColumn(e.x, e.y);
+ if (selectedColumn == -1) return;
+ doEdit();
+ }
+
+ public void mouseUp(MouseEvent e) {
+ }
+
+ private int getSelectedColumn(int x, int y) {
+ int columnToEdit = -1;
+ int columns = table.getColumnCount();
+ if (table.getSelection().length == 0) {
+ return -1;
+ }
+ for (int i = 0; i < columns; i++) {
+ Rectangle bounds = table.getSelection()[0].getBounds(i);
+ if (bounds.contains(x, y)) {
+ columnToEdit = i;
+ break;
+ }
+ }
+ return columnToEdit;
+ }
+
+
+ private void applyValue() {
+ int i = table.getSelectionIndex();
+ if (i == -1) {
+ return;
+ }
+ TableItem item = table.getItem(i);
+ item.setText(selectedColumn, text.getText());
+ }
+
+}
Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/workitem/WorkItemParameterMappingPropertyDescriptor.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/workitem/WorkItemParameterMappingPropertyDescriptor.java (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/workitem/WorkItemParameterMappingPropertyDescriptor.java 2008-04-06 23:51:00 UTC (rev 19434)
@@ -0,0 +1,25 @@
+package org.drools.eclipse.flow.ruleflow.view.property.workitem;
+
+import org.drools.workflow.core.node.WorkItemNode;
+import org.eclipse.jface.viewers.CellEditor;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.views.properties.PropertyDescriptor;
+
+public class WorkItemParameterMappingPropertyDescriptor extends PropertyDescriptor {
+
+ private WorkItemNode workItemNode;
+
+ public WorkItemParameterMappingPropertyDescriptor(Object id, String displayName, WorkItemNode workItemNode) {
+ super(id, displayName);
+ this.workItemNode = workItemNode;
+ }
+
+ public CellEditor createPropertyEditor(Composite parent) {
+ WorkItemParameterMappingCellEditor editor = new WorkItemParameterMappingCellEditor(parent, workItemNode);
+ if (getValidator() != null) {
+ editor.setValidator(getValidator());
+ }
+ return editor;
+ }
+
+}
Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/workitem/WorkItemResultMappingCellEditor.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/workitem/WorkItemResultMappingCellEditor.java (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/workitem/WorkItemResultMappingCellEditor.java 2008-04-06 23:51:00 UTC (rev 19434)
@@ -0,0 +1,45 @@
+package org.drools.eclipse.flow.ruleflow.view.property.workitem;
+/*
+ * 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.view.property.BeanDialogCellEditor;
+import org.drools.eclipse.flow.common.view.property.EditBeanDialog;
+import org.drools.workflow.core.node.WorkItemNode;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Shell;
+
+/**
+ * Cell editor for work item result mappings.
+ *
+ * @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
+ */
+public class WorkItemResultMappingCellEditor extends BeanDialogCellEditor {
+
+ private WorkItemNode workItemNode;
+
+ public WorkItemResultMappingCellEditor(Composite parent, WorkItemNode workItemNode) {
+ super(parent);
+ this.workItemNode = workItemNode;
+ }
+
+ protected EditBeanDialog createDialog(Shell shell) {
+ return new WorkItemResultMappingDialog(shell, workItemNode);
+ }
+
+ protected String getLabelText(Object value) {
+ return "";
+ }
+}
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/workitem/WorkItemResultMappingDialog.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/workitem/WorkItemResultMappingDialog.java (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/workitem/WorkItemResultMappingDialog.java 2008-04-06 23:51:00 UTC (rev 19434)
@@ -0,0 +1,238 @@
+package org.drools.eclipse.flow.ruleflow.view.property.workitem;
+/*
+ * Copyright 2005 JBoss Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.drools.eclipse.flow.common.view.property.EditBeanDialog;
+import org.drools.workflow.core.node.WorkItemNode;
+import org.eclipse.jface.resource.JFaceResources;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.TableEditor;
+import org.eclipse.swt.events.FocusEvent;
+import org.eclipse.swt.events.FocusListener;
+import org.eclipse.swt.events.MouseEvent;
+import org.eclipse.swt.events.MouseListener;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.graphics.Rectangle;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.swt.widgets.TableItem;
+import org.eclipse.swt.widgets.Text;
+
+/**
+ * Dialog for editing work item result mappings.
+ *
+ * @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
+ */
+public class WorkItemResultMappingDialog extends EditBeanDialog implements FocusListener, MouseListener {
+
+ private Table table;
+ private Button removeButton;
+ private Text text;
+ private TableEditor editor;
+ private int selectedColumn = -1;
+
+ public WorkItemResultMappingDialog(Shell parentShell, WorkItemNode workItemNode) {
+ super(parentShell, "Result Mapping");
+ setValue(workItemNode.getOutMappings());
+ }
+
+ protected Object updateValue(Object value) {
+ Map<String, String> mapping = new HashMap<String, String>();
+ for (TableItem item: table.getItems()) {
+ mapping.put(item.getText(1), item.getText(0));
+ }
+ return mapping;
+ }
+
+ protected Point getInitialSize() {
+ return new Point(450, 300);
+ }
+
+ public Control createDialogArea(Composite parent) {
+ Composite composite = (Composite) super.createDialogArea(parent);
+ GridLayout layout = new GridLayout();
+ layout.numColumns = 2;
+ composite.setLayout(layout);
+
+ table = new Table(composite, SWT.SINGLE);
+ GridData gd = new GridData();
+ gd.verticalSpan = 3;
+ gd.grabExcessHorizontalSpace = true;
+ gd.grabExcessVerticalSpace = true;
+ gd.verticalAlignment = GridData.FILL;
+ gd.horizontalAlignment = GridData.FILL;
+ table.setLayoutData(gd);
+ table.addSelectionListener(new SelectionListener() {
+ public void widgetDefaultSelected(SelectionEvent e) {
+ removeButton.setEnabled(table.getSelectionIndex() != -1);
+ }
+ public void widgetSelected(SelectionEvent e) {
+ removeButton.setEnabled(table.getSelectionIndex() != -1);
+ }
+ });
+ table.addMouseListener(this);
+ table.setHeaderVisible(true);
+ table.setLinesVisible(true);
+ TableColumn variableNameColumn = new TableColumn(table, SWT.LEFT);
+ variableNameColumn.setText("Variable");
+ variableNameColumn.setWidth(150);
+ TableColumn parameterNameColumn = new TableColumn(table, SWT.LEFT);
+ parameterNameColumn.setText("Result Parameter");
+ parameterNameColumn.setWidth(225);
+
+ editor = new TableEditor(table);
+ text = new Text(table, SWT.NORMAL);
+ text.setVisible(false);
+ text.setText("");
+ editor.minimumWidth = text.getSize().x;
+ editor.horizontalAlignment = SWT.LEFT;
+ editor.grabHorizontal = true;
+
+ Button addButton = new Button(composite, SWT.PUSH);
+ addButton.setText("Add");
+ addButton.setFont(JFaceResources.getDialogFont());
+ addButton.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent event) {
+ addButtonPressed();
+ }
+ });
+ gd = new GridData();
+ gd.horizontalAlignment = SWT.FILL;
+ addButton.setLayoutData(gd);
+
+ removeButton = new Button(composite, SWT.PUSH);
+ removeButton.setText("Remove");
+ removeButton.setFont(JFaceResources.getDialogFont());
+ removeButton.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent event) {
+ removeButtonPressed();
+ }
+ });
+ gd = new GridData();
+ removeButton.setLayoutData(gd);
+ removeButton.setEnabled(false);
+
+ updateTable();
+
+ return composite;
+ }
+
+ private void updateTable() {
+ Map<String, String> mapping = (Map<String, String>) getValue();
+ for (Map.Entry<String, String> entry: mapping.entrySet()) {
+ TableItem item = new TableItem(table, SWT.NONE);
+ item.setText(new String[] { entry.getValue(), entry.getKey()} );
+ }
+ }
+
+ private void addButtonPressed() {
+ TableItem item = new TableItem(table, SWT.NONE);
+ item.setText(0, "variable");
+ item.setText(1, "result parameter");
+ table.setSelection(item);
+ }
+
+ private void removeButtonPressed() {
+ int i = table.getSelectionIndex();
+ if (i == -1) {
+ return;
+ }
+ table.remove(i);
+ removeButton.setEnabled(table.getItemCount() == 0);
+ }
+
+ private void doEdit() {
+ if (text.isVisible()) {
+ endEdit();
+ }
+ if (table.getSelectionIndex() == -1 || selectedColumn == -1) return;
+ TableItem selection = table.getItem(table.getSelectionIndex());
+ String value = selection.getText(selectedColumn);
+ text.setText(value == null ? "" : value);
+ editor.setEditor(text, selection, selectedColumn);
+ text.setVisible(true);
+ text.selectAll();
+ text.setFocus();
+ text.addFocusListener(this);
+ }
+
+ private void endEdit() {
+ text.setVisible(false);
+ text.setText("");
+ text.removeFocusListener(this);
+ }
+
+ public void focusGained(FocusEvent e) {
+ }
+
+ public void focusLost(FocusEvent e) {
+ if (e.widget == text) {
+ applyValue();
+ endEdit();
+ }
+ }
+
+ public void mouseDoubleClick(MouseEvent e) {
+ }
+
+ public void mouseDown(MouseEvent e) {
+ selectedColumn = getSelectedColumn(e.x, e.y);
+ if (selectedColumn == -1) return;
+ doEdit();
+ }
+
+ public void mouseUp(MouseEvent e) {
+ }
+
+ private int getSelectedColumn(int x, int y) {
+ int columnToEdit = -1;
+ int columns = table.getColumnCount();
+ if (table.getSelection().length == 0) {
+ return -1;
+ }
+ for (int i = 0; i < columns; i++) {
+ Rectangle bounds = table.getSelection()[0].getBounds(i);
+ if (bounds.contains(x, y)) {
+ columnToEdit = i;
+ break;
+ }
+ }
+ return columnToEdit;
+ }
+
+
+ private void applyValue() {
+ int i = table.getSelectionIndex();
+ if (i == -1) {
+ return;
+ }
+ TableItem item = table.getItem(i);
+ item.setText(selectedColumn, text.getText());
+ }
+
+}
Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/workitem/WorkItemResultMappingPropertyDescriptor.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/workitem/WorkItemResultMappingPropertyDescriptor.java (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/workitem/WorkItemResultMappingPropertyDescriptor.java 2008-04-06 23:51:00 UTC (rev 19434)
@@ -0,0 +1,25 @@
+package org.drools.eclipse.flow.ruleflow.view.property.workitem;
+
+import org.drools.workflow.core.node.WorkItemNode;
+import org.eclipse.jface.viewers.CellEditor;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.views.properties.PropertyDescriptor;
+
+public class WorkItemResultMappingPropertyDescriptor extends PropertyDescriptor {
+
+ private WorkItemNode workItemNode;
+
+ public WorkItemResultMappingPropertyDescriptor(Object id, String displayName, WorkItemNode workItemNode) {
+ super(id, displayName);
+ this.workItemNode = workItemNode;
+ }
+
+ public CellEditor createPropertyEditor(Composite parent) {
+ WorkItemParameterMappingCellEditor editor = new WorkItemParameterMappingCellEditor(parent, workItemNode);
+ if (getValidator() != null) {
+ editor.setValidator(getValidator());
+ }
+ return editor;
+ }
+
+}
Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/preferences/DroolsBuildPathPropertyPage.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/preferences/DroolsBuildPathPropertyPage.java (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/preferences/DroolsBuildPathPropertyPage.java 2008-04-06 23:51:00 UTC (rev 19434)
@@ -0,0 +1,5 @@
+package org.drools.eclipse.preferences;
+
+public class DroolsBuildPathPropertyPage {
+
+}
Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/view/rules/RulesView.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/view/rules/RulesView.java 2008-04-06 23:49:40 UTC (rev 19433)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/view/rules/RulesView.java 2008-04-06 23:51:00 UTC (rev 19434)
@@ -10,17 +10,16 @@
import java.util.List;
import java.util.Map;
-import org.drools.compiler.PackageBuilder;
-import org.drools.compiler.ProcessBuilder;
import org.drools.eclipse.DRLInfo;
import org.drools.eclipse.DroolsEclipsePlugin;
+import org.drools.eclipse.ProcessInfo;
import org.drools.eclipse.core.DroolsElement;
import org.drools.eclipse.core.DroolsModelBuilder;
import org.drools.eclipse.core.Function;
import org.drools.eclipse.core.Global;
import org.drools.eclipse.core.Package;
-import org.drools.eclipse.core.Query;
import org.drools.eclipse.core.Process;
+import org.drools.eclipse.core.Query;
import org.drools.eclipse.core.Rule;
import org.drools.eclipse.core.RuleSet;
import org.drools.eclipse.core.Template;
@@ -28,8 +27,6 @@
import org.drools.eclipse.core.ui.DroolsLabelProvider;
import org.drools.eclipse.core.ui.DroolsTreeSorter;
import org.drools.eclipse.core.ui.FilterActionGroup;
-import org.drools.eclipse.flow.common.editor.core.ProcessWrapper;
-import org.drools.eclipse.flow.ruleflow.core.RuleFlowProcessWrapper;
import org.drools.lang.descr.FactTemplateDescr;
import org.drools.lang.descr.FunctionDescr;
import org.drools.lang.descr.GlobalDescr;
@@ -64,8 +61,6 @@
import org.eclipse.ui.part.ViewPart;
import org.eclipse.ui.texteditor.ITextEditor;
-import com.thoughtworks.xstream.XStream;
-
public class RulesView extends ViewPart implements IDoubleClickListener, IResourceVisitor, IResourceChangeListener {
private final RuleSet ruleSet = DroolsModelBuilder.createRuleSet();
@@ -210,31 +205,21 @@
} else if ("rf".equals(resource.getFileExtension())) {
try {
String processString = convertToString(file.getContents());
- XStream stream = new XStream();
- stream.setMode(XStream.ID_REFERENCES);
-
- ClassLoader oldLoader = Thread.currentThread().getContextClassLoader();
- ClassLoader newLoader = this.getClass().getClassLoader();
- try {
- Thread.currentThread().setContextClassLoader(newLoader);
- Object o = stream.fromXML(processString);
- if (o instanceof ProcessWrapper) {
- String packageName = ((ProcessWrapper) o).getProcess().getPackageName();
- Package pkg = ruleSet.getPackage(packageName);
- if (pkg == null) {
- pkg = DroolsModelBuilder.addPackage(ruleSet, packageName, 0, 0);
- }
- Process process = DroolsModelBuilder.addProcess(pkg, ((ProcessWrapper) o).getProcess().getId(), file);
- List droolsElements = (List) resourcesMap.get(file);
- if (droolsElements == null) {
- droolsElements = new ArrayList();
- resourcesMap.put(file, droolsElements);
- }
- droolsElements.add(process);
- }
- } finally {
- Thread.currentThread().setContextClassLoader(oldLoader);
- }
+ ProcessInfo processInfo = DroolsEclipsePlugin.getDefault().parseProcess(processString, resource);
+ if (processInfo != null && processInfo.getProcess() != null) {
+ String packageName = processInfo.getProcess().getPackageName();
+ Package pkg = ruleSet.getPackage(packageName);
+ if (pkg == null) {
+ pkg = DroolsModelBuilder.addPackage(ruleSet, packageName, 0, 0);
+ }
+ Process process = DroolsModelBuilder.addProcess(pkg, processInfo.getProcess().getId(), file);
+ List droolsElements = (List) resourcesMap.get(file);
+ if (droolsElements == null) {
+ droolsElements = new ArrayList();
+ resourcesMap.put(file, droolsElements);
+ }
+ droolsElements.add(process);
+ }
} catch (Throwable t) {
DroolsEclipsePlugin.log(t);
}
@@ -261,7 +246,9 @@
treeViewer.getControl().getDisplay().asyncExec(
new Runnable() {
public void run() {
- treeViewer.refresh();
+ if (!treeViewer.getControl().isDisposed()) {
+ treeViewer.refresh();
+ }
}
}
);
Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/resources/org/drools/eclipse/flow/ruleflow/SampleRuleFlow.rf.template
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/resources/org/drools/eclipse/flow/ruleflow/SampleRuleFlow.rf.template 2008-04-06 23:49:40 UTC (rev 19433)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/resources/org/drools/eclipse/flow/ruleflow/SampleRuleFlow.rf.template 2008-04-06 23:51:00 UTC (rev 19434)
@@ -1,44 +1,17 @@
-<org.drools.eclipse.flow.ruleflow.core.WorkflowProcessWrapper id="1" serialization="custom">
- <org.drools.eclipse.flow.common.editor.core.ProcessWrapper>
- <default>
- <elements id="2">
- <entry>
- <string>1-Wrapper</string>
- <org.drools.eclipse.flow.ruleflow.core.StartNodeWrapper id="3" serialization="custom">
- <org.drools.eclipse.flow.common.editor.core.DefaultElementWrapper>
- <default>
- <constraint id="4">
- <x>100</x>
- <y>100</y>
- <width>80</width>
- <height>40</height>
- </constraint>
- <element class="org.drools.ruleflow.core.impl.StartNode" id="5">
- <id>1</id>
- <name>Start</name>
- <incomingConnections id="6"/>
- <outgoingConnections id="7"/>
- </element>
- <incomingConnections id="8"/>
- <outgoingConnections id="9"/>
- </default>
- </org.drools.eclipse.flow.common.editor.core.DefaultElementWrapper>
- </org.drools.eclipse.flow.ruleflow.core.StartNodeWrapper>
- </entry>
- </elements>
- <process class="org.drools.ruleflow.core.impl.RuleFlowProcess" id="10">
- <nodes id="11">
- <entry>
- <long>1</long>
- <org.drools.ruleflow.core.impl.StartNode reference="5"/>
- </entry>
- </nodes>
- <variables id="12"/>
- <lastNodeId>1</lastNodeId>
- <id>0</id>
- <name>flow</name>
- <type>Workflow</type>
- </process>
- </default>
- </org.drools.eclipse.flow.common.editor.core.ProcessWrapper>
-</org.drools.eclipse.flow.ruleflow.core.WorkflowProcessWrapper>
\ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?>
+<process xmlns="http://drools.org/drools-4.0/process"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
+ xs:schemaLocation="http://drools.org/drools-4.0/process drools-processes-4.0.xsd"
+ type="RuleFlow" name="flow" >
+
+ <header>
+ </header>
+
+ <nodes>
+ <start id="1" name="Start" x="100" y="100" />
+ </nodes>
+
+ <connections>
+ </connections>
+
+</process>
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/resources/org/drools/eclipse/wizard/project/Sample.xls.template
===================================================================
(Binary files differ)
Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/resources/org/drools/eclipse/wizard/project/ruleflow.rf.template
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/resources/org/drools/eclipse/wizard/project/ruleflow.rf.template 2008-04-06 23:49:40 UTC (rev 19433)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/resources/org/drools/eclipse/wizard/project/ruleflow.rf.template 2008-04-06 23:51:00 UTC (rev 19434)
@@ -1,250 +1,23 @@
-<org.drools.eclipse.flow.ruleflow.core.RuleFlowProcessWrapper id="1" serialization="custom">
- <org.drools.eclipse.flow.common.editor.core.ProcessWrapper>
- <default>
- <elements id="2">
- <entry>
- <string>3-Wrapper</string>
- <org.drools.eclipse.flow.ruleflow.core.RuleSetNodeWrapper id="3" serialization="custom">
- <org.drools.eclipse.flow.common.editor.core.DefaultElementWrapper>
- <default>
- <constraint id="4">
- <x>280</x>
- <y>103</y>
- <width>80</width>
- <height>40</height>
- </constraint>
- <element class="org.drools.workflow.core.node.RuleSetNode" id="5">
- <ruleFlowGroup>goodbye</ruleFlowGroup>
- <id>3</id>
- <name>Goodbye</name>
- <incomingConnections id="6">
- <entry>
- <string>DROOLS_DEFAULT</string>
- <list id="7">
- <org.drools.workflow.core.impl.ConnectionImpl id="8">
- <from class="org.drools.workflow.core.node.RuleSetNode" id="9">
- <ruleFlowGroup>hello</ruleFlowGroup>
- <id>2</id>
- <name>Hello</name>
- <incomingConnections id="10">
- <entry>
- <string>DROOLS_DEFAULT</string>
- <list id="11">
- <org.drools.workflow.core.impl.ConnectionImpl id="12">
- <from class="org.drools.workflow.core.node.StartNode" id="13">
- <id>1</id>
- <name>Start</name>
- <incomingConnections id="14"/>
- <outgoingConnections id="15">
- <entry>
- <string>DROOLS_DEFAULT</string>
- <list id="16">
- <org.drools.workflow.core.impl.ConnectionImpl reference="12"/>
- </list>
- </entry>
- </outgoingConnections>
- <nodeContainer class="org.drools.ruleflow.core.RuleFlowProcess" id="17">
- <nodeContainer class="org.drools.ruleflow.core.RuleFlowProcess$WorkflowProcessNodeContainer" id="18">
- <outer-class class="org.drools.ruleflow.core.RuleFlowProcess" reference="17"/>
- <nodes id="19">
- <entry>
- <long>1</long>
- <org.drools.workflow.core.node.StartNode reference="13"/>
- </entry>
- <entry>
- <long>2</long>
- <org.drools.workflow.core.node.RuleSetNode reference="9"/>
- </entry>
- <entry>
- <long>3</long>
- <org.drools.workflow.core.node.RuleSetNode reference="5"/>
- </entry>
- <entry>
- <long>4</long>
- <org.drools.workflow.core.node.EndNode id="20">
- <id>4</id>
- <name>End</name>
- <incomingConnections id="21">
- <entry>
- <string>DROOLS_DEFAULT</string>
- <list id="22">
- <org.drools.workflow.core.impl.ConnectionImpl id="23">
- <from class="org.drools.workflow.core.node.RuleSetNode" reference="5"/>
- <to class="org.drools.workflow.core.node.EndNode" reference="20"/>
- <fromType>DROOLS_DEFAULT</fromType>
- <toType>DROOLS_DEFAULT</toType>
- </org.drools.workflow.core.impl.ConnectionImpl>
- </list>
- </entry>
- </incomingConnections>
- <outgoingConnections id="24"/>
- <nodeContainer class="org.drools.ruleflow.core.RuleFlowProcess" reference="17"/>
- </org.drools.workflow.core.node.EndNode>
- </entry>
- </nodes>
- <lastNodeId>4</lastNodeId>
- </nodeContainer>
- <id>com.sample.ruleflow</id>
- <name>ruleflow</name>
- <version>1</version>
- <type>RuleFlow</type>
- <packageName>com.sample</packageName>
- <variableScope class="org.drools.process.core.impl.VariableScopeImpl" id="25">
- <variables id="26"/>
- </variableScope>
- </nodeContainer>
- </from>
- <to class="org.drools.workflow.core.node.RuleSetNode" reference="9"/>
- <fromType>DROOLS_DEFAULT</fromType>
- <toType>DROOLS_DEFAULT</toType>
- </org.drools.workflow.core.impl.ConnectionImpl>
- </list>
- </entry>
- </incomingConnections>
- <outgoingConnections id="27">
- <entry>
- <string>DROOLS_DEFAULT</string>
- <list id="28">
- <org.drools.workflow.core.impl.ConnectionImpl reference="8"/>
- </list>
- </entry>
- </outgoingConnections>
- <nodeContainer class="org.drools.ruleflow.core.RuleFlowProcess" reference="17"/>
- </from>
- <to class="org.drools.workflow.core.node.RuleSetNode" reference="5"/>
- <fromType>DROOLS_DEFAULT</fromType>
- <toType>DROOLS_DEFAULT</toType>
- </org.drools.workflow.core.impl.ConnectionImpl>
- </list>
- </entry>
- </incomingConnections>
- <outgoingConnections id="29">
- <entry>
- <string>DROOLS_DEFAULT</string>
- <list id="30">
- <org.drools.workflow.core.impl.ConnectionImpl reference="23"/>
- </list>
- </entry>
- </outgoingConnections>
- <nodeContainer class="org.drools.ruleflow.core.RuleFlowProcess" reference="17"/>
- </element>
- <incomingConnections id="31">
- <org.drools.eclipse.flow.ruleflow.core.ConnectionWrapper id="32" serialization="custom">
- <org.drools.eclipse.flow.common.editor.core.ElementConnection>
- <default>
- <bendpoints id="33"/>
- <source class="org.drools.eclipse.flow.ruleflow.core.RuleSetNodeWrapper" id="34" serialization="custom">
- <org.drools.eclipse.flow.common.editor.core.DefaultElementWrapper>
- <default>
- <constraint id="35">
- <x>147</x>
- <y>104</y>
- <width>80</width>
- <height>40</height>
- </constraint>
- <element class="org.drools.workflow.core.node.RuleSetNode" reference="9"/>
- <incomingConnections id="36">
- <org.drools.eclipse.flow.ruleflow.core.ConnectionWrapper id="37" serialization="custom">
- <org.drools.eclipse.flow.common.editor.core.ElementConnection>
- <default>
- <bendpoints id="38"/>
- <source class="org.drools.eclipse.flow.ruleflow.core.StartNodeWrapper" id="39" serialization="custom">
- <org.drools.eclipse.flow.common.editor.core.DefaultElementWrapper>
- <default>
- <constraint id="40">
- <x>22</x>
- <y>104</y>
- <width>80</width>
- <height>40</height>
- </constraint>
- <element class="org.drools.workflow.core.node.StartNode" reference="13"/>
- <incomingConnections id="41"/>
- <outgoingConnections id="42">
- <org.drools.eclipse.flow.ruleflow.core.ConnectionWrapper reference="37"/>
- </outgoingConnections>
- </default>
- </org.drools.eclipse.flow.common.editor.core.DefaultElementWrapper>
- </source>
- <target class="org.drools.eclipse.flow.ruleflow.core.RuleSetNodeWrapper" reference="34"/>
- </default>
- </org.drools.eclipse.flow.common.editor.core.ElementConnection>
- <org.drools.eclipse.flow.ruleflow.core.ConnectionWrapper>
- <default>
- <connection reference="12"/>
- </default>
- </org.drools.eclipse.flow.ruleflow.core.ConnectionWrapper>
- </org.drools.eclipse.flow.ruleflow.core.ConnectionWrapper>
- </incomingConnections>
- <outgoingConnections id="43">
- <org.drools.eclipse.flow.ruleflow.core.ConnectionWrapper reference="32"/>
- </outgoingConnections>
- <parent class="org.drools.eclipse.flow.ruleflow.core.RuleFlowProcessWrapper" reference="1"/>
- </default>
- </org.drools.eclipse.flow.common.editor.core.DefaultElementWrapper>
- </source>
- <target class="org.drools.eclipse.flow.ruleflow.core.RuleSetNodeWrapper" reference="3"/>
- </default>
- </org.drools.eclipse.flow.common.editor.core.ElementConnection>
- <org.drools.eclipse.flow.ruleflow.core.ConnectionWrapper>
- <default>
- <connection reference="8"/>
- </default>
- </org.drools.eclipse.flow.ruleflow.core.ConnectionWrapper>
- </org.drools.eclipse.flow.ruleflow.core.ConnectionWrapper>
- </incomingConnections>
- <outgoingConnections id="44">
- <org.drools.eclipse.flow.ruleflow.core.ConnectionWrapper id="45" serialization="custom">
- <org.drools.eclipse.flow.common.editor.core.ElementConnection>
- <default>
- <bendpoints id="46"/>
- <source class="org.drools.eclipse.flow.ruleflow.core.RuleSetNodeWrapper" reference="3"/>
- <target class="org.drools.eclipse.flow.ruleflow.core.EndNodeWrapper" id="47" serialization="custom">
- <org.drools.eclipse.flow.common.editor.core.DefaultElementWrapper>
- <default>
- <constraint id="48">
- <x>404</x>
- <y>103</y>
- <width>80</width>
- <height>40</height>
- </constraint>
- <element class="org.drools.workflow.core.node.EndNode" reference="20"/>
- <incomingConnections id="49">
- <org.drools.eclipse.flow.ruleflow.core.ConnectionWrapper reference="45"/>
- </incomingConnections>
- <outgoingConnections id="50"/>
- <parent class="org.drools.eclipse.flow.ruleflow.core.RuleFlowProcessWrapper" reference="1"/>
- </default>
- </org.drools.eclipse.flow.common.editor.core.DefaultElementWrapper>
- </target>
- </default>
- </org.drools.eclipse.flow.common.editor.core.ElementConnection>
- <org.drools.eclipse.flow.ruleflow.core.ConnectionWrapper>
- <default>
- <connection reference="23"/>
- </default>
- </org.drools.eclipse.flow.ruleflow.core.ConnectionWrapper>
- </org.drools.eclipse.flow.ruleflow.core.ConnectionWrapper>
- </outgoingConnections>
- <parent class="org.drools.eclipse.flow.ruleflow.core.RuleFlowProcessWrapper" reference="1"/>
- </default>
- </org.drools.eclipse.flow.common.editor.core.DefaultElementWrapper>
- </org.drools.eclipse.flow.ruleflow.core.RuleSetNodeWrapper>
- </entry>
- <entry>
- <string>4-Wrapper</string>
- <org.drools.eclipse.flow.ruleflow.core.EndNodeWrapper reference="47"/>
- </entry>
- <entry>
- <string>2-Wrapper</string>
- <org.drools.eclipse.flow.ruleflow.core.RuleSetNodeWrapper reference="34"/>
- </entry>
- <entry>
- <string>1-Wrapper</string>
- <org.drools.eclipse.flow.ruleflow.core.StartNodeWrapper reference="39"/>
- </entry>
- </elements>
- <process class="org.drools.ruleflow.core.RuleFlowProcess" reference="17"/>
- <routerLayout>2</routerLayout>
- </default>
- </org.drools.eclipse.flow.common.editor.core.ProcessWrapper>
-</org.drools.eclipse.flow.ruleflow.core.RuleFlowProcessWrapper>
\ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?>
+<process xmlns="http://drools.org/drools-4.0/process"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
+ xs:schemaLocation="http://drools.org/drools-4.0/process drools-processes-4.0.xsd"
+ type="RuleFlow" name="ruleflow" id="com.sample.ruleflow" package-name="com.sample" >
+
+ <header>
+ </header>
+
+ <nodes>
+ <start id="1" name="Start" x="61" y="95" width="80" height="40" />
+ <ruleSet id="2" name="Hello" x="200" y="94" width="80" height="40" ruleFlowGroup="hello" />
+ <ruleSet id="3" name="Goodbye" x="328" y="95" ruleFlowGroup="goodbye" />
+ <end id="4" name="End" x="466" y="95" width="80" height="40" />
+ </nodes>
+
+ <connections>
+ <connection from="1" to="2"/>
+ <connection from="2" to="3"/>
+ <connection from="3" to="4"/>
+ </connections>
+
+</process>
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/resources/org/drools/eclipse/wizard/project/ruleflow.rfm.template
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/resources/org/drools/eclipse/wizard/project/ruleflow.rfm.template 2008-04-06 23:49:40 UTC (rev 19433)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/resources/org/drools/eclipse/wizard/project/ruleflow.rfm.template 2008-04-06 23:51:00 UTC (rev 19434)
@@ -1,115 +1,23 @@
-<org.drools.ruleflow.core.RuleFlowProcess id="1">
- <nodeContainer class="org.drools.ruleflow.core.RuleFlowProcess$WorkflowProcessNodeContainer" id="2">
- <outer-class class="org.drools.ruleflow.core.RuleFlowProcess" reference="1"/>
- <nodes id="3">
- <entry>
- <long>1</long>
- <org.drools.workflow.core.node.StartNode id="4">
- <id>1</id>
- <name>Start</name>
- <incomingConnections id="5"/>
- <outgoingConnections id="6">
- <entry>
- <string>DROOLS_DEFAULT</string>
- <list id="7">
- <org.drools.workflow.core.impl.ConnectionImpl id="8">
- <from class="org.drools.workflow.core.node.StartNode" reference="4"/>
- <to class="org.drools.workflow.core.node.RuleSetNode" id="9">
- <ruleFlowGroup>hello</ruleFlowGroup>
- <id>2</id>
- <name>Hello</name>
- <incomingConnections id="10">
- <entry>
- <string>DROOLS_DEFAULT</string>
- <list id="11">
- <org.drools.workflow.core.impl.ConnectionImpl reference="8"/>
- </list>
- </entry>
- </incomingConnections>
- <outgoingConnections id="12">
- <entry>
- <string>DROOLS_DEFAULT</string>
- <list id="13">
- <org.drools.workflow.core.impl.ConnectionImpl id="14">
- <from class="org.drools.workflow.core.node.RuleSetNode" reference="9"/>
- <to class="org.drools.workflow.core.node.RuleSetNode" id="15">
- <ruleFlowGroup>goodbye</ruleFlowGroup>
- <id>3</id>
- <name>Goodbye</name>
- <incomingConnections id="16">
- <entry>
- <string>DROOLS_DEFAULT</string>
- <list id="17">
- <org.drools.workflow.core.impl.ConnectionImpl reference="14"/>
- </list>
- </entry>
- </incomingConnections>
- <outgoingConnections id="18">
- <entry>
- <string>DROOLS_DEFAULT</string>
- <list id="19">
- <org.drools.workflow.core.impl.ConnectionImpl id="20">
- <from class="org.drools.workflow.core.node.RuleSetNode" reference="15"/>
- <to class="org.drools.workflow.core.node.EndNode" id="21">
- <id>4</id>
- <name>End</name>
- <incomingConnections id="22">
- <entry>
- <string>DROOLS_DEFAULT</string>
- <list id="23">
- <org.drools.workflow.core.impl.ConnectionImpl reference="20"/>
- </list>
- </entry>
- </incomingConnections>
- <outgoingConnections id="24"/>
- <nodeContainer class="org.drools.ruleflow.core.RuleFlowProcess" reference="1"/>
- </to>
- <fromType>DROOLS_DEFAULT</fromType>
- <toType>DROOLS_DEFAULT</toType>
- </org.drools.workflow.core.impl.ConnectionImpl>
- </list>
- </entry>
- </outgoingConnections>
- <nodeContainer class="org.drools.ruleflow.core.RuleFlowProcess" reference="1"/>
- </to>
- <fromType>DROOLS_DEFAULT</fromType>
- <toType>DROOLS_DEFAULT</toType>
- </org.drools.workflow.core.impl.ConnectionImpl>
- </list>
- </entry>
- </outgoingConnections>
- <nodeContainer class="org.drools.ruleflow.core.RuleFlowProcess" reference="1"/>
- </to>
- <fromType>DROOLS_DEFAULT</fromType>
- <toType>DROOLS_DEFAULT</toType>
- </org.drools.workflow.core.impl.ConnectionImpl>
- </list>
- </entry>
- </outgoingConnections>
- <nodeContainer class="org.drools.ruleflow.core.RuleFlowProcess" reference="1"/>
- </org.drools.workflow.core.node.StartNode>
- </entry>
- <entry>
- <long>2</long>
- <org.drools.workflow.core.node.RuleSetNode reference="9"/>
- </entry>
- <entry>
- <long>3</long>
- <org.drools.workflow.core.node.RuleSetNode reference="15"/>
- </entry>
- <entry>
- <long>4</long>
- <org.drools.workflow.core.node.EndNode reference="21"/>
- </entry>
- </nodes>
- <lastNodeId>4</lastNodeId>
- </nodeContainer>
- <id>com.sample.ruleflow</id>
- <name>ruleflow</name>
- <version>1</version>
- <type>RuleFlow</type>
- <packageName>com.sample</packageName>
- <variableScope class="org.drools.process.core.impl.VariableScopeImpl" id="25">
- <variables id="26"/>
- </variableScope>
-</org.drools.ruleflow.core.RuleFlowProcess>
\ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?>
+<process xmlns="http://drools.org/drools-4.0/process"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
+ xs:schemaLocation="http://drools.org/drools-4.0/process drools-processes-4.0.xsd"
+ type="RuleFlow" name="ruleflow" id="com.sample.ruleflow" package-name="com.sample" >
+
+ <header>
+ </header>
+
+ <nodes>
+ <start id="1" name="Start" />
+ <ruleSet id="2" name="Hello" ruleFlowGroup="hello" />
+ <ruleSet id="3" name="Goodbye" ruleFlowGroup="goodbye" />
+ <end id="4" name="End" />
+ </nodes>
+
+ <connections>
+ <connection from="1" to="2"/>
+ <connection from="2" to="3"/>
+ <connection from="3" to="4"/>
+ </connections>
+
+</process>
\ No newline at end of file
More information about the jboss-svn-commits
mailing list