[jboss-svn-commits] JBL Code SVN: r8144 - in labs/jbossrules/trunk/drools-jbrms/src: main/java/org/drools/brms/client/modeldriven/model main/java/org/drools/brms/client/modeldriven/ui test/java/org/drools/brms/client/modeldriven
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Dec 8 10:47:03 EST 2006
Author: michael.neale at jboss.com
Date: 2006-12-08 10:46:46 -0500 (Fri, 08 Dec 2006)
New Revision: 8144
Added:
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/model/ActionFieldList.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/LeftHandSideSelector.java
labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/client/modeldriven/CompositeFactPatternTest.java
Modified:
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/model/ActionAssertFact.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/model/ActionRetractFact.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/model/ActionSetField.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/model/CompositeFactPattern.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/model/RuleModel.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/ActionAssertFactWidget.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/ActionSetFieldWidget.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/CompositeFactPatternWidget.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/FactPatternWidget.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/RuleModeller.java
labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/client/modeldriven/RuleModelTest.java
Log:
more ajax love
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/model/ActionAssertFact.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/model/ActionAssertFact.java 2006-12-08 15:43:37 UTC (rev 8143)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/model/ActionAssertFact.java 2006-12-08 15:46:46 UTC (rev 8144)
@@ -1,12 +1,15 @@
package org.drools.brms.client.modeldriven.model;
+/**
+ * This is used when asserting a new fact.
+ * @author Michael Neale
+ *
+ */
public class ActionAssertFact
- implements
- IAction {
+ extends
+ ActionFieldList {
public String factType;
- /** tuples of field = value */
- public ActionFieldValue[] fieldValues;
-
+
}
Added: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/model/ActionFieldList.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/model/ActionFieldList.java 2006-12-08 15:43:37 UTC (rev 8143)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/model/ActionFieldList.java 2006-12-08 15:46:46 UTC (rev 8144)
@@ -0,0 +1,48 @@
+package org.drools.brms.client.modeldriven.model;
+
+/**
+ * This class is the parent for field setting or assertion actions.
+ *
+ * Contains the list of fields and their values to be set.
+ *
+ * @author Michael Neale
+ *
+ */
+public abstract class ActionFieldList
+ implements
+ IAction {
+
+ public ActionFieldValue[] fieldValues;
+
+ public void removeField(int idx) {
+ //Unfortunately, this is kinda duplicate code with other methods,
+ //but with typed arrays, and GWT, its not really possible to do anything "better"
+ //at this point in time.
+ ActionFieldValue[] newList = new ActionFieldValue[fieldValues.length - 1];
+ int newIdx = 0;
+ for ( int i = 0; i < fieldValues.length; i++ ) {
+
+ if (i != idx) {
+ newList[newIdx] = fieldValues[i];
+ newIdx++;
+ }
+
+ }
+ this.fieldValues = newList;
+ }
+
+ public void addFieldValue(ActionFieldValue val) {
+ if (fieldValues == null) {
+ fieldValues = new ActionFieldValue[1];
+ fieldValues[0] = val;
+ } else {
+ ActionFieldValue[] newList = new ActionFieldValue[fieldValues.length + 1];
+ for ( int i = 0; i < fieldValues.length; i++ ) {
+ newList[i] = fieldValues[i];
+ }
+ newList[fieldValues.length] = val;
+ fieldValues = newList;
+ }
+ }
+
+}
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/model/ActionRetractFact.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/model/ActionRetractFact.java 2006-12-08 15:43:37 UTC (rev 8143)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/model/ActionRetractFact.java 2006-12-08 15:46:46 UTC (rev 8144)
@@ -1,5 +1,11 @@
package org.drools.brms.client.modeldriven.model;
+/**
+ * This is used to specify that the bound fact should be retracted
+ * when the rule fires.
+ * @author Michael Neale
+ *
+ */
public class ActionRetractFact
implements
IAction {
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/model/ActionSetField.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/model/ActionSetField.java 2006-12-08 15:43:37 UTC (rev 8143)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/model/ActionSetField.java 2006-12-08 15:46:46 UTC (rev 8144)
@@ -5,42 +5,12 @@
* @author Michael Neale
*
*/
-public class ActionSetField implements IAction {
+public class ActionSetField extends ActionFieldList {
public String variable;
- public ActionFieldValue[] fieldValues;
public boolean modify;
+
+
- public void removeField(int idx) {
- //Unfortunately, this is kinda duplicate code with other methods,
- //but with typed arrays, and GWT, its not really possible to do anything "better"
- //at this point in time.
- ActionFieldValue[] newList = new ActionFieldValue[fieldValues.length - 1];
- int newIdx = 0;
- for ( int i = 0; i < fieldValues.length; i++ ) {
-
- if (i != idx) {
- newList[newIdx] = fieldValues[i];
- newIdx++;
- }
-
- }
- this.fieldValues = newList;
- }
-
- public void addFieldValue(ActionFieldValue val) {
- if (fieldValues == null) {
- fieldValues = new ActionFieldValue[1];
- fieldValues[0] = val;
- } else {
- ActionFieldValue[] newList = new ActionFieldValue[fieldValues.length + 1];
- for ( int i = 0; i < fieldValues.length; i++ ) {
- newList[i] = fieldValues[i];
- }
- newList[fieldValues.length] = val;
- fieldValues = newList;
- }
- }
-
}
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/model/CompositeFactPattern.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/model/CompositeFactPattern.java 2006-12-08 15:43:37 UTC (rev 8143)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/model/CompositeFactPattern.java 2006-12-08 15:46:46 UTC (rev 8144)
@@ -14,5 +14,18 @@
public String type;
public FactPattern[] patterns;
+ public void addFactPattern(FactPattern pat) {
+ if (this.patterns == null) this.patterns = new FactPattern[0];
+
+ FactPattern[] list = this.patterns;
+ FactPattern[] newList = new FactPattern[list.length + 1];
+
+ for ( int i = 0; i < list.length; i++ ) {
+ newList[i] = list[i];
+ }
+ newList[list.length] = pat;
+
+ this.patterns = newList;
+ }
}
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/model/RuleModel.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/model/RuleModel.java 2006-12-08 15:43:37 UTC (rev 8143)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/model/RuleModel.java 2006-12-08 15:46:46 UTC (rev 8144)
@@ -98,6 +98,20 @@
return false;
}
+ public void addLhsItem(IPattern pat) {
+ if (this.lhs == null) this.lhs = new IPattern[0];
+
+ IPattern[] list = this.lhs;
+ IPattern[] newList = new IPattern[list.length + 1];
+
+ for ( int i = 0; i < list.length; i++ ) {
+ newList[i] = list[i];
+ }
+ newList[list.length] = pat;
+
+ this.lhs = newList;
+ }
+
public void removeRhsItem(int idx) {
IAction[] newList = new IAction[rhs.length - 1];
int newIdx = 0;
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/ActionAssertFactWidget.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/ActionAssertFactWidget.java 2006-12-08 15:43:37 UTC (rev 8143)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/ActionAssertFactWidget.java 2006-12-08 15:46:46 UTC (rev 8144)
@@ -1,12 +1,18 @@
package org.drools.brms.client.modeldriven.ui;
+import org.drools.brms.client.common.FormStylePopup;
+import org.drools.brms.client.common.YesNoDialog;
import org.drools.brms.client.modeldriven.SuggestionCompletionEngine;
import org.drools.brms.client.modeldriven.model.ActionAssertFact;
import org.drools.brms.client.modeldriven.model.ActionFieldValue;
+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.Composite;
import com.google.gwt.user.client.ui.FlexTable;
+import com.google.gwt.user.client.ui.HorizontalPanel;
+import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.ListBox;
import com.google.gwt.user.client.ui.TextBox;
@@ -24,11 +30,13 @@
private ActionAssertFact model;
private SuggestionCompletionEngine completions;
private String[] fieldCompletions;
+ private RuleModeller modeller;
- public ActionAssertFactWidget(ActionAssertFact set, SuggestionCompletionEngine com) {
+ public ActionAssertFactWidget(RuleModeller mod, ActionAssertFact set, SuggestionCompletionEngine com) {
this.model = set;
this.completions = com;
this.layout = new FlexTable();
+ this.modeller = mod;
this.fieldCompletions = this.completions.getFieldCompletions( set.factType );
layout.setStyleName( "model-builderInner-Background" );
@@ -44,12 +52,27 @@
FlexTable inner = new FlexTable();
-
for ( int i = 0; i < model.fieldValues.length; i++ ) {
ActionFieldValue val = model.fieldValues[i];
inner.setWidget( i, 0, fieldSelector(val) );
inner.setWidget( i, 1, valueEditor(val) );
+ final int idx = i;
+ Image remove = new Image("images/clear_item.gif");
+ remove.addClickListener( new ClickListener() {
+ public void onClick(Widget w) {
+ YesNoDialog diag = new YesNoDialog("Remove this item?", new Command() {
+ public void execute() {
+ model.removeField( idx );
+ modeller.refreshWidget();
+ }
+ });
+ diag.setPopupPosition( w.getAbsoluteLeft(), w.getAbsoluteTop() );
+ diag.show();
+ }
+ });
+ inner.setWidget( i, 2, remove );
+
}
layout.setWidget( 0, 1, inner );
@@ -69,26 +92,52 @@
}
private Widget fieldSelector(final ActionFieldValue val) {
+ return new Label(val.field);
+ }
+
+ private Widget getAssertLabel() {
+ HorizontalPanel horiz = new HorizontalPanel();
+
+
+ Image edit = new Image("images/edit.gif");
+ edit.addClickListener( new ClickListener() {
+ public void onClick(Widget w) {
+ showAddFieldPopup(w);
+ }
+ } );
+
+ horiz.add( edit );
+ horiz.add( new Label("Assert " + this.model.factType) );
+ return horiz;
+
+ }
+
+ protected void showAddFieldPopup(Widget w) {
+ final FormStylePopup popup = new FormStylePopup("images/newex_wiz.gif", "Add a field");
+ popup.setStyleName( "ks-popups-Popup" );
final ListBox box = new ListBox();
- for ( int i = 0; i < this.fieldCompletions.length; i++ ) {
- box.addItem( this.fieldCompletions[i] );
- if (this.fieldCompletions[i].equals( val.field )) {
- box.setSelectedIndex( i );
- }
+ box.addItem( "..." );
+ for ( int i = 0; i < fieldCompletions.length; i++ ) {
+ box.addItem( fieldCompletions[i] );
}
+ box.setSelectedIndex( 0 );
+
+ popup.addAttribute( "Add field", box );
box.addChangeListener( new ChangeListener() {
public void onChange(Widget w) {
- val.field = box.getItemText( box.getSelectedIndex() );
- }
+ model.addFieldValue( new ActionFieldValue(box.getItemText( box.getSelectedIndex() ), "") );
+ modeller.refreshWidget();
+ popup.hide();
+ }
});
- return box;
- }
- private Widget getAssertLabel() {
- return new Label("Assert new " + this.model.factType);
- }
+
+ popup.setPopupPosition( w.getAbsoluteLeft(), w.getAbsoluteTop() );
+ popup.show();
+
+ }
}
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/ActionSetFieldWidget.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/ActionSetFieldWidget.java 2006-12-08 15:43:37 UTC (rev 8143)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/ActionSetFieldWidget.java 2006-12-08 15:46:46 UTC (rev 8144)
@@ -5,7 +5,6 @@
import org.drools.brms.client.modeldriven.SuggestionCompletionEngine;
import org.drools.brms.client.modeldriven.model.ActionFieldValue;
import org.drools.brms.client.modeldriven.model.ActionSetField;
-import org.drools.brms.client.modeldriven.model.Constraint;
import org.drools.brms.client.modeldriven.model.FactPattern;
import org.drools.brms.client.modeldriven.model.RuleModel;
@@ -32,6 +31,7 @@
final private SuggestionCompletionEngine completions;
final private FlexTable layout;
private boolean isBoundFact = false;
+
final private String[] fieldCompletions;
private RuleModeller modeller;
@@ -151,27 +151,15 @@
}
- private Widget fieldSelector(final ActionFieldValue val) {
-
-// final ListBox box = new ListBox();
-// for ( int i = 0; i < this.fieldCompletions.length; i++ ) {
-// box.addItem( this.fieldCompletions[i] );
-// if (this.fieldCompletions[i].equals( val.field )) {
-// box.setSelectedIndex( i );
-// }
-//
-// }
-//
-// box.addChangeListener( new ChangeListener() {
-// public void onChange(Widget w) {
-// val.field = box.getItemText( box.getSelectedIndex() );
-// }
-// });
-
- //return box;
-
- return new Label(val.field);
-
- }
+ private Widget fieldSelector(final ActionFieldValue val) {
+ return new Label(val.field);
+ }
+ /**
+ * This returns true if the values being set are on a fact.
+ */
+ public boolean isBoundFact() {
+ return isBoundFact;
+ }
+
}
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/CompositeFactPatternWidget.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/CompositeFactPatternWidget.java 2006-12-08 15:43:37 UTC (rev 8143)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/CompositeFactPatternWidget.java 2006-12-08 15:46:46 UTC (rev 8144)
@@ -1,15 +1,28 @@
package org.drools.brms.client.modeldriven.ui;
+import org.drools.brms.client.common.FormStylePopup;
import org.drools.brms.client.modeldriven.SuggestionCompletionEngine;
import org.drools.brms.client.modeldriven.model.CompositeFactPattern;
import org.drools.brms.client.modeldriven.model.FactPattern;
-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;
import com.google.gwt.user.client.ui.Grid;
+import com.google.gwt.user.client.ui.HorizontalPanel;
+import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.Label;
+import com.google.gwt.user.client.ui.ListBox;
import com.google.gwt.user.client.ui.VerticalPanel;
+import com.google.gwt.user.client.ui.Widget;
+/**
+ * This represents a top level CE, like an OR, NOT, EXIST etc...
+ * Contains a list of FactPatterns.
+ *
+ * @author Michael Neale
+ *
+ */
public class CompositeFactPatternWidget extends Composite {
private final SuggestionCompletionEngine completions;
@@ -41,10 +54,55 @@
vert.add( new FactPatternWidget(modeller, facts[i], this.completions, false) );
}
- this.layout.setWidget( 0, 0, new Label(pattern.type) );
+ this.layout.setWidget( 0, 0, getCompositeLabel() );
this.layout.setWidget( 0, 1, vert );
}
+ private Widget getCompositeLabel() {
+
+ HorizontalPanel horiz = new HorizontalPanel();
+ Image edit = new Image("images/edit.gif");
+ edit.addClickListener( new ClickListener() {
+ public void onClick(Widget w) {
+ showFactTypeSelector( w );
+ }
+ } );
+
+ horiz.add( edit );
+ horiz.add( new Label(pattern.type));
+ return horiz;
+ }
+ /**
+ * Pops up the fact selector.
+ */
+ protected void showFactTypeSelector(final Widget w) {
+ final ListBox box = new ListBox();
+ String[] facts = completions.getFactTypes();
+
+ for ( int i = 0; i < facts.length; i++ ) {
+ box.addItem( facts[i] );
+ }
+
+ final FormStylePopup popup = new FormStylePopup("images/new_fact.gif", "New fact pattern...");
+ popup.addAttribute( "choose type", box );
+ Button ok = new Button("OK");
+ popup.addAttribute( "", ok );
+
+ ok.addClickListener( new ClickListener() {
+ public void onClick(Widget w) {
+ pattern.addFactPattern( new FactPattern(box.getItemText( box.getSelectedIndex() )));
+ modeller.refreshWidget();
+ popup.hide();
+ }
+ });
+ popup.setStyleName( "ks-popups-Popup" );
+
+ popup.setPopupPosition( w.getAbsoluteLeft() - 400, w.getAbsoluteTop() );
+ popup.show();
+
+ }
+
+
}
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/FactPatternWidget.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/FactPatternWidget.java 2006-12-08 15:43:37 UTC (rev 8143)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/FactPatternWidget.java 2006-12-08 15:46:46 UTC (rev 8144)
@@ -50,11 +50,12 @@
final Constraint c = pattern.constraints[row];
final int currentRow = row;
- inner.setWidget( row, 0, fieldDropDown(c, new Command() {
+ inner.setWidget( row, 0, fieldDropDown(c));/*, new Command() {
public void execute() {
inner.setWidget( currentRow, 1, operatorDropDown( c ));
}
}));
+ */
inner.setWidget( row, 1, operatorDropDown(c) );
inner.setWidget( row, 2, valueEditor(c) );
@@ -257,34 +258,39 @@
}
- private Widget fieldDropDown(final Constraint con, final Command onChange) {
- HorizontalPanel horiz = new HorizontalPanel();
-
- final ListBox box = new ListBox();
+ private Widget fieldDropDown(final Constraint con) {//, final Command onChange) {
+//MN: don't really need drop downs here. No idea why I did it initially.
+// HorizontalPanel horiz = new HorizontalPanel();
+//
+// final ListBox box = new ListBox();
+//
+// String[] com = completions.getFieldCompletions( this.pattern.factType );
+// for ( int i = 0; i < com.length; i++ ) {
+// box.addItem( com[i] );
+// if (com[i].equals( con.fieldName )) {
+// box.setSelectedIndex( i );
+// }
+// }
+//
+// box.addChangeListener( new ChangeListener() {
+//
+// public void onChange(Widget w) {
+// con.fieldName = box.getItemText( box.getSelectedIndex() );
+// onChange.execute();
+// }
+//
+// });
+// horiz.add( box );
+//
+// if (con.fieldBinding != null) {
+// horiz.add( new Label( "[" + con.fieldBinding + "]") );
+// }
+//
+// return horiz;
+//
- String[] com = completions.getFieldCompletions( this.pattern.factType );
- for ( int i = 0; i < com.length; i++ ) {
- box.addItem( com[i] );
- if (com[i].equals( con.fieldName )) {
- box.setSelectedIndex( i );
- }
- }
+ return new Label(con.fieldName);
- box.addChangeListener( new ChangeListener() {
-
- public void onChange(Widget w) {
- con.fieldName = box.getItemText( box.getSelectedIndex() );
- onChange.execute();
- }
-
- });
- horiz.add( box );
-
- if (con.fieldBinding != null) {
- horiz.add( new Label( "[" + con.fieldBinding + "]") );
- }
-
- return horiz;
}
}
Added: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/LeftHandSideSelector.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/LeftHandSideSelector.java 2006-12-08 15:43:37 UTC (rev 8143)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/LeftHandSideSelector.java 2006-12-08 15:46:46 UTC (rev 8144)
@@ -0,0 +1,39 @@
+package org.drools.brms.client.modeldriven.ui;
+
+import org.drools.brms.client.common.FormStylePopup;
+import org.drools.brms.client.modeldriven.SuggestionCompletionEngine;
+
+import com.google.gwt.user.client.ui.Button;
+import com.google.gwt.user.client.ui.ClickListener;
+import com.google.gwt.user.client.ui.ListBox;
+
+/**
+ * This shows a list of options for the left hand side of a rule.
+ * @author Michael Neale
+ */
+public class LeftHandSideSelector {
+
+ private FormStylePopup form;
+
+ public LeftHandSideSelector(SuggestionCompletionEngine completions, ClickListener okClick) {
+ final ListBox box = new ListBox();
+ String[] facts = completions.getFactTypes();
+ for ( int i = 0; i < facts.length; i++ ) {
+ box.addItem( facts[i] );
+ }
+ final FormStylePopup popup = new FormStylePopup("images/new_fact.gif", "New fact pattern...");
+ popup.addAttribute( "choose type", box );
+ Button ok = new Button("OK");
+ popup.addAttribute( "", ok );
+
+ ok.addClickListener( okClick );
+ popup.setStyleName( "ks-popups-Popup" );
+
+ }
+
+ public void show(int left, int top) {
+ form.setPopupPosition( left, top );
+ form.show();
+ }
+
+}
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/RuleModeller.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/RuleModeller.java 2006-12-08 15:43:37 UTC (rev 8143)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/RuleModeller.java 2006-12-08 15:46:46 UTC (rev 8144)
@@ -65,8 +65,6 @@
layout.setWidget( 0, 0, new Label("IF") );
layout.setWidget( 0, 2, addPattern );
-
-
layout.setWidget( 1, 1, renderLhs(this.model) );
layout.setWidget( 2, 0, new Label("THEN") );
layout.setWidget( 3, 1, renderRhs(this.model) );
@@ -85,7 +83,7 @@
if (action instanceof ActionSetField) {
w = new ActionSetFieldWidget(this, this.model, (ActionSetField) action, completions ) ;
} else if (action instanceof ActionAssertFact) {
- w = new ActionAssertFactWidget((ActionAssertFact) action, completions );
+ w = new ActionAssertFactWidget(this, (ActionAssertFact) action, completions );
} else if (action instanceof ActionRetractFact) {
w = new ActionRetractFactWidget((ActionRetractFact) action);
}
@@ -124,9 +122,11 @@
protected void showFactTypeSelector(final Widget w) {
final ListBox box = new ListBox();
String[] facts = completions.getFactTypes();
+
for ( int i = 0; i < facts.length; i++ ) {
box.addItem( facts[i] );
}
+
final FormStylePopup popup = new FormStylePopup("images/new_fact.gif", "New fact pattern...");
popup.addAttribute( "choose type", box );
Button ok = new Button("OK");
@@ -135,31 +135,21 @@
ok.addClickListener( new ClickListener() {
public void onClick(Widget w) {
addNewFact(box.getItemText( box.getSelectedIndex() ));
- popup.hide();
-
+ popup.hide();
}
});
popup.setStyleName( "ks-popups-Popup" );
popup.setPopupPosition( w.getAbsoluteLeft() - 400, w.getAbsoluteTop() );
popup.show();
+
}
/**
* Adds a fact to the model, and then refreshes the display.
*/
protected void addNewFact(String itemText) {
- IPattern[] list = this.model.lhs;
- IPattern[] newList = new IPattern[list.length + 1];
-
-
- for ( int i = 0; i < list.length; i++ ) {
- newList[i] = list[i];
- }
- newList[list.length] = new FactPattern(itemText);
-
- this.model.lhs = newList;
-
+ this.model.addLhsItem( new FactPattern(itemText) );
refreshWidget();
}
Added: labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/client/modeldriven/CompositeFactPatternTest.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/client/modeldriven/CompositeFactPatternTest.java 2006-12-08 15:43:37 UTC (rev 8143)
+++ labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/client/modeldriven/CompositeFactPatternTest.java 2006-12-08 15:46:46 UTC (rev 8144)
@@ -0,0 +1,24 @@
+package org.drools.brms.client.modeldriven;
+
+import org.drools.brms.client.modeldriven.model.CompositeFactPattern;
+import org.drools.brms.client.modeldriven.model.FactPattern;
+
+import junit.framework.TestCase;
+
+public class CompositeFactPatternTest extends TestCase {
+
+ public void testAddPattern() {
+ CompositeFactPattern pat = new CompositeFactPattern();
+ FactPattern x = new FactPattern();
+ pat.addFactPattern( x );
+ assertEquals(1, pat.patterns.length);
+
+ FactPattern y = new FactPattern();
+ pat.addFactPattern( y );
+ assertEquals(2, pat.patterns.length);
+ assertEquals(x, pat.patterns[0]);
+ assertEquals(y, pat.patterns[1]);
+ }
+
+
+}
Modified: labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/client/modeldriven/RuleModelTest.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/client/modeldriven/RuleModelTest.java 2006-12-08 15:43:37 UTC (rev 8143)
+++ labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/client/modeldriven/RuleModelTest.java 2006-12-08 15:46:46 UTC (rev 8144)
@@ -77,8 +77,6 @@
assertEquals("x", b.get( 0 ));
assertEquals("y", b.get( 1 ));
-
-
}
public void testRemoveItemLhs() {
@@ -102,8 +100,7 @@
model.removeLhsItem( 0 );
assertEquals(2, model.lhs.length);
- assertEquals(y, model.lhs[0]);
-
+ assertEquals(y, model.lhs[0]);
}
public void testRemoveItemRhs() {
@@ -122,9 +119,25 @@
assertEquals(2, model.rhs.length);
assertEquals(r0, model.rhs[0]);
- assertEquals(r2, model.rhs[1]);
+ assertEquals(r2, model.rhs[1]);
+ }
+
+ public void testAddItemLhs() {
+ RuleModel model = new RuleModel();
+ FactPattern x = new FactPattern();
+ model.addLhsItem( x );
+ assertEquals(1, model.lhs.length);
+ FactPattern y = new FactPattern();
+ model.addLhsItem( y );
+
+ assertEquals(2, model.lhs.length);
+ assertEquals(x, model.lhs[0]);
+ assertEquals(y, model.lhs[1]);
+
}
+
+
}
More information about the jboss-svn-commits
mailing list