[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