[jboss-svn-commits] JBL Code SVN: r8123 - in labs/jbossrules/trunk/drools-jbrms/src: main/java/org/drools/brms/client/common main/java/org/drools/brms/client/modeldriven/model main/java/org/drools/brms/client/modeldriven/ui main/java/org/drools/brms/public test/java/org/drools/brms/client/modeldriven

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu Dec 7 12:30:59 EST 2006


Author: michael.neale at jboss.com
Date: 2006-12-07 12:30:46 -0500 (Thu, 07 Dec 2006)
New Revision: 8123

Added:
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/YesNoDialog.java
   labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/client/modeldriven/ActionSetFieldTest.java
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/FactPattern.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/ActionSetFieldWidget.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/main/java/org/drools/brms/public/JBRMS.css
   labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/client/modeldriven/FactPatternTest.java
   labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/client/modeldriven/RuleModelTest.java
Log:
lots more ajaxy improvements

Added: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/YesNoDialog.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/YesNoDialog.java	2006-12-07 15:22:58 UTC (rev 8122)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/YesNoDialog.java	2006-12-07 17:30:46 UTC (rev 8123)
@@ -0,0 +1,45 @@
+package org.drools.brms.client.common;
+
+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.DialogBox;
+import com.google.gwt.user.client.ui.HorizontalPanel;
+import com.google.gwt.user.client.ui.Widget;
+
+/**
+ * A simple confirmation dialog. 
+ * 
+ * @author Michael Neale
+ *
+ */
+public class YesNoDialog extends DialogBox {
+
+    public YesNoDialog(String message, final Command yes) {
+        setText( message );
+        
+        Button y = new Button("Yes");
+        Button n = new Button("No");
+        
+        y.addClickListener( new ClickListener() {
+            public void onClick(Widget w) {
+                yes.execute();
+                hide();
+            }            
+        });
+        
+        n.addClickListener( new ClickListener() {
+            public void onClick(Widget w) {
+                hide();                
+            }
+            
+        });
+        
+        HorizontalPanel horiz = new HorizontalPanel();
+        horiz.add( y );
+        horiz.add( n );
+        
+        setWidget( horiz );
+    }
+    
+}

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-07 15:22:58 UTC (rev 8122)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/model/ActionSetField.java	2006-12-07 17:30:46 UTC (rev 8123)
@@ -12,4 +12,35 @@
     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/FactPattern.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/model/FactPattern.java	2006-12-07 15:22:58 UTC (rev 8122)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/model/FactPattern.java	2006-12-07 17:30:46 UTC (rev 8123)
@@ -29,6 +29,24 @@
             constraints = newList;
         }
     }
+
+    public void removeConstraint(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. 
+        Constraint[] newList = new Constraint[constraints.length - 1];
+        int newIdx = 0;
+        for ( int i = 0; i < constraints.length; i++ ) {
+            
+            if (i != idx) {
+                newList[newIdx] = constraints[i];
+                newIdx++;
+            }
+            
+        }
+        this.constraints = 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-07 15:22:58 UTC (rev 8122)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/model/RuleModel.java	2006-12-07 17:30:46 UTC (rev 8123)
@@ -77,7 +77,6 @@
     }
 
     /**
-     * 
      * @param binding The name of the LHS fact binding.
      * @return Returns true if the specified binding is used on the RHS.
      */
@@ -89,6 +88,11 @@
                 if (set.variable.equals( binding )) {
                     return true;
                 }
+            } else if (rhs[i] instanceof ActionRetractFact) {
+                ActionRetractFact ret = (ActionRetractFact) rhs[i];
+                if (ret.variableName.equals( binding )) {
+                    return true;
+                }
             }
         }
         return false;

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-07 15:22:58 UTC (rev 8122)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/ActionSetFieldWidget.java	2006-12-07 17:30:46 UTC (rev 8123)
@@ -1,14 +1,21 @@
 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.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;
 
+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;
@@ -26,12 +33,14 @@
     final private FlexTable layout;
     private boolean isBoundFact = false;
     final private String[] fieldCompletions;
+    private RuleModeller modeller;
     
     
-    public ActionSetFieldWidget(RuleModel rule, ActionSetField set, SuggestionCompletionEngine com) {
+    public ActionSetFieldWidget(RuleModeller mod, RuleModel rule, ActionSetField set, SuggestionCompletionEngine com) {
         this.model = set;
         this.completions = com;
         this.layout = new FlexTable();
+        this.modeller = mod;
         layout.setStyleName( "model-builderInner-Background" );
         if (completions.isGlobalVariable( set.variable )) {
             this.fieldCompletions = completions.getFieldCompletionsForGlobalVariable( set.variable );            
@@ -59,6 +68,21 @@
             
             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 );
@@ -67,11 +91,54 @@
     }
 
 
-    private Label getSetterLabel() {
-        return new Label("Set " + model.variable);
+    private Widget getSetterLabel() {
+        
+        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("Set " + model.variable) );
+        
+        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();
+        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) {
+                model.addFieldValue( new ActionFieldValue(box.getItemText( box.getSelectedIndex() ), "") );
+                modeller.refreshWidget();
+                popup.hide();
+            }
+        });
+        
+
+        
+        popup.setPopupPosition( w.getAbsoluteLeft(), w.getAbsoluteTop() );
+        popup.show();
+ 
+    }
+
+
     private Widget valueEditor(final ActionFieldValue val) {
         final TextBox box = new TextBox();
         box.setText( val.value );
@@ -86,22 +153,24 @@
 
     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 );
-            }
-
-        }
+//        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() );                
+//            }            
+//        });
         
-        box.addChangeListener( new ChangeListener() {
-            public void onChange(Widget w) {
-                val.field = box.getItemText( box.getSelectedIndex() );                
-            }            
-        });
+        //return box;
         
-        return box;    
+        return new Label(val.field);
         
    }
     

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-07 15:22:58 UTC (rev 8122)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/FactPatternWidget.java	2006-12-07 17:30:46 UTC (rev 8123)
@@ -1,6 +1,7 @@
 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.ConnectiveConstraint;
 import org.drools.brms.client.modeldriven.model.Constraint;
@@ -34,10 +35,10 @@
     private boolean bindable;
     
     
-    public FactPatternWidget(RuleModeller modeller, IPattern p, SuggestionCompletionEngine com, boolean canBind) {
+    public FactPatternWidget(RuleModeller mod, IPattern p, SuggestionCompletionEngine com, boolean canBind) {
         this.pattern = (FactPattern) p;
         this.completions = com;
-        this.modeller = modeller;
+        this.modeller = mod;
         this.bindable = canBind;
         layout.setWidget( 0, 0, getPatternLabel() );
         
@@ -48,18 +49,41 @@
         for ( int row = 0; row < pattern.constraints.length; row++ ) {
             final Constraint c = pattern.constraints[row];
             final int currentRow = row;
+
             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) );            
             inner.setWidget( row, 3, connectives(c) );
+            
+            Image clear = new Image("images/clear_item.gif");
+            clear.addClickListener( new ClickListener() {
+                public void onClick(Widget w) {
+                    YesNoDialog d = new YesNoDialog("Remove this item?", new Command() {
 
+                        public void execute() {
+                            pattern.removeConstraint( currentRow );
+                            modeller.refreshWidget();
+                        }
+                        
+                    });
+                    d.setPopupPosition( w.getAbsoluteLeft(), w.getAbsoluteTop());
+                    d.show();
+                }
+            } );
+            
+            inner.setWidget( row, 4, clear );
+
         }
-        layout.setStyleName( "model-builderInner-Background" );
+        if (bindable) {
+            layout.setStyleName( "model-builderInner-Background" );
+        } else {
+            layout.setStyleName( "model-builderInnerInner-Background" );
+        }
         initWidget( layout );
         
     }
@@ -111,7 +135,21 @@
             }
         });
         
-        if (bindable) {
+        doBindingEditor( popup );
+        
+        popup.setPopupPosition( w.getAbsoluteLeft(), w.getAbsoluteTop() );
+        popup.show();
+    }
+
+
+    /**
+     * This adds in (optionally) the editor for changing the bound variable name.
+     * If its a bindable pattern, it will show the editor,
+     * if it is already bound, and the name is used, it should 
+     * not be editable.
+     */
+    private void doBindingEditor(final FormStylePopup popup) {
+        if (bindable && !(modeller.getModel().isBoundFactUsed( pattern.boundName ))) {
             HorizontalPanel varName = new HorizontalPanel();
             final TextBox varTxt = new TextBox();
             varTxt.setText( pattern.boundName );
@@ -130,9 +168,6 @@
             popup.addAttribute("Variable name", varName);
             
         }
-        
-        popup.setPopupPosition( w.getAbsoluteLeft(), w.getAbsoluteTop() );
-        popup.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-07 15:22:58 UTC (rev 8122)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/RuleModeller.java	2006-12-07 17:30:46 UTC (rev 8123)
@@ -2,6 +2,7 @@
 
 import org.drools.brms.client.common.ErrorPopup;
 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.ActionRetractFact;
@@ -12,6 +13,7 @@
 import org.drools.brms.client.modeldriven.model.IPattern;
 import org.drools.brms.client.modeldriven.model.RuleModel;
 
+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;
@@ -44,8 +46,7 @@
         refreshWidget();
         
         layout.setStyleName( "model-builder-Background" );
-        initWidget( layout );
-        
+        initWidget( layout );        
     }
 
     /**
@@ -82,7 +83,7 @@
             
             Widget w = null;            
             if (action instanceof ActionSetField) {                
-                w =  new ActionSetFieldWidget(this.model, (ActionSetField) action, completions ) ; 
+                w =  new ActionSetFieldWidget(this, this.model, (ActionSetField) action, completions ) ; 
             } else if (action instanceof ActionAssertFact) {
                 w = new ActionAssertFactWidget((ActionAssertFact) action, completions );
             } else if (action instanceof ActionRetractFact) {
@@ -95,8 +96,14 @@
             final int idx = i;
             remove.addClickListener( new ClickListener() {
                 public void onClick(Widget w) {
-                    model.removeRhsItem(idx);
-                    refreshWidget();
+                    YesNoDialog diag = new YesNoDialog("Remove this item?", new Command() {
+                        public void execute() {
+                            model.removeRhsItem(idx);
+                            refreshWidget();                            
+                        }
+                    });
+                    diag.setPopupPosition( w.getAbsoluteLeft(), w.getAbsoluteTop() );
+                    diag.show();
                 }
             } );
             horiz.add( w );
@@ -162,9 +169,8 @@
         for ( int i = 0; i < model.lhs.length; i++ ) {
             IPattern pattern = model.lhs[i];
             Widget w;
-            if (pattern instanceof FactPattern) {  
-                
-                w =  new FactPatternWidget(this, pattern, completions, true) ;
+            if (pattern instanceof FactPattern) {                  
+                w = new FactPatternWidget(this, pattern, completions, true) ;
             } else if (pattern instanceof CompositeFactPattern) {
                 w = new CompositeFactPatternWidget(this, (CompositeFactPattern) pattern, completions) ;
             } else {
@@ -177,11 +183,20 @@
             final int idx = i;
             remove.addClickListener( new ClickListener() {
                 public void onClick(Widget w) {
-                    if (model.removeLhsItem(idx)) {
-                        refreshWidget();
-                    } else {
-                        ErrorPopup.showMessage( "Can't remove that item as it is used in the action part of the rule." );
-                    }
+                    YesNoDialog diag = new YesNoDialog("Remove this item?", new Command() {
+
+                        public void execute() {
+                            if (model.removeLhsItem(idx)) {
+                                refreshWidget();
+                            } else {
+                                ErrorPopup.showMessage( "Can't remove that item as it is used in the action part of the rule." );
+                            }
+                            
+                        }
+                        
+                    });
+                    diag.setPopupPosition( w.getAbsoluteLeft(), w.getAbsoluteTop() );
+                    diag.show();
                 }
             } );
             horiz.add( w );
@@ -196,7 +211,9 @@
 
 
     
+    public RuleModel getModel() {
+        return model;
+    }
     
     
-    
 }

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/JBRMS.css
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/JBRMS.css	2006-12-07 15:22:58 UTC (rev 8122)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/JBRMS.css	2006-12-07 17:30:46 UTC (rev 8123)
@@ -119,13 +119,27 @@
 }
 
 .model-builderInner-Background {
-  background-color: white;
-  //border: 1px solid #87B3FF;
-	border-top: 1px solid black;
-	border-bottom: 1px solid black;
+	background-color: white;
+	border-top: 1px solid gray;
+	border-bottom: 1px solid gray;
 }
 
+.model-builderInnerInner-Background {
+        background-color: white;
+	border-top: 1px solid gray;
+	border-bottom: 1px solid gray;
+}
 
+.gwt-DialogBox { 
+	border: 1px solid #87B3FF;
+}
+.gwt-DialogBox .Caption {  
+	background-color: #FDFCDC;
+	font-size: smaller;
+}
+
+
+
 .gwt-TabBar {
   background-color: #B8B8B8;
   font-size: smaller;

Added: labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/client/modeldriven/ActionSetFieldTest.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/client/modeldriven/ActionSetFieldTest.java	2006-12-07 15:22:58 UTC (rev 8122)
+++ labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/client/modeldriven/ActionSetFieldTest.java	2006-12-07 17:30:46 UTC (rev 8123)
@@ -0,0 +1,42 @@
+package org.drools.brms.client.modeldriven;
+
+import org.drools.brms.client.modeldriven.model.ActionFieldValue;
+import org.drools.brms.client.modeldriven.model.ActionSetField;
+
+import junit.framework.TestCase;
+
+public class ActionSetFieldTest extends TestCase {
+
+    public void testRemove() {
+        ActionSetField set = new ActionSetField();
+        set.fieldValues = new ActionFieldValue[2];
+        ActionFieldValue v0 = new ActionFieldValue("x", "42");
+        ActionFieldValue v1 = new ActionFieldValue("y", "43");
+        set.fieldValues[0] = v0;
+        set.fieldValues[1] = v1;
+        
+        set.removeField( 1 );
+        
+        assertEquals(1, set.fieldValues.length);
+        assertEquals(v0, set.fieldValues[0]);
+        
+    }
+    
+    public void testAdd() {
+        ActionSetField set = new ActionSetField();
+        set.fieldValues = new ActionFieldValue[2];
+        ActionFieldValue v0 = new ActionFieldValue("x", "42");
+        ActionFieldValue v1 = new ActionFieldValue("y", "43");
+        set.fieldValues[0] = v0;
+        set.fieldValues[1] = v1;
+
+        ActionFieldValue q = new ActionFieldValue("q", "q");
+        set.addFieldValue( q);
+        
+        assertEquals(3, set.fieldValues.length);
+        assertEquals(q, set.fieldValues[2]);
+        assertEquals(v0, set.fieldValues[0]);
+        
+    }
+    
+}

Modified: labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/client/modeldriven/FactPatternTest.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/client/modeldriven/FactPatternTest.java	2006-12-07 15:22:58 UTC (rev 8122)
+++ labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/client/modeldriven/FactPatternTest.java	2006-12-07 17:30:46 UTC (rev 8123)
@@ -24,6 +24,23 @@
         
     }
     
+    public void testRemoveConstraint() {
+        FactPattern p = new FactPattern();
+        Constraint x = new Constraint("x");
+        p.addConstraint(x);
+        Constraint y = new Constraint("y");        
+        p.addConstraint( y );
+
+        assertEquals(2, p.constraints.length);
+        
+        p.removeConstraint(1);
+        
+        assertEquals(1, p.constraints.length);
+        
+        assertEquals(x, p.constraints[0]);
+        
+    }
     
     
+    
 }

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-07 15:22:58 UTC (rev 8122)
+++ labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/client/modeldriven/RuleModelTest.java	2006-12-07 17:30:46 UTC (rev 8123)
@@ -48,6 +48,11 @@
         assertEquals(3, model.lhs.length);
         assertFalse(model.removeLhsItem( 0 ));
         assertEquals(3, model.lhs.length);
+        
+        ActionRetractFact fact = new ActionRetractFact("q");
+        model.rhs[0] = fact;
+        assertTrue(model.isBoundFactUsed( "q" ));
+        assertFalse(model.isBoundFactUsed( "x" ));
     }
     
     public void testBindingList() {




More information about the jboss-svn-commits mailing list