[jboss-svn-commits] JBL Code SVN: r11080 - in labs/jbossrules/trunk/drools-jbrms/src: main/java/org/drools/brms/client/modeldriven/ui and 1 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Apr 17 22:03:13 EDT 2007


Author: michael.neale at jboss.com
Date: 2007-04-17 22:03:13 -0400 (Tue, 17 Apr 2007)
New Revision: 11080

Modified:
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/ImageButton.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/server/builder/ContentPackageAssemblerTest.java
Log:
JBRULES-802 Bound fields

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/ImageButton.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/ImageButton.java	2007-04-18 02:02:44 UTC (rev 11079)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/ImageButton.java	2007-04-18 02:03:13 UTC (rev 11080)
@@ -14,4 +14,10 @@
         setStyleName( "image-Button" );
     }
     
+    public ImageButton(String img, String tooltip) {
+        super(img);
+        setStyleName( "image-Button" );
+        setTitle( tooltip );
+    }
+    
 }

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	2007-04-18 02:02:44 UTC (rev 11079)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/FactPatternWidget.java	2007-04-18 02:03:13 UTC (rev 11080)
@@ -14,6 +14,8 @@
 import org.drools.brms.client.modeldriven.brxml.IPattern;
 
 import com.google.gwt.user.client.Command;
+import com.google.gwt.user.client.Window;
+import com.google.gwt.user.client.ui.AbsolutePanel;
 import com.google.gwt.user.client.ui.Button;
 import com.google.gwt.user.client.ui.ChangeListener;
 import com.google.gwt.user.client.ui.ClickListener;
@@ -219,6 +221,11 @@
             Button bindVar = new Button( "Set" );
             bindVar.addClickListener( new ClickListener() {
                 public void onClick(Widget w) {
+                    String var = varTxt.getText();
+                    if (modeller.isVariableNameUsed( var )) {
+                        Window.alert( "The variable name [" + var + "] is already taken." );
+                        return;
+                    }
                     pattern.boundName = varTxt.getText();
                     modeller.refreshWidget();
                     popup.hide();
@@ -300,8 +307,59 @@
         return box;
     }
 
+    /**
+     * get the field widget. This may be a simple label, or it may
+     * be bound (and show the var name) or a icon to create a binding.
+     */
     private Widget fieldLabel(final Constraint con) {//, final Command onChange) {
-        return new Label( con.fieldName );
+        HorizontalPanel ab = new HorizontalPanel();
+        ab.setStyleName( "modeller-field-Label" );
+        if (!con.isBound()) {
+            if (bindable) {
+                Image bind = new ImageButton( "images/add_field_to_fact.gif", "Give this field a variable name that can be used elsewhere." );
+                bind.addClickListener( new ClickListener() {
+                    public void onClick(Widget w) {
+                        showBindFieldPopup(w, con);
+                    }
+                });
+                ab.add( bind );
+            }
+        } else {
+            ab.add( new Label("[" + con.fieldBinding + "]") );
+        }
+
+        ab.add(new Label( con.fieldName ));
+        return ab;
     }
 
+    /**
+     * Display a little editor for field bindings.
+     */
+    private void showBindFieldPopup(final Widget w, final Constraint con) {
+        final FormStylePopup popup = new FormStylePopup( "images/newex_wiz.gif",
+                                                         "Bind the field called [" + con.fieldName + "] to a variable." );
+        final AbsolutePanel vn = new AbsolutePanel();
+        final TextBox varName = new TextBox();
+        final Button ok = new Button("Set");
+        vn.add( varName );
+        vn.add( ok );
+        
+        ok.addClickListener( new ClickListener() {
+            public void onClick(Widget w) {
+                String var = varName.getText();
+                if (modeller.isVariableNameUsed( var )) {
+                    Window.alert( "The variable name [" + var + "] is already taken.");
+                    return;
+                }
+                con.fieldBinding = var;
+                modeller.refreshWidget();
+                popup.hide();
+            }
+        } );
+        popup.addAttribute( "Variable name", vn );
+        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	2007-04-18 02:02:44 UTC (rev 11079)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/RuleModeller.java	2007-04-18 02:03:13 UTC (rev 11080)
@@ -560,6 +560,14 @@
     public RuleModel getModel() {
         return model;
     }
+
+    /**
+     * Returns true is a var name has already been used
+     * either by the rule, or as a global.
+     */
+    public boolean isVariableNameUsed(String name) {
+        return model.isVariableNameUsed( name ) || completions.isGlobalVariable( name );
+    }
     
     
 }

Modified: labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/builder/ContentPackageAssemblerTest.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/builder/ContentPackageAssemblerTest.java	2007-04-18 02:02:44 UTC (rev 11079)
+++ labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/builder/ContentPackageAssemblerTest.java	2007-04-18 02:03:13 UTC (rev 11080)
@@ -4,6 +4,7 @@
 
 import org.drools.brms.client.common.AssetFormats;
 import org.drools.brms.client.ruleeditor.CheckinPopup;
+import org.drools.brms.server.util.TestEnvironmentSessionHelper;
 import org.drools.repository.AssetItem;
 import org.drools.repository.PackageItem;
 import org.drools.repository.RepositorySessionUtil;
@@ -15,9 +16,11 @@
 public class ContentPackageAssemblerTest extends TestCase {
 
     
+    
+    
     public void testPackageConfig() throws Exception {
         //test the config, no rule assets yet
-        RulesRepository repo = RepositorySessionUtil.getRepository();
+        RulesRepository repo = getRepo();
         PackageItem pkg = repo.createPackage( "testBuilderPackageConfig", "x" );
         pkg.updateHeader( "import java.util.List" );
         AssetItem func = pkg.addAsset( "func1", "a function" );
@@ -64,6 +67,10 @@
             
         
     }
+
+    private RulesRepository getRepo() throws Exception {
+        return new RulesRepository( TestEnvironmentSessionHelper.getSession() );
+    }
     
     public void FIXME_testSimplePackage() throws Exception {
         PackageItem pkg = null;




More information about the jboss-svn-commits mailing list