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

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Oct 7 20:35:11 EDT 2008


Author: KrisVerlaenen
Date: 2008-10-07 20:35:10 -0400 (Tue, 07 Oct 2008)
New Revision: 23355

Modified:
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/WorkEditor.java
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/editpart/work/EmailCustomEditor.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/ruleflow/editor/editpart/WorkItemEditPart.java
Log:
JBRULES-1796: Custom work item editors should use command
 - updating the work of a work item using a custom editor is now implemented using a command

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/WorkEditor.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/WorkEditor.java	2008-10-07 23:43:59 UTC (rev 23354)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/WorkEditor.java	2008-10-08 00:35:10 UTC (rev 23355)
@@ -9,7 +9,7 @@
     
     void setWork(Work work);
     
-    void show();
+    boolean show();
     
     Work getWork();
 

Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/editpart/work/EmailCustomEditor.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/editpart/work/EmailCustomEditor.java	2008-10-07 23:43:59 UTC (rev 23354)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/editpart/work/EmailCustomEditor.java	2008-10-08 00:35:10 UTC (rev 23355)
@@ -51,6 +51,7 @@
 
     public EmailCustomEditor(Shell parentShell) {
         super(parentShell, "Custom Work Editor");
+        setBlockOnOpen(true);
     }
 
     protected Control createDialogArea(Composite parent) {
@@ -219,7 +220,7 @@
     }
 
     protected Object updateValue(Object value) {
-        Work work = getWork();
+        Work work = new WorkImpl();
         work.setName(((Work) value).getName());
         work.setParameter("From", fromText.getText());
         String to = "";
@@ -232,6 +233,7 @@
         work.setParameter("To", to);
         work.setParameter("Subject", subjectText.getText());
         work.setParameter("Text", bodyText.getText());
+        work.setParameterDefinitions(((Work) value).getParameterDefinitions());
         return work;
     }
 
@@ -250,8 +252,9 @@
         }
     }
 
-    public void show() {
-        open();
+    public boolean show() {
+        int result = open();
+        return result == OK;
     }
 
     private class TypeLabelProvider extends ColumnLabelProvider {

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-10-07 23:43:59 UTC (rev 23354)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/editpart/work/SampleCustomEditor.java	2008-10-08 00:35:10 UTC (rev 23355)
@@ -32,6 +32,7 @@
     
     public SampleCustomEditor(Shell parentShell) {
         super(parentShell, "Custom Work Editor");
+        setBlockOnOpen(true);
     }
     
     protected Control createDialogArea(Composite parent) {
@@ -77,6 +78,7 @@
             String text = entry.getValue().getText();
             work.setParameter(entry.getKey(), "".equals(text) ? null : text);
         }
+        work.setParameterDefinitions(((Work) value).getParameterDefinitions());
         return work;
     }
         
@@ -92,8 +94,9 @@
         this.workDefinition = workDefinition;
     }
 
-    public void show() {
-        open();
+    public boolean show() {
+        int result = open();
+        return result == OK;
     }
 
 }

Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/WorkItemEditPart.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/WorkItemEditPart.java	2008-10-07 23:43:59 UTC (rev 23354)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/WorkItemEditPart.java	2008-10-08 00:35:10 UTC (rev 23355)
@@ -28,6 +28,7 @@
 import org.drools.eclipse.flow.ruleflow.skin.SkinProvider;
 import org.drools.eclipse.preferences.IDroolsConstants;
 import org.drools.eclipse.util.ProjectClassLoader;
+import org.drools.process.core.Work;
 import org.drools.process.core.WorkDefinition;
 import org.drools.process.core.WorkDefinitionExtension;
 import org.drools.process.core.WorkEditor;
@@ -40,6 +41,8 @@
 import org.eclipse.draw2d.geometry.Point;
 import org.eclipse.draw2d.geometry.Rectangle;
 import org.eclipse.gef.Request;
+import org.eclipse.gef.commands.Command;
+import org.eclipse.gef.commands.CommandStack;
 import org.eclipse.gef.requests.DropRequest;
 import org.eclipse.jdt.core.IJavaProject;
 import org.eclipse.jface.resource.ImageDescriptor;
@@ -47,6 +50,7 @@
 import org.eclipse.swt.graphics.Image;
 import org.eclipse.swt.widgets.Display;
 import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.views.properties.IPropertySource;
 
 /**
  * EditPart for a Task node.
@@ -115,13 +119,19 @@
         if (workDefinition instanceof WorkDefinitionExtension) {
             String editor = ((WorkDefinitionExtension) workDefinition).getCustomEditor();
             if (editor != null) {
-                openEditor(editor, workDefinition);
+                Work work = openEditor(editor, workDefinition);
+                if (work != null) {
+	                SetWorkCommand setCommand = new SetWorkCommand();
+	        		setCommand.setPropertyValue(work);
+	                CommandStack stack = getViewer().getEditDomain().getCommandStack();
+	                stack.execute(setCommand);
+                }
             }
         }
     }
     
     @SuppressWarnings("unchecked")
-	private void openEditor(String editorClassName, WorkDefinition workDefinition) {
+	private Work openEditor(String editorClassName, WorkDefinition workDefinition) {
         IJavaProject javaProject = getProject();
         if (javaProject != null) {
             try {
@@ -135,8 +145,8 @@
                     editor.setWorkDefinition(workDefinition);
                     WorkItemNode workItemNode = getWorkItemWrapper().getWorkItemNode();
                     editor.setWork(workItemNode.getWork());
-                    editor.show();
-                    workItemNode.setWork(editor.getWork());
+                    boolean result = editor.show();
+                    return result ? editor.getWork() : null;
                 } finally {
                     Thread.currentThread().setContextClassLoader(oldLoader);
                 }
@@ -144,6 +154,7 @@
                 DroolsEclipsePlugin.log(e);
             }
         }
+        return null;
     }
     
     public static interface WorkItemFigureInterface extends IFigure {
@@ -216,4 +227,37 @@
         	super.validate();
         }
     }
+    
+    private class SetWorkCommand extends Command {
+
+		protected Work propertyValue;
+		protected Work undoValue;
+		protected IPropertySource target;
+
+		public SetWorkCommand() {
+			super("Set Work Value");
+		}
+
+		public boolean canExecute() {
+			return true;
+		}
+
+		public void execute() {
+			undoValue = getWorkItemWrapper().getWorkItemNode().getWork();
+			getWorkItemWrapper().getWorkItemNode().setWork(propertyValue);
+		}
+
+		public void redo() {
+			execute();
+		}
+
+		public void setPropertyValue(Work val) {
+			propertyValue = val;
+		}
+
+		public void undo() {
+			getWorkItemWrapper().getWorkItemNode().setWork(undoValue);
+		}
+		
+	}
 }




More information about the jboss-svn-commits mailing list