[jboss-svn-commits] JBL Code SVN: r32846 - labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Wed May 12 15:31:21 EDT 2010
Author: eaa
Date: 2010-05-12 15:31:20 -0400 (Wed, 12 May 2010)
New Revision: 32846
Modified:
labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/ActionCallMethodWidget.java
labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/ActionInsertFactWidget.java
labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/ActionRetractFactWidget.java
labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/ActionSetFieldWidget.java
labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/ActionValueEditor.java
labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/CompositeFactPatternWidget.java
labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/ConstraintValueEditor.java
labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/DSLSentenceWidget.java
labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/DefaultLiteralEditor.java
labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/EnumDropDownLabel.java
labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/ExpressionBuilder.java
labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/FactPatternWidget.java
labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/FreeFormLineWidget.java
labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/FromAccumulateCompositeFactPatternWidget.java
labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/FromCollectCompositeFactPatternWidget.java
labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/FromCompositeFactPatternWidget.java
labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/GlobalCollectionAddWidget.java
labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/MethodParameterValueEditor.java
labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/RuleModeller.java
labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/RuleModellerWidget.java
Log:
GUVNOR-538: Allow real time verification of Fact's constraints in Guided Editor
- Info message added when Rule Verifier options are modified
Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/ActionCallMethodWidget.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/ActionCallMethodWidget.java 2010-05-12 15:47:22 UTC (rev 32845)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/ActionCallMethodWidget.java 2010-05-12 19:31:20 UTC (rev 32846)
@@ -21,6 +21,7 @@
import org.drools.ide.common.client.modeldriven.brl.FactPattern;
import com.google.gwt.core.client.GWT;
+import com.google.gwt.user.client.Command;
import com.google.gwt.user.client.ui.ChangeListener;
import com.google.gwt.user.client.ui.ClickListener;
import com.google.gwt.user.client.ui.HorizontalPanel;
@@ -252,10 +253,15 @@
DropDownData enums = completions.getEnums( type,
this.model.fieldValues,
val.field );
- return new MethodParameterValueEditor( val,
- enums,
- this.getModeller(),
- val.type );
+ return new MethodParameterValueEditor(val,
+ enums,
+ this.getModeller(),
+ val.type, new Command() {
+
+ public void execute() {
+ setModified(true);
+ }
+ });
}
/**
Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/ActionInsertFactWidget.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/ActionInsertFactWidget.java 2010-05-12 15:47:22 UTC (rev 32845)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/ActionInsertFactWidget.java 2010-05-12 19:31:20 UTC (rev 32846)
@@ -31,6 +31,7 @@
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.*;
import com.google.gwt.core.client.GWT;
+import com.google.gwt.user.client.Command;
import com.gwtext.client.util.Format;
/**
@@ -100,6 +101,7 @@
public void onClick(Widget w) {
if (Window.confirm(constants.RemoveThisItem())) {
model.removeField( idx );
+ setModified(true);
getModeller().refreshWidget();
};
}
@@ -118,7 +120,15 @@
private Widget valueEditor(final ActionFieldValue val) {
SuggestionCompletionEngine completions = this.getModeller().getSuggestionCompletions();
DropDownData enums = completions.getEnums(this.factType, this.model.fieldValues, val.field);
- return new ActionValueEditor(val, enums,this.getModeller(),val.type,this.readOnly);
+
+ ActionValueEditor actionValueEditor = new ActionValueEditor(val, enums,this.getModeller(),val.type,this.readOnly);
+ actionValueEditor.setOnChangeCommand(new Command() {
+ public void execute() {
+ setModified(true);
+ }
+ });
+
+ return actionValueEditor;
}
private Widget fieldSelector(final ActionFieldValue val) {
@@ -171,6 +181,7 @@
model.addFieldValue( new ActionFieldValue( fieldName,
"",
fieldType ) );
+ setModified(true);
getModeller().refreshWidget();
popup.hide();
}
@@ -197,6 +208,7 @@
return;
}
model.setBoundName( var );
+ setModified(true);
getModeller().refreshWidget();
popup.hide();
}
Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/ActionRetractFactWidget.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/ActionRetractFactWidget.java 2010-05-12 15:47:22 UTC (rev 32845)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/ActionRetractFactWidget.java 2010-05-12 19:31:20 UTC (rev 32846)
@@ -56,6 +56,9 @@
String desc = modeller.getModel().getBoundFact(model.variableName).factType + " [" + model.variableName + "]";
layout.add(new SmallLabel(HumanReadable.getActionDisplayName( "retract" )+" <b>" + desc + "</b>"));
+ //This widget couldn't be modified.
+ this.setModified(false);
+
initWidget( layout );
}
@@ -67,4 +70,5 @@
+
}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/ActionSetFieldWidget.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/ActionSetFieldWidget.java 2010-05-12 15:47:22 UTC (rev 32845)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/ActionSetFieldWidget.java 2010-05-12 19:31:20 UTC (rev 32846)
@@ -36,6 +36,7 @@
import com.google.gwt.user.client.ui.Widget;
import com.google.gwt.user.client.ui.MouseListenerAdapter;
import com.google.gwt.core.client.GWT;
+import com.google.gwt.user.client.Command;
import com.gwtext.client.util.Format;
/**
@@ -123,6 +124,7 @@
public void onClick(Widget w) {
if (Window.confirm(constants.RemoveThisItem())) {
model.removeField(idx);
+ setModified(true);
getModeller().refreshWidget();
}
}
@@ -209,6 +211,7 @@
String fieldType = completions.getFieldType(variableClass, fieldName);
model.addFieldValue(new ActionFieldValue(fieldName, "", fieldType));
+ setModified(true);
getModeller().refreshWidget();
popup.hide();
}
@@ -235,7 +238,14 @@
}
DropDownData enums = completions.getEnums(type, this.model.fieldValues, val.field);
- return new ActionValueEditor(val, enums, this.getModeller(), val.type, this.readOnly);
+ ActionValueEditor actionValueEditor = new ActionValueEditor(val, enums, this.getModeller(), val.type, this.readOnly);
+ actionValueEditor.setOnChangeCommand(new Command() {
+
+ public void execute() {
+ setModified(true);
+ }
+ });
+ return actionValueEditor;
}
private Widget fieldSelector(final ActionFieldValue val) {
Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/ActionValueEditor.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/ActionValueEditor.java 2010-05-12 15:47:22 UTC (rev 32845)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/ActionValueEditor.java 2010-05-12 19:31:20 UTC (rev 32846)
@@ -1,5 +1,6 @@
package org.drools.guvnor.client.modeldriven.ui;
+import com.google.gwt.event.dom.client.ChangeEvent;
import java.util.List;
import org.drools.guvnor.client.common.DirtyableComposite;
@@ -16,6 +17,7 @@
import org.drools.ide.common.client.modeldriven.brl.FactPattern;
import com.google.gwt.core.client.GWT;
+import com.google.gwt.event.dom.client.ChangeHandler;
import com.google.gwt.user.client.Command;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.ChangeListener;
@@ -44,6 +46,7 @@
private RuleModeller model = null;
private String variableType = null;
private boolean readOnly;
+ private Command onChangeCommand;
public ActionValueEditor(final ActionFieldValue val,
final DropDownData enums, boolean readOnly) {
@@ -175,6 +178,7 @@
public void onChange(Widget arg0) {
ListBox w = (ListBox) arg0;
value.value = "=" + w.getValue(w.getSelectedIndex());
+ executeOnChageCommand();
makeDirty();
refresh();
}
@@ -193,6 +197,7 @@
public void valueChanged(String newText, String newValue) {
value.value = newValue;
+ executeOnChageCommand();
makeDirty();
}
}, enums);
@@ -226,6 +231,7 @@
public void onChange(Widget w) {
c.value = box.getText();
+ executeOnChageCommand();
makeDirty();
}
});
@@ -301,6 +307,7 @@
value.nature = ActionFieldValue.TYPE_LITERAL;
value.value = " ";
makeDirty();
+ executeOnChageCommand();
refresh();
form.hide();
}
@@ -406,4 +413,20 @@
h.add(popup);
return h;
}
+
+ private void executeOnChageCommand(){
+ if (this.onChangeCommand != null){
+ this.onChangeCommand.execute();
+ }
+ }
+
+ public Command getOnChangeCommand() {
+ return onChangeCommand;
+ }
+
+ public void setOnChangeCommand(Command onChangeCommand) {
+ this.onChangeCommand = onChangeCommand;
+ }
+
+
}
Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/CompositeFactPatternWidget.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/CompositeFactPatternWidget.java 2010-05-12 15:47:22 UTC (rev 32845)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/CompositeFactPatternWidget.java 2010-05-12 19:31:20 UTC (rev 32846)
@@ -29,6 +29,9 @@
import com.google.gwt.user.client.ui.*;
import com.google.gwt.core.client.GWT;
+import com.google.gwt.user.client.Command;
+import java.util.ArrayList;
+import java.util.List;
/**
* This represents a top level CE, like an OR, NOT, EXIST etc...
@@ -45,6 +48,8 @@
protected Constants constants = ((Constants) GWT.create(Constants.class));
protected boolean readOnly;
+ private List<FactPatternWidget> childWidgets;
+
public CompositeFactPatternWidget(RuleModeller modeller,
CompositeFactPattern pattern) {
this(modeller, pattern, null);
@@ -84,6 +89,9 @@
}
protected void doLayout() {
+
+ this.childWidgets = new ArrayList<FactPatternWidget>();
+
this.layout.setWidget( 0,
0,
getCompositeLabel() );
@@ -97,9 +105,14 @@
DirtyableVerticalPane vert = new DirtyableVerticalPane();
FactPattern[] facts = pattern.patterns;
for ( int i = 0; i < facts.length; i++ ) {
- vert.add( new FactPatternWidget( this.getModeller(),
- facts[i],
- false,this.readOnly ) );
+ FactPatternWidget factPatternWidget = new FactPatternWidget(this.getModeller(), facts[i], false, this.readOnly);
+ factPatternWidget.addOnModifiedCommand(new Command() {
+ public void execute() {
+ setModified(true);
+ }
+ });
+ childWidgets.add(factPatternWidget);
+ vert.add(factPatternWidget);
}
this.layout.setWidget( 1,
1,
@@ -144,6 +157,7 @@
box.addChangeListener( new ChangeListener() {
public void onChange(Widget w) {
pattern.addFactPattern( new FactPattern( box.getItemText( box.getSelectedIndex() ) ) );
+ setModified(true);
getModeller().refreshWidget();
popup.hide();
}
Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/ConstraintValueEditor.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/ConstraintValueEditor.java 2010-05-12 15:47:22 UTC (rev 32845)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/ConstraintValueEditor.java 2010-05-12 19:31:20 UTC (rev 32846)
@@ -15,6 +15,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+import com.google.gwt.event.dom.client.ChangeEvent;
import java.util.List;
import org.drools.guvnor.client.common.DirtyableComposite;
@@ -31,6 +32,8 @@
import org.drools.ide.common.client.modeldriven.brl.SingleFieldConstraint;
import com.google.gwt.core.client.GWT;
+import com.google.gwt.event.dom.client.ChangeHandler;
+import com.google.gwt.user.client.Command;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.ChangeListener;
import com.google.gwt.user.client.ui.ClickListener;
@@ -65,7 +68,9 @@
private Constants constants = ((Constants) GWT.create(Constants.class));
private String fieldType;
private boolean readOnly;
+ private Command onValueChangeCommand;
+
public ConstraintValueEditor(FactPattern pattern, String fieldName,
ISingleFieldConstraint con, RuleModeller modeller, String valueType,
boolean readOnly) {
@@ -119,6 +124,12 @@
this.fieldName,
this.sce,
this.constraint);
+ ((EnumDropDownLabel)constraintWidget).setOnValueChangeCommand(new Command() {
+
+ public void execute() {
+ executeOnValueChangeCommand();
+ }
+ });
} else if (SuggestionCompletionEngine.TYPE_DATE.equals(this.fieldType)) {
DatePickerLabel datePicker = new DatePickerLabel(constraint.value);
@@ -130,6 +141,7 @@
datePicker.addValueChanged(new ValueChanged() {
public void valueChanged(String newValue) {
+ executeOnValueChangeCommand();
constraint.value = newValue;
}
});
@@ -142,6 +154,12 @@
if (!this.readOnly) {
constraintWidget = new DefaultLiteralEditor(this.constraint,
this.numericValue);
+ ((DefaultLiteralEditor)constraintWidget).setOnValueChangeCommand(new Command() {
+
+ public void execute() {
+ executeOnValueChangeCommand();
+ }
+ });
} else {
constraintWidget = new SmallLabel(this.constraint.value);
}
@@ -208,6 +226,7 @@
box.addChangeListener(new ChangeListener() {
public void onChange(Widget w) {
+ executeOnValueChangeCommand();
constraint.value = box.getItemText(box.getSelectedIndex());
}
});
@@ -224,6 +243,12 @@
Image img = new Image("images/function_assets.gif"); //NON-NLS
img.setTitle(msg);
box.setTitle(msg);
+ box.addChangeHandler(new ChangeHandler() {
+
+ public void onChange(ChangeEvent event) {
+ executeOnValueChangeCommand();
+ }
+ });
Widget ed = widgets(img,
box);
return ed;
@@ -234,6 +259,12 @@
throw new IllegalArgumentException("Expected SingleFieldConstraint, but " + constraint.getClass().getName() + " found.");
}
ExpressionBuilder builder = new ExpressionBuilder(this.modeller, ((SingleFieldConstraint) this.constraint).getExpression());
+ builder.addOnModifiedCommand(new Command() {
+
+ public void execute() {
+ executeOnValueChangeCommand();
+ }
+ });
String msg = constants.ExpressionEditor();
Widget ed = widgets(new HTML(" "),
builder);
@@ -351,6 +382,7 @@
}
private void doTypeChosen(final FormStylePopup form) {
+ executeOnValueChangeCommand();
refreshEditor();
form.hide();
}
@@ -364,7 +396,20 @@
return panel;
}
+ private void executeOnValueChangeCommand(){
+ if (this.onValueChangeCommand != null){
+ this.onValueChangeCommand.execute();
+ }
+ }
+
+
public boolean isDirty() {
return super.isDirty();
}
+
+ public void setOnValueChangeCommand(Command onValueChangeCommand) {
+ this.onValueChangeCommand = onValueChangeCommand;
+ }
+
+
}
Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/DSLSentenceWidget.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/DSLSentenceWidget.java 2010-05-12 15:47:22 UTC (rev 32845)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/DSLSentenceWidget.java 2010-05-12 19:31:20 UTC (rev 32846)
@@ -285,6 +285,7 @@
newSentence = newSentence + "\\n";
}
}
+ this.setModified(true);
this.sentence.sentence = newSentence.trim();
}
Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/DefaultLiteralEditor.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/DefaultLiteralEditor.java 2010-05-12 15:47:22 UTC (rev 32845)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/DefaultLiteralEditor.java 2010-05-12 19:31:20 UTC (rev 32846)
@@ -6,6 +6,7 @@
import org.drools.ide.common.client.modeldriven.brl.ISingleFieldConstraint;
import com.google.gwt.core.client.GWT;
+import com.google.gwt.user.client.Command;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.ClickListener;
import com.google.gwt.user.client.ui.Composite;
@@ -35,10 +36,15 @@
private final ValueChanged valueChanged = new ValueChanged() {
public void valueChanged(String newValue) {
constraint.value = newValue;
+ if (onValueChangeCommand != null){
+ onValueChangeCommand.execute();
+ }
okButton.click();
}
};
+ private Command onValueChangeCommand;
+
public DefaultLiteralEditor(ISingleFieldConstraint constraint,
boolean numericValue) {
this.constraint = constraint;
@@ -72,6 +78,9 @@
public void onClick(Widget arg0) {
if ( !isValueEmpty( constraint.value ) ) {
+ if (onValueChangeCommand != null){
+ onValueChangeCommand.execute();
+ }
textWidget.setText( constraint.value );
popup.hide();
@@ -133,4 +142,14 @@
return false;
}
}
+
+ private void executeOnValueChangeCommand(){
+ if (this.onValueChangeCommand != null){
+ this.onValueChangeCommand.execute();
+ }
+ }
+
+ public void setOnValueChangeCommand(Command onValueChangeCommand) {
+ this.onValueChangeCommand = onValueChangeCommand;
+ }
}
Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/EnumDropDownLabel.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/EnumDropDownLabel.java 2010-05-12 15:47:22 UTC (rev 32845)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/EnumDropDownLabel.java 2010-05-12 19:31:20 UTC (rev 32846)
@@ -8,6 +8,7 @@
import org.drools.ide.common.client.modeldriven.brl.ISingleFieldConstraint;
import com.google.gwt.core.client.GWT;
+import com.google.gwt.user.client.Command;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.ClickListener;
import com.google.gwt.user.client.ui.Composite;
@@ -33,6 +34,8 @@
private final Button okButton = new Button( constants.OK() );
+ private Command onValueChangeCommand;
+
public EnumDropDownLabel(FactPattern pattern,
String fieldName,
SuggestionCompletionEngine sce,
@@ -75,6 +78,7 @@
okButton.addClickListener( new ClickListener() {
public void onClick(Widget arg0) {
+ executeOnValueChangeCommand();
panel.clear();
panel.add( textWidget );
popup.hide();
@@ -124,4 +128,15 @@
return box;
}
+
+ private void executeOnValueChangeCommand(){
+ if (this.onValueChangeCommand != null){
+ this.onValueChangeCommand.execute();
+ }
+ }
+
+ public void setOnValueChangeCommand(Command onValueChangeCommand) {
+ this.onValueChangeCommand = onValueChangeCommand;
+ }
+
}
Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/ExpressionBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/ExpressionBuilder.java 2010-05-12 15:47:22 UTC (rev 32845)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/ExpressionBuilder.java 2010-05-12 19:31:20 UTC (rev 32846)
@@ -110,6 +110,7 @@
}
private void startPointChange(String value) {
+ setModified(true);
panel.clear();
Widget w;
int dotPos = value.indexOf('.');
@@ -215,6 +216,8 @@
}
private void onChangeSelection(String value) {
+ setModified(true);
+
String prevFactName = null;
if (DELETE_VALUE.equals(value)) {
expression.removeLast();
Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/FactPatternWidget.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/FactPatternWidget.java 2010-05-12 15:47:22 UTC (rev 32845)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/FactPatternWidget.java 2010-05-12 19:31:20 UTC (rev 32846)
@@ -34,6 +34,7 @@
import org.drools.ide.common.client.modeldriven.brl.SingleFieldConstraint;
import com.google.gwt.core.client.GWT;
+import com.google.gwt.user.client.Command;
import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.*;
@@ -178,6 +179,7 @@
public void onClick(Widget w) {
if (Window.confirm(constants.RemoveThisItem())) {
+ setModified(true);
pattern.removeConstraint(currentRow);
getModeller().refreshWidget();
}
@@ -285,6 +287,7 @@
public void onClick(Widget w) {
if (Window.confirm(constants.RemoveThisItemFromNestedConstraint())) {
+ setModified(true);
constraint.removeConstraint(currentRow);
getModeller().refreshWidget();
}
@@ -325,6 +328,7 @@
addConnective.addClickListener(new ClickListener() {
public void onClick(Widget w) {
+ setModified(true);
constraint.addNewConnective();
modeller.refreshWidget();
}
@@ -361,6 +365,7 @@
box.addChangeListener(new ChangeListener() {
public void onChange(Widget w) {
+ setModified(true);
c.value = box.getText();
getModeller().makeDirty();
}
@@ -419,7 +424,13 @@
private Widget valueEditor(final SingleFieldConstraint c, String factType) {
//String type = this.modeller.getSuggestionCompletions().getFieldType( factType, c.fieldName );
- return new ConstraintValueEditor(pattern, c.fieldName, c, this.getModeller(), c.fieldType,this.readOnly);
+ ConstraintValueEditor constraintValueEditor = new ConstraintValueEditor(pattern, c.fieldName, c, this.getModeller(), c.fieldType,this.readOnly);
+ constraintValueEditor.setOnValueChangeCommand(new Command() {
+ public void execute() {
+ setModified(true);
+ }
+ });
+ return constraintValueEditor;
}
private Widget operatorDropDown(final SingleFieldConstraint c) {
@@ -439,6 +450,7 @@
box.addChangeListener(new ChangeListener() {
public void onChange(Widget w) {
+ setModified(true);
c.operator = box.getValue(box.getSelectedIndex());
if (c.operator.equals("")) {
c.operator = null;
Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/FreeFormLineWidget.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/FreeFormLineWidget.java 2010-05-12 15:47:22 UTC (rev 32845)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/FreeFormLineWidget.java 2010-05-12 19:31:20 UTC (rev 32846)
@@ -79,19 +79,11 @@
tb.addChangeListener(new ChangeListener() {
public void onChange(Widget arg0) {
+ setModified(true);
action.text = tb.getText();
}
});
-
-// tb.addFocusListener(new FocusListenerAdapter() {
-//
-// @Override
-// public void onLostFocus(Widget sender) {
-// getModeller().verifyRule();
-// }
-//
-// });
} else {
tb.setEnabled(false);
}
Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/FromAccumulateCompositeFactPatternWidget.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/FromAccumulateCompositeFactPatternWidget.java 2010-05-12 15:47:22 UTC (rev 32845)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/FromAccumulateCompositeFactPatternWidget.java 2010-05-12 19:31:20 UTC (rev 32846)
@@ -1,5 +1,6 @@
package org.drools.guvnor.client.modeldriven.ui;
+import com.google.gwt.user.client.Command;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.ChangeListener;
@@ -27,6 +28,8 @@
*/
public class FromAccumulateCompositeFactPatternWidget extends FromCompositeFactPatternWidget {
+ private RuleModellerWidget sourcePatternWidget;
+
public FromAccumulateCompositeFactPatternWidget(RuleModeller modeller,
FromAccumulateCompositeFactPattern pattern, Boolean readOnly) {
super(modeller, pattern, readOnly);
@@ -74,25 +77,31 @@
} else {
IPattern rPattern = this.getFromAccumulatePattern().getSourcePattern();
- Widget patternWidget = null;
if (rPattern instanceof FactPattern) {
- patternWidget = new FactPatternWidget(this.getModeller(), rPattern, constants.All0with(), true,this.readOnly);
+ this.sourcePatternWidget = new FactPatternWidget(this.getModeller(), rPattern, constants.All0with(), true,this.readOnly);
} else if (rPattern instanceof FromAccumulateCompositeFactPattern) {
- patternWidget = new FromAccumulateCompositeFactPatternWidget(this.getModeller(), (FromAccumulateCompositeFactPattern) rPattern,this.readOnly);
+ this.sourcePatternWidget = new FromAccumulateCompositeFactPatternWidget(this.getModeller(), (FromAccumulateCompositeFactPattern) rPattern,this.readOnly);
} else if (rPattern instanceof FromCollectCompositeFactPattern) {
- patternWidget = new FromCollectCompositeFactPatternWidget(this.getModeller(), (FromCollectCompositeFactPattern) rPattern,this.readOnly);
+ this.sourcePatternWidget = new FromCollectCompositeFactPatternWidget(this.getModeller(), (FromCollectCompositeFactPattern) rPattern,this.readOnly);
} else if (rPattern instanceof FromCompositeFactPattern) {
- patternWidget = new FromCompositeFactPatternWidget(this.getModeller(), (FromCompositeFactPattern) rPattern,this.readOnly);
+ this.sourcePatternWidget = new FromCompositeFactPatternWidget(this.getModeller(), (FromCompositeFactPattern) rPattern,this.readOnly);
} else {
throw new IllegalArgumentException("Unsuported pattern " + rPattern + " for right side of FROM ACCUMULATE");
}
+ this.sourcePatternWidget.addOnModifiedCommand(new Command() {
+ public void execute() {
+ setModified(true);
+ }
+ });
+
panel.setWidget(r++,
0,
- addRemoveButton(patternWidget, new ClickListener() {
+ addRemoveButton(this.sourcePatternWidget, new ClickListener() {
public void onClick(Widget sender) {
if (Window.confirm(constants.RemoveThisBlockOfData())) {
+ setModified(true);
getFromAccumulatePattern().setSourcePattern(null);
getModeller().refreshWidget();
}
@@ -166,7 +175,7 @@
TextBox senderTB = (TextBox) sender;
String code = senderTB.getText();
-
+ setModified(true);
if (sender == initField) {
getFromAccumulatePattern().setFunction(null);
functionField.setText("");
@@ -244,6 +253,7 @@
public void onChange(Widget w) {
pattern.setFactPattern(new FactPattern(box.getItemText(box.getSelectedIndex())));
+ setModified(true);
getModeller().refreshWidget();
popup.hide();
}
@@ -275,6 +285,7 @@
public void onChange(Widget w) {
getFromAccumulatePattern().setSourcePattern(new FactPattern(box.getItemText(box.getSelectedIndex())));
+ setModified(true);
getModeller().refreshWidget();
popup.hide();
}
@@ -301,6 +312,7 @@
throw new IllegalArgumentException("Unknown sender: " + sender);
}
+ setModified(true);
getModeller().refreshWidget();
popup.hide();
}
Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/FromCollectCompositeFactPatternWidget.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/FromCollectCompositeFactPatternWidget.java 2010-05-12 15:47:22 UTC (rev 32845)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/FromCollectCompositeFactPatternWidget.java 2010-05-12 19:31:20 UTC (rev 32846)
@@ -1,5 +1,6 @@
package org.drools.guvnor.client.modeldriven.ui;
+import com.google.gwt.user.client.Command;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.ChangeListener;
@@ -82,7 +83,7 @@
} else {
IPattern rPattern = this.getFromCollectPattern().getRightPattern();
- Widget patternWidget = null;
+ RuleModellerWidget patternWidget = null;
if (rPattern instanceof FactPattern) {
patternWidget = new FactPatternWidget(this.getModeller(), rPattern, constants.All0with(), true, this.readOnly);
} else if (rPattern instanceof FromAccumulateCompositeFactPattern) {
@@ -97,6 +98,11 @@
throw new IllegalArgumentException("Unsuported pattern " + rPattern + " for right side of FROM COLLECT");
}
+ patternWidget.addOnModifiedCommand(new Command() {
+ public void execute() {
+ setModified(true);
+ }
+ });
panel.setWidget(r++,
0,
@@ -104,6 +110,7 @@
public void onClick(Widget sender) {
if (Window.confirm(constants.RemoveThisBlockOfData())) {
+ setModified(true);
getFromCollectPattern().setRightPattern(null);
getModeller().refreshWidget();
}
@@ -138,6 +145,7 @@
public void onChange(Widget w) {
pattern.setFactPattern(new FactPattern(box.getValue(box.getSelectedIndex())));
+ setModified(true);
getModeller().refreshWidget();
popup.hide();
}
@@ -172,6 +180,7 @@
public void onChange(Widget w) {
getFromCollectPattern().setRightPattern(new FactPattern(box.getItemText(box.getSelectedIndex())));
+ setModified(true);
getModeller().refreshWidget();
popup.hide();
}
@@ -197,7 +206,7 @@
} else {
throw new IllegalArgumentException("Unknown sender: " + sender);
}
-
+ setModified(true);
getModeller().refreshWidget();
popup.hide();
}
Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/FromCompositeFactPatternWidget.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/FromCompositeFactPatternWidget.java 2010-05-12 15:47:22 UTC (rev 32845)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/FromCompositeFactPatternWidget.java 2010-05-12 19:31:20 UTC (rev 32846)
@@ -1,6 +1,7 @@
package org.drools.guvnor.client.modeldriven.ui;
import com.google.gwt.core.client.GWT;
+import com.google.gwt.user.client.Command;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.ChangeListener;
import com.google.gwt.user.client.ui.ClickListener;
@@ -30,6 +31,9 @@
protected Constants constants = ((Constants) GWT.create(Constants.class));
protected boolean readOnly;
+ private FactPatternWidget factPatternWidget;
+ private ExpressionBuilder expressionBuilder;
+
public FromCompositeFactPatternWidget(RuleModeller modeller,
FromCompositeFactPattern pattern) {
this(modeller, pattern, null);
@@ -69,17 +73,23 @@
if (this.readOnly) {
//creates a new read-only FactPatternWidget
- FactPatternWidget factPatternWidget = new FactPatternWidget(this.getModeller(), fact, false, true);
+ this.factPatternWidget = new FactPatternWidget(this.getModeller(), fact, false, true);
this.layout.setWidget(r,
0, factPatternWidget);
} else {
- FactPatternWidget factPatternWidget = new FactPatternWidget(this.getModeller(), fact, true,false);
+ this.factPatternWidget = new FactPatternWidget(this.getModeller(), fact, true,false);
+ this.factPatternWidget.addOnModifiedCommand(new Command() {
+ public void execute() {
+ setModified(true);
+ }
+ });
this.layout.setWidget(r,
0,
addRemoveButton(factPatternWidget, new ClickListener() {
public void onClick(Widget w) {
if (Window.confirm(constants.RemoveThisEntireConditionQ())) {
+ setModified(true);
pattern.setFactPattern(null);
getModeller().refreshWidget();
}
@@ -117,9 +127,14 @@
panel.setWidget(r, 0, new HTML(lbl));
- panel.setWidget(r, 1, new ExpressionBuilder(this.getModeller(), this.pattern.getExpression(), this.readOnly));
+ this.expressionBuilder =new ExpressionBuilder(this.getModeller(), this.pattern.getExpression(), this.readOnly);
+ this.expressionBuilder.addOnModifiedCommand(new Command() {
+ public void execute() {
+ setModified(true);
+ }
+ });
+ panel.setWidget(r, 1, this.expressionBuilder);
-
return panel;
}
@@ -147,6 +162,7 @@
public void onChange(Widget w) {
pattern.setFactPattern(new FactPattern(box.getItemText(box.getSelectedIndex())));
+ setModified(true);
getModeller().refreshWidget();
popup.hide();
}
Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/GlobalCollectionAddWidget.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/GlobalCollectionAddWidget.java 2010-05-12 15:47:22 UTC (rev 32845)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/GlobalCollectionAddWidget.java 2010-05-12 19:31:20 UTC (rev 32846)
@@ -70,6 +70,8 @@
layout.setWidget(0, 0, sp);
initWidget(layout);
+ //This widget couldn't be modified
+ this.setModified(false);
}
@Override
Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/MethodParameterValueEditor.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/MethodParameterValueEditor.java 2010-05-12 15:47:22 UTC (rev 32845)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/MethodParameterValueEditor.java 2010-05-12 19:31:20 UTC (rev 32846)
@@ -45,11 +45,12 @@
private Constants constants = GWT.create( Constants.class );
private RuleModeller model = null;
private String parameterType = null;
+ private Command onValueChangeCommand = null;
public MethodParameterValueEditor(final ActionFieldFunction val,
final DropDownData enums,
RuleModeller model,
- String parameterType) {
+ String parameterType, Command onValueChangeCommand) {
if ( val.type.equals( SuggestionCompletionEngine.TYPE_BOOLEAN ) ) {
this.enums = DropDownData.create( new String[]{"true", "false"} );
} else {
@@ -59,6 +60,7 @@
this.methodParameter = val;
this.model = model;
this.parameterType = parameterType;
+ this.onValueChangeCommand = onValueChangeCommand;
refresh();
initWidget( root );
}
@@ -71,6 +73,9 @@
public void valueChanged(String newText,
String newValue) {
methodParameter.value = newValue;
+ if (onValueChangeCommand != null){
+ onValueChangeCommand.execute();
+ }
makeDirty();
}
},
@@ -145,6 +150,9 @@
public void onChange(Widget arg0) {
ListBox w = (ListBox) arg0;
methodParameter.value = w.getValue( w.getSelectedIndex() );
+ if (onValueChangeCommand != null){
+ onValueChangeCommand.execute();
+ }
makeDirty();
refresh();
}
@@ -175,6 +183,9 @@
box.addChangeListener( new ChangeListener() {
public void onChange(Widget w) {
c.value = box.getText();
+ if (onValueChangeCommand != null) {
+ onValueChangeCommand.execute();
+ }
makeDirty();
}
Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/RuleModeller.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/RuleModeller.java 2010-05-12 15:47:22 UTC (rev 32845)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/RuleModeller.java 2010-05-12 19:31:20 UTC (rev 32846)
@@ -104,7 +104,20 @@
private String packageName;
private RuleAsset asset;
private ModellerWidgetFactory widgetFactory;
-
+
+ private List<RuleModellerWidget> lhsWidgets = new ArrayList<RuleModellerWidget>();
+ private List<RuleModellerWidget> rhsWidgets = new ArrayList<RuleModellerWidget>();
+
+ private boolean hasModifiedWidgets;
+
+ private final Command onWidgetModifiedCommand = new Command() {
+
+ public void execute() {
+ GWT.log("Widget Modified!");
+ hasModifiedWidgets = true;
+ }
+ };
+
public RuleModeller(RuleAsset asset, RuleViewer viewer, ModellerWidgetFactory widgetFactory) {
this(asset, widgetFactory);
}
@@ -360,6 +373,7 @@
Boolean readOnly = this.lockRHS()?true:null;
RuleModellerWidget w = getWidgetFactory().getWidget(this, action, readOnly);
+ w.addOnModifiedCommand(this.onWidgetModifiedCommand);
w.setWidth( "100%" );
widget.add(spacerWidget());
@@ -428,7 +442,7 @@
}
-
+ this.rhsWidgets.add(w);
currentLayoutRow++;
@@ -960,6 +974,7 @@
IPattern pattern = model.lhs[i];
RuleModellerWidget w = getWidgetFactory().getWidget(this, pattern, readOnly);
+ w.addOnModifiedCommand(this.onWidgetModifiedCommand);
vert.add(wrapLHSWidget(model, i, w));
vert.add(spacerWidget());
@@ -997,7 +1012,7 @@
}
-
+ this.lhsWidgets.add(w);
currentLayoutRow++;
}
@@ -1161,30 +1176,13 @@
private List<AnalysisReportLine> errors;
private List<AnalysisReportLine> warnings;
- private void showWarningsAndErrors(){
- this.clearLinesIcons();
- if (this.warnings != null){
- for (AnalysisReportLine warning : this.warnings) {
- if (warning.patternOrderNumber != null){
- this.addLineIcon(warning.patternOrderNumber+1, "images/warning.gif", warning.description);
- }
- }
- }
- if (this.errors != null){
- for (AnalysisReportLine error : this.errors) {
- if (error.patternOrderNumber != null){
- this.addLineIcon(error.patternOrderNumber+1, "images/error.gif", error.description);
- }
- }
- }
- }
-
public void verifyRule(final Command cmd){
errors = new ArrayList<AnalysisReportLine>();
warnings = new ArrayList<AnalysisReportLine>();
- //if AutoVerifierEnabled is off, just execute cmd and return.
- if (!WorkingSetManager.getInstance().isAutoVerifierEnabled()){
+ //if AutoVerifierEnabled is off or there are not modified widgets,
+ //just execute cmd and return.
+ if (!WorkingSetManager.getInstance().isAutoVerifierEnabled() || !this.hasModifiedWidgets){
if (cmd != null){
cmd.execute();
}
@@ -1202,20 +1200,53 @@
errors = Arrays.asList(report.errors);
warnings = Arrays.asList(report.warnings);
- showWarningsAndErrors();
+ processWarningsAndErrors();
+
+ hasModifiedWidgets = false;
if (cmd != null) {
cmd.execute();
}
}
public void onFailure(Throwable arg0) {
- // TODO Auto-generated method stub
+ LoadingPopup.close();
}
});
}
+ private void processWarningsAndErrors(){
+
+ if (this.warnings.isEmpty() && this.errors.isEmpty()){
+ for (RuleModellerWidget ruleModellerWidget : this.lhsWidgets) {
+ ruleModellerWidget.setModified(false);
+ }
+ for (RuleModellerWidget ruleModellerWidget : this.rhsWidgets) {
+ ruleModellerWidget.setModified(false);
+ }
+ }
+ showWarningsAndErrors();
+ }
+
+ private void showWarningsAndErrors(){
+ this.clearLinesIcons();
+ if (this.warnings != null){
+ for (AnalysisReportLine warning : this.warnings) {
+ if (warning.patternOrderNumber != null){
+ this.addLineIcon(warning.patternOrderNumber+1, "images/warning.gif", warning.description);
+ }
+ }
+ }
+ if (this.errors != null){
+ for (AnalysisReportLine error : this.errors) {
+ if (error.patternOrderNumber != null){
+ this.addLineIcon(error.patternOrderNumber+1, "images/error.gif", error.description);
+ }
+ }
+ }
+ }
+
public boolean hasVerifierErrors(){
return this.errors != null && this.errors.size() > 0;
}
Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/RuleModellerWidget.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/RuleModellerWidget.java 2010-05-12 15:47:22 UTC (rev 32845)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/RuleModellerWidget.java 2010-05-12 19:31:20 UTC (rev 32846)
@@ -1,5 +1,9 @@
package org.drools.guvnor.client.modeldriven.ui;
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.user.client.Command;
+import java.util.ArrayList;
+import java.util.List;
import org.drools.guvnor.client.common.DirtyableComposite;
/**
@@ -10,6 +14,10 @@
private RuleModeller modeller;
+ private boolean modified;
+
+ private List<Command> onModifiedCommands = new ArrayList<Command>();
+
public RuleModellerWidget(RuleModeller modeller) {
this.modeller = modeller;
}
@@ -25,4 +33,22 @@
public RuleModeller getModeller() {
return modeller;
}
+
+ protected void setModified(boolean modified) {
+ if (modified){
+ executeOnModifiedCommands();
+ }
+ this.modified = modified;
+ }
+
+ public void addOnModifiedCommand(Command command){
+ this.onModifiedCommands.add(command);
+ }
+
+ private void executeOnModifiedCommands(){
+ for (Command command : onModifiedCommands) {
+ command.execute();
+ }
+ }
+
}
More information about the jboss-svn-commits
mailing list