[jboss-svn-commits] JBL Code SVN: r8104 - 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
Wed Dec 6 12:41:44 EST 2006


Author: michael.neale at jboss.com
Date: 2006-12-06 12:41:32 -0500 (Wed, 06 Dec 2006)
New Revision: 8104

Added:
   labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/client/modeldriven/FactPatternTest.java
Modified:
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/model/Constraint.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/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
Log:
some refactoring, testing, and adding of ability to add constraints

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/model/Constraint.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/model/Constraint.java	2006-12-06 16:46:52 UTC (rev 8103)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/model/Constraint.java	2006-12-06 17:41:32 UTC (rev 8104)
@@ -10,4 +10,11 @@
     
     public ConnectiveConstraint[] connectives;
     
+    public Constraint(String field) {
+        this.fieldName = field;
+    }
+    
+    public Constraint() {}
+    
+    
 }

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-06 16:46:52 UTC (rev 8103)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/model/FactPattern.java	2006-12-06 17:41:32 UTC (rev 8104)
@@ -16,4 +16,21 @@
     public String boundName;
     
     
+    public void addConstraint(Constraint constraint) {
+        if (constraints == null) {
+            constraints = new Constraint[1];            
+            constraints[0] = constraint;            
+        } else {
+            Constraint[] newList = new Constraint[constraints.length + 1];
+            for ( int i = 0; i < constraints.length; i++ ) {            
+                newList[i] = constraints[i];
+            }
+            newList[constraints.length] = constraint;
+            constraints = newList;
+        }
+    }
+    
+    
+    
+    
 }

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-06 16:46:52 UTC (rev 8103)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/CompositeFactPatternWidget.java	2006-12-06 17:41:32 UTC (rev 8104)
@@ -4,6 +4,7 @@
 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.Composite;
 import com.google.gwt.user.client.ui.Grid;
 import com.google.gwt.user.client.ui.Label;
@@ -14,12 +15,15 @@
     private final SuggestionCompletionEngine completions;
     private CompositeFactPattern pattern;
     private Grid layout;
+    private RuleModeller modeller;
 
-    public CompositeFactPatternWidget(CompositeFactPattern pattern,
+    public CompositeFactPatternWidget(RuleModeller modeller, CompositeFactPattern pattern,
                                       SuggestionCompletionEngine completions) {
         this.completions = completions;
         this.pattern = pattern;
+        this.modeller = modeller;
         
+        
         this.layout = new Grid(1, 2);
         this.layout.setStyleName( "model-builderInner-Background" );
         
@@ -34,7 +38,7 @@
         
         FactPattern[] facts = pattern.patterns;
         for ( int i = 0; i < facts.length; i++ ) {
-            vert.add( new FactPatternWidget(facts[i], this.completions) );
+            vert.add( new FactPatternWidget(modeller, facts[i], this.completions) );
         }
         
         this.layout.setWidget( 0, 0, new Label(pattern.type) );

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-06 16:46:52 UTC (rev 8103)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/FactPatternWidget.java	2006-12-06 17:41:32 UTC (rev 8104)
@@ -1,5 +1,6 @@
 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.ConnectiveConstraint;
 import org.drools.brms.client.modeldriven.model.Constraint;
@@ -8,9 +9,11 @@
 
 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,11 +29,13 @@
     private FactPattern pattern;
     private FlexTable layout = new FlexTable();
     private SuggestionCompletionEngine completions;
+    private RuleModeller modeller;
     
     
-    public FactPatternWidget(IPattern p, SuggestionCompletionEngine com) {
+    public FactPatternWidget(RuleModeller modeller, IPattern p, SuggestionCompletionEngine com) {
         this.pattern = (FactPattern) p;
         this.completions = com;
+        this.modeller = modeller;
         layout.setWidget( 0, 0, getPatternLabel() );
         
         final FlexTable inner = new FlexTable();
@@ -57,15 +62,57 @@
     }
 
 
-    private Label getPatternLabel() {
+    /**
+     * This returns the pattern label.
+     */
+    private Widget getPatternLabel() {
+        HorizontalPanel horiz = new HorizontalPanel();
+        
+        Image edit = new Image("images/edit.gif");
+        horiz.add( edit );
+        edit.addClickListener( new ClickListener() {
+            public void onClick(Widget w) {
+                showPatternPopup(w);
+            }
+        } );
+        
         if (pattern.boundName != null) {
-            return new Label(pattern.factType + " [" + pattern.boundName + "]" );
+            horiz.add( new Label(pattern.factType + " [" + pattern.boundName + "]" ));
         } else {
-            return new Label(pattern.factType);
+            horiz.add( new Label(pattern.factType));
         }
+        
+        return horiz;
+        
     }
 
 
+    protected void showPatternPopup(Widget w) {
+        final FormStylePopup popup = new FormStylePopup("images/newex_wiz.gif", "Modify constraints");
+        popup.setStyleName( "ks-popups-Popup" );
+        final ListBox box = new ListBox();
+        box.addItem( "..." );
+        String[] fields = this.completions.getFieldCompletions( this.pattern.factType );
+        for ( int i = 0; i < fields.length; i++ ) {
+            box.addItem( fields[i] );
+        }
+        
+        box.setSelectedIndex( 0 );
+        
+        popup.addAttribute( "Add field", box );
+        box.addChangeListener( new ChangeListener() {
+            public void onChange(Widget w) {
+                pattern.addConstraint( new Constraint(box.getItemText( box.getSelectedIndex() )) );
+                modeller.refreshWidget();
+                popup.hide();
+            }
+        });
+        
+        popup.setPopupPosition( w.getAbsoluteLeft(), w.getAbsoluteTop() );
+        popup.show();
+    }
+
+
     private Widget connectives(Constraint c) {
         if (c.connectives != null && c.connectives.length > 0) {
             HorizontalPanel horiz = new HorizontalPanel();

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-06 16:46:52 UTC (rev 8103)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/RuleModeller.java	2006-12-06 17:41:32 UTC (rev 8104)
@@ -41,14 +41,17 @@
         
         layout = new FlexTable();
         
-        doLayout();
+        refreshWidget();
         
         layout.setStyleName( "model-builder-Background" );
         initWidget( layout );
         
     }
 
-    private void doLayout() {
+    /**
+     * This updates the widget to reflect the state of the model.
+     */
+    public void refreshWidget() {
         layout.clear();
         
         Image addPattern = new Image( "images/new_item.gif" );
@@ -93,7 +96,7 @@
             remove.addClickListener( new ClickListener() {
                 public void onClick(Widget w) {
                     model.removeRhsItem(idx);
-                    doLayout();
+                    refreshWidget();
                 }
             } );
             horiz.add( w );
@@ -150,7 +153,7 @@
         
         this.model.lhs = newList;
         
-        doLayout();
+        refreshWidget();
     }
 
     private Widget renderLhs(final RuleModel model) {
@@ -161,9 +164,9 @@
             Widget w;
             if (pattern instanceof FactPattern) {  
                 
-                w =  new FactPatternWidget(pattern, completions) ;
+                w =  new FactPatternWidget(this, pattern, completions) ;
             } else if (pattern instanceof CompositeFactPattern) {
-                w = new CompositeFactPatternWidget((CompositeFactPattern) pattern, completions) ;
+                w = new CompositeFactPatternWidget(this, (CompositeFactPattern) pattern, completions) ;
             } else {
                 throw new RuntimeException("I don't know what type of pattern that is.");
             }
@@ -175,7 +178,7 @@
             remove.addClickListener( new ClickListener() {
                 public void onClick(Widget w) {
                     if (model.removeLhsItem(idx)) {
-                        doLayout();
+                        refreshWidget();
                     } else {
                         ErrorPopup.showMessage( "Can't remove that item as it is used in the action part of the rule." );
                     }

Added: 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-06 16:46:52 UTC (rev 8103)
+++ labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/client/modeldriven/FactPatternTest.java	2006-12-06 17:41:32 UTC (rev 8104)
@@ -0,0 +1,29 @@
+package org.drools.brms.client.modeldriven;
+
+import org.drools.brms.client.modeldriven.model.Constraint;
+import org.drools.brms.client.modeldriven.model.FactPattern;
+
+import junit.framework.TestCase;
+
+public class FactPatternTest extends TestCase {
+
+    public void testAddConstraint() {
+        FactPattern p = new FactPattern();
+        Constraint x = new Constraint("x");
+        p.addConstraint(x);
+        
+        assertEquals(1, p.constraints.length);
+        assertEquals(x, p.constraints[0]);
+        
+        Constraint y = new Constraint("y");
+        
+        p.addConstraint( y );
+        assertEquals(2, p.constraints.length);
+        assertEquals(x, p.constraints[0]);
+        assertEquals(y, p.constraints[1]);
+        
+    }
+    
+    
+    
+}




More information about the jboss-svn-commits mailing list