[jboss-svn-commits] JBL Code SVN: r10753 - 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
Wed Apr 4 08:22:52 EDT 2007


Author: michael.neale at jboss.com
Date: 2007-04-04 08:22:52 -0400 (Wed, 04 Apr 2007)
New Revision: 10753

Added:
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/InfoPopup.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/Lbl.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/ConstraintValueEditor.java
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/RuleModeller.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/JBRMS.css
Log:
JBRULES-755 ROM enhancements for connectives

Added: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/InfoPopup.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/InfoPopup.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/InfoPopup.java	2007-04-04 12:22:52 UTC (rev 10753)
@@ -0,0 +1,29 @@
+package org.drools.brms.client.common;
+
+import com.google.gwt.user.client.ui.ClickListener;
+import com.google.gwt.user.client.ui.Composite;
+import com.google.gwt.user.client.ui.Image;
+import com.google.gwt.user.client.ui.Widget;
+
+
+/**
+ * This is handy for in-place context help.
+ * 
+ * @author Michael Neale
+ */
+public class InfoPopup extends Composite {
+
+    public InfoPopup(final String title, final String message) {
+        Image info = new Image("images/information.gif");
+        info.setTitle( message );
+        info.addClickListener( new ClickListener() {
+            public void onClick(Widget w) {
+                final FormStylePopup pop = new FormStylePopup("images/information.gif", title);
+                pop.addRow( new Lbl(message, "small-Text") );
+                pop.setPopupPosition( w.getAbsoluteLeft(), w.getAbsoluteTop() );
+                pop.show();
+            }
+        } );
+        initWidget( info );
+    }
+}


Property changes on: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/InfoPopup.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/Lbl.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/Lbl.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/Lbl.java	2007-04-04 12:22:52 UTC (rev 10753)
@@ -0,0 +1,16 @@
+package org.drools.brms.client.common;
+
+import com.google.gwt.user.client.ui.Label;
+
+/**
+ * Little helper class to decorate vanilla labels with style.
+ * 
+ * @author Michael Neale
+ */
+public class Lbl extends Label {
+    
+    public Lbl(String label, String style) {
+        super(label);
+        super.setStyleName( style );
+    }
+}


Property changes on: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/Lbl.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/ConstraintValueEditor.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/ConstraintValueEditor.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/ConstraintValueEditor.java	2007-04-04 12:22:52 UTC (rev 10753)
@@ -0,0 +1,214 @@
+package org.drools.brms.client.modeldriven.ui;
+
+import java.util.Iterator;
+import java.util.List;
+
+import org.drools.brms.client.common.FieldEditListener;
+import org.drools.brms.client.common.FormStylePopup;
+import org.drools.brms.client.common.InfoPopup;
+import org.drools.brms.client.common.Lbl;
+import org.drools.brms.client.modeldriven.brxml.Constraint;
+import org.drools.brms.client.modeldriven.brxml.RuleModel;
+
+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;
+import com.google.gwt.user.client.ui.Composite;
+import com.google.gwt.user.client.ui.HTML;
+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.Panel;
+import com.google.gwt.user.client.ui.SimplePanel;
+import com.google.gwt.user.client.ui.TextBox;
+import com.google.gwt.user.client.ui.Widget;
+
+/**
+ * This is an editor for constraint values.
+ * How this behaves depends on the constraint value type.
+ * When the constraint value has no type, it will allow the user to choose the first time.
+ * 
+ * @author Michael Neale
+ */
+public class ConstraintValueEditor extends Composite {
+
+    private Constraint constraint;
+    private Panel      panel;
+    private RuleModel model;
+
+    /**
+     * @param con The constraint being edited.
+     */
+    public ConstraintValueEditor(Constraint con, RuleModel model) {
+        this.constraint = con;
+        this.model = model;
+        panel = new SimplePanel();
+        refreshEditor();
+        initWidget( panel );
+    }
+
+    private void refreshEditor() {
+        panel.clear();
+
+        if ( constraint.type == Constraint.TYPE_UNDEFINED ) {
+            Image clickme = new Image( "images/edit.gif" );
+            clickme.addClickListener( new ClickListener() {
+                public void onClick(Widget w) {
+                    showTypeChoice( w, constraint );
+                }
+            } );
+            panel.add( clickme );
+        } else {
+            switch ( constraint.type ) {
+                case Constraint.TYPE_LITERAL :
+                    panel.add( literalEditor() );
+                    break;
+                case Constraint.TYPE_RET_VALUE :
+                    panel.add( returnValueEditor() );
+                    break;
+                case Constraint.TYPE_VARIABLE :
+                    panel.add( variableEditor() );
+                    break;
+                default :
+                    break;
+            }
+        }
+    }
+
+    private Widget variableEditor() {
+        List vars = this.model.getBoundVariablesInScope( this.constraint );
+        
+        final ListBox box = new ListBox();
+        
+        if (this.constraint.value == null) {
+            box.addItem( "Choose ..." );
+        }
+        for ( int i = 0; i < vars.size(); i++ ) {
+            String var = (String) vars.get( i );
+            if (this.constraint.value != null && this.constraint.value.equals( var )) {
+                box.setSelectedIndex( i );
+            }
+            box.addItem( var );
+        }
+        
+        box.addChangeListener( new ChangeListener() {
+            public void onChange(Widget w) {
+                constraint.value = box.getItemText( box.getSelectedIndex() );
+            }
+        });
+        
+        return box;
+    }
+
+    /**
+     * An editor for the retval "formula" (expression).
+     */
+    private Widget returnValueEditor() {
+        TextBox box = boundTextBox(constraint);
+        String msg = "This is a formula expression which will evaluate to a value.";
+        Image img = new Image("images/function_assets.gif");
+        img.setTitle( msg );
+        box.setTitle( msg );
+        Widget ed = widgets( img, box);
+        return ed;
+    }
+
+    /**
+     * An editor for literal values.
+     */
+    private TextBox literalEditor() {
+        TextBox box = boundTextBox(constraint);
+        box.setTitle( "This is a literal value. What is shown is what the field is checked against." );
+        return box;
+    }
+
+    private TextBox boundTextBox(final Constraint c) {
+        final TextBox box = new TextBox();
+        box.setStyleName( "constraint-value-Editor" );
+        box.setText( c.value );
+        if ( c.value == null || c.value.length() < 5 ) {
+            box.setVisibleLength( 3 );
+        } else {
+            box.setVisibleLength( c.value.length() - 1 );
+        }
+
+        box.addChangeListener( new ChangeListener() {
+            public void onChange(Widget w) {
+                c.value = box.getText();
+            }
+
+        } );
+
+        box.addKeyboardListener( new FieldEditListener( new Command() {
+            public void execute() {
+                box.setVisibleLength( box.getText().length() );
+            }
+        } ) );
+
+        return box;
+    }
+
+    /**
+     * Show a list of possibilities for the value type. 
+     */
+    private void showTypeChoice(Widget w, final Constraint con) {
+        final FormStylePopup form = new FormStylePopup( "images/newex_wiz.gif",
+                                                        "Field value" );
+
+        Button lit = new Button( "Literal value" );
+        lit.addClickListener( new ClickListener() {
+            public void onClick(Widget w) {
+                con.type = Constraint.TYPE_LITERAL;
+                doTypeChosen( form );
+            }
+
+        } );
+        form.addAttribute( "Literal value:", widgets( lit, new InfoPopup( "Literal",
+                                                                          "A literal value means the " + "constraint is directly against the value that you type (ie. what you see on screen)." ) ) );
+        
+        
+        
+
+        form.addRow( new HTML( "<hr/>" ) );
+        form.addRow( new Lbl( "Advanced options",
+                              "weak-Text" ) );
+        Button variable = new Button("Bound variable");
+        variable.addClickListener( new ClickListener() {
+            public void onClick(Widget w) {
+                con.type = Constraint.TYPE_VARIABLE;
+                doTypeChosen( form );
+            }
+        });
+        form.addAttribute( "A variable:", widgets( variable, new InfoPopup("A bound variable", "Will apply a constraint that compares a field to a bound variable.")) );
+        
+        Button formula = new Button( "New formula" );
+        formula.addClickListener( new ClickListener() {
+            public void onClick(Widget w) {
+                con.type = Constraint.TYPE_RET_VALUE;
+                doTypeChosen( form );
+            }
+        } );
+
+        form.addAttribute( "A formula:", widgets( formula, new InfoPopup( "A formula",
+                                                                          "A formula is an expression that calculates and returns a value " + ". That value is used to enforce the constraint." ) ) );
+
+        form.setPopupPosition( w.getAbsoluteLeft(), w.getAbsoluteTop() );
+        form.show();
+    }
+
+    private void doTypeChosen(final FormStylePopup form) {
+        refreshEditor();
+        form.hide();
+    }
+
+    private Panel widgets(Widget left, Widget right) {
+        HorizontalPanel panel = new HorizontalPanel();
+        panel.add( left );
+        panel.add( right );
+        panel.setWidth("100%");
+        return panel;
+    }
+
+}


Property changes on: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/ConstraintValueEditor.java
___________________________________________________________________
Name: svn:eol-style
   + native

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-04 12:22:16 UTC (rev 10752)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/FactPatternWidget.java	2007-04-04 12:22:52 UTC (rev 10753)
@@ -2,6 +2,8 @@
 
 import org.drools.brms.client.common.FieldEditListener;
 import org.drools.brms.client.common.FormStylePopup;
+import org.drools.brms.client.common.ImageButton;
+import org.drools.brms.client.common.Lbl;
 import org.drools.brms.client.common.YesNoDialog;
 import org.drools.brms.client.modeldriven.HumanReadable;
 import org.drools.brms.client.modeldriven.SuggestionCompletionEngine;
@@ -16,6 +18,7 @@
 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.HTML;
 import com.google.gwt.user.client.ui.HasHorizontalAlignment;
 import com.google.gwt.user.client.ui.HasVerticalAlignment;
 import com.google.gwt.user.client.ui.HorizontalPanel;
@@ -33,112 +36,132 @@
  */
 public class FactPatternWidget extends Composite {
 
-    private FactPattern pattern;
-    private FlexTable layout = new FlexTable();
+    private FactPattern                pattern;
+    private FlexTable                  layout = new FlexTable();
     private SuggestionCompletionEngine completions;
-    private RuleModeller modeller;
-    private boolean bindable;
-    
-    
+    private RuleModeller               modeller;
+    private boolean                    bindable;
+
     public FactPatternWidget(RuleModeller mod, IPattern p, SuggestionCompletionEngine com, boolean canBind) {
         this.pattern = (FactPattern) p;
         this.completions = com;
         this.modeller = mod;
         this.bindable = canBind;
+
         layout.setWidget( 0, 0, getPatternLabel() );
         FlexCellFormatter formatter = layout.getFlexCellFormatter();
         formatter.setAlignment( 0, 0, HasHorizontalAlignment.ALIGN_CENTER, HasVerticalAlignment.ALIGN_MIDDLE );
         formatter.setStyleName( 0, 0, "modeller-fact-TypeHeader" );
-        
+
         final FlexTable inner = new FlexTable();
-        
+
         layout.setWidget( 1, 0, inner );
-        
+
         for ( int row = 0; row < pattern.constraints.length; row++ ) {
             final Constraint c = pattern.constraints[row];
             final int currentRow = row;
 
-            inner.setWidget( row, 0, fieldLabel(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/delete_item_small.gif");
-            clear.setTitle( "Remove this field constraint" );
-            
+            if ( c.type != Constraint.TYPE_PREDICATE ) {
+                inner.setWidget( row, 0, fieldLabel( c ) );
+
+                inner.setWidget( row, 1, operatorDropDown( c ) );
+                inner.setWidget( row, 2, valueEditor( c ) );
+                inner.setWidget( row, 3, connectives( c ) );
+
+                Image addConnective = new ImageButton( "images/add_connective.gif" );
+                addConnective.setTitle( "Add more options to this fields values." );
+                addConnective.addClickListener( new ClickListener() {
+                    public void onClick(Widget w) {
+                        c.addNewConnective();
+                        modeller.refreshWidget();
+                    }
+                } );
+
+                inner.setWidget( row, 4, addConnective );
+            } else if (c.type == Constraint.TYPE_PREDICATE) {
+                inner.setWidget( row, 0, predicateEditor(c) );
+                inner.getFlexCellFormatter().setColSpan( row, 0, 5 );
+            }
+
+            Image clear = new ImageButton( "images/delete_item_small.gif" );
+            clear.setTitle( "Remove this restriction" );
             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());
+                    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();
                 }
             } );
 
-            Image addConnective = new Image("images/add_connective.gif");
-            addConnective.setTitle( "Add more options to this fields values." );            
-            addConnective.addClickListener( new ClickListener() {
-                public void onClick(Widget w) {
-                    c.addNewConnective();
-                    modeller.refreshWidget();
-                }                
-            });
-
-            inner.setWidget( row, 4, addConnective );
             inner.setWidget( row, 5, clear );
 
         }
-        if (bindable) {
-            //layout.setStyleName( "model-builderInner-Background" );
-            layout.setStyleName( "modeller-fact-pattern-Widget" );
-        } else {
-            //layout.setStyleName( "model-builderInnerInner-Background" );
-        }
-        
+        if ( bindable ) layout.setStyleName( "modeller-fact-pattern-Widget" );
         initWidget( layout );
+
+    }
+
+    /**
+     * This provides an inline formula editor, not unlike a spreadsheet does. 
+     */
+    private Widget predicateEditor(final Constraint c) {
         
+        HorizontalPanel pred = new HorizontalPanel();
+        pred.setWidth( "100%" );
+        Image img = new Image("images/function_assets.gif");
+        img.setTitle( "This is a formula expression that is evaluated to be true or false." );
+        
+        pred.add( img );
+        final TextBox box = new TextBox();
+        box.setText( c.value );
+        box.addChangeListener( new ChangeListener() {
+            public void onChange(Widget w) {
+                c.value = box.getText();
+            }
+            
+        });
+        
+        box.setWidth( "100%" );
+        pred.add( box );
+        
+        return pred;
     }
 
-
     /**
      * This returns the pattern label.
      */
     private Widget getPatternLabel() {
         HorizontalPanel horiz = new HorizontalPanel();
-        
-        Image edit = new Image("images/add_field_to_fact.gif");
+
+        Image edit = new ImageButton( "images/add_field_to_fact.gif" );
         edit.setTitle( "Add a field to this condition, or bind a varible to this fact." );
-        
+
         edit.addClickListener( new ClickListener() {
             public void onClick(Widget w) {
-                showPatternPopup(w);
+                showPatternPopup( w );
             }
         } );
-        
-        if (pattern.boundName != null) {
-            horiz.add( new Label(pattern.factType + " [" + pattern.boundName + "]" ));
+
+        if ( pattern.boundName != null ) {
+            horiz.add( new Label( pattern.factType + " [" + pattern.boundName + "]" ) );
         } else {
-            horiz.add( new Label(pattern.factType));
+            horiz.add( new Label( pattern.factType ) );
         }
         horiz.add( edit );
-        
+
         return horiz;
-        
+
     }
 
-
     protected void showPatternPopup(Widget w) {
-        final FormStylePopup popup = new FormStylePopup("images/newex_wiz.gif", "Modify constraints for " + pattern.factType);
+        final FormStylePopup popup = new FormStylePopup( "images/newex_wiz.gif",
+                                                         "Modify constraints for " + pattern.factType );
         popup.setStyleName( "ks-popups-Popup" );
         final ListBox box = new ListBox();
         box.addItem( "..." );
@@ -146,25 +169,39 @@
         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() )) );
+                pattern.addConstraint( new Constraint( box.getItemText( box.getSelectedIndex() ) ) );
                 modeller.refreshWidget();
                 popup.hide();
             }
-        });
+        } );
+        popup.addAttribute( "Add a restriction on a field", box );
         
+        popup.addRow( new HTML("<hr/>") );
+
+        popup.addRow( new Lbl("Advanced options", "weak-Text") );
+        final Button predicate = new Button( "New formula" );
+        predicate.addClickListener( new ClickListener() {
+            public void onClick(Widget w) {
+                Constraint con = new Constraint();
+                con.type = Constraint.TYPE_PREDICATE;
+                pattern.addConstraint( con );
+                modeller.refreshWidget();
+                popup.hide();
+            }
+        } );
+        popup.addAttribute( "Add a new formula style expression", predicate );
+
         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,
@@ -172,13 +209,13 @@
      * not be editable.
      */
     private void doBindingEditor(final FormStylePopup popup) {
-        if (bindable && !(modeller.getModel().isBoundFactUsed( pattern.boundName ))) {
+        if ( bindable && !(modeller.getModel().isBoundFactUsed( pattern.boundName )) ) {
             HorizontalPanel varName = new HorizontalPanel();
             final TextBox varTxt = new TextBox();
             varTxt.setText( pattern.boundName );
             varTxt.setVisibleLength( 3 );
             varName.add( varTxt );
-            Button bindVar = new Button("Set");
+            Button bindVar = new Button( "Set" );
             bindVar.addClickListener( new ClickListener() {
                 public void onClick(Widget w) {
                     pattern.boundName = varTxt.getText();
@@ -186,121 +223,93 @@
                     popup.hide();
                 }
             } );
-            
+
             varName.add( bindVar );
-            popup.addAttribute("Variable name", varName);
-            
+            popup.addAttribute( "Variable name", varName );
+
         }
     }
 
-
     private Widget connectives(Constraint c) {
-        if (c.connectives != null && c.connectives.length > 0) {
+        if ( c.connectives != null && c.connectives.length > 0 ) {
             HorizontalPanel horiz = new HorizontalPanel();
             for ( int i = 0; i < c.connectives.length; i++ ) {
                 ConnectiveConstraint con = c.connectives[i];
-                horiz.add( connectiveOperatorDropDown(con, c.fieldName) );
-                horiz.add( connectiveValueEditor(con) );
-            }        
+                horiz.add( connectiveOperatorDropDown( con, c.fieldName ) );
+                horiz.add( connectiveValueEditor( con ) );
+            }
             return horiz;
         } else {
             //nothing to do
             return null;
         }
-        
+
     }
 
+    private Widget connectiveValueEditor(final ConnectiveConstraint con) {
 
-    private Widget connectiveValueEditor(final ConnectiveConstraint con) {
-        
         final TextBox box = new TextBox();
         box.setVisibleLength( 4 );
         box.setText( con.value );
         box.addChangeListener( new ChangeListener() {
             public void onChange(Widget w) {
-                con.value = box.getText();                
-            }            
-        });
+                con.value = box.getText();
+            }
+        } );
         return box;
     }
 
-
     private Widget connectiveOperatorDropDown(final ConnectiveConstraint con, String fieldName) {
         String[] ops = completions.getConnectiveOperatorCompletions( pattern.factType, fieldName );
         final ListBox box = new ListBox();
         box.addItem( "--- please choose ---" );
         for ( int i = 0; i < ops.length; i++ ) {
             String op = ops[i];
-            box.addItem(HumanReadable.getOperatorDisplayName( op ), op );
-            if (op.equals( con.operator )) {
+            box.addItem( HumanReadable.getOperatorDisplayName( op ), op );
+            if ( op.equals( con.operator ) ) {
                 box.setSelectedIndex( i + 1 );
             }
 
         }
-        
+
         box.addChangeListener( new ChangeListener() {
             public void onChange(Widget w) {
-                con.operator = box.getValue( box.getSelectedIndex() );                
-            }            
-        });
-        
+                con.operator = box.getValue( box.getSelectedIndex() );
+            }
+        } );
+
         return box;
     }
 
-
     private Widget valueEditor(final Constraint c) {
-        final TextBox box = new TextBox();
-        box.setText( c.value );
-        if (c.value == null || c.value.length() < 5) {
-            box.setVisibleLength( 3 );
-        } else {
-            box.setVisibleLength( c.value.length() - 1 );
-        }
-        
-        box.addChangeListener( new ChangeListener() {
-            public void onChange(Widget w) {
-                c.value = box.getText();                
-            }
-            
-        });
-        
-        box.addKeyboardListener( new FieldEditListener(new Command() {
-            public void execute() {
-                box.setVisibleLength( box.getText().length() );
-            }            
-        }));
-        
-        return box;
+        return  new ConstraintValueEditor(c, this.modeller.getModel());
     }
 
-
     private Widget operatorDropDown(final Constraint c) {
         String[] ops = completions.getOperatorCompletions( pattern.factType, c.fieldName );
         final ListBox box = new ListBox();
         box.addItem( "--- please choose ---" );
         for ( int i = 0; i < ops.length; i++ ) {
             String op = ops[i];
-            box.addItem( HumanReadable.getOperatorDisplayName( op ) , op );
-            if (op.equals( c.operator )) {
+            box.addItem( HumanReadable.getOperatorDisplayName( op ), op );
+            if ( op.equals( c.operator ) ) {
                 box.setSelectedIndex( i + 1 );
             }
 
         }
-        
+
         box.addChangeListener( new ChangeListener() {
             public void onChange(Widget w) {
                 c.operator = box.getValue( box.getSelectedIndex() );
-                System.out.println("Set operator to :" + c.operator);
-            }            
-        });
-        
-        
+                System.out.println( "Set operator to :" + c.operator );
+            }
+        } );
+
         return box;
     }
 
-
     private Widget fieldLabel(final Constraint con) {//, final Command onChange) {
-        return new Label(con.fieldName);
+        return new Label( con.fieldName );
     }
-    
+
 }

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-04 12:22:16 UTC (rev 10752)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/RuleModeller.java	2007-04-04 12:22:52 UTC (rev 10753)
@@ -5,6 +5,7 @@
 
 import org.drools.brms.client.common.ErrorPopup;
 import org.drools.brms.client.common.FormStylePopup;
+import org.drools.brms.client.common.ImageButton;
 import org.drools.brms.client.common.YesNoDialog;
 import org.drools.brms.client.modeldriven.HumanReadable;
 import org.drools.brms.client.modeldriven.SuggestionCompletionEngine;
@@ -69,7 +70,7 @@
     public void refreshWidget() {
         layout.clear();
         
-        Image addPattern = new Image( "images/new_item.gif" );
+        Image addPattern = new ImageButton( "images/new_item.gif" );
         addPattern.setTitle( "Add a condition to this rule." );
         addPattern.addClickListener( new ClickListener() {
             public void onClick(Widget w) {
@@ -83,7 +84,7 @@
         layout.setWidget( 1, 1, renderLhs(this.model) );
         layout.setWidget( 2, 0, new Label("THEN") );
         
-        Image addAction = new Image("images/new_item.gif");
+        Image addAction = new ImageButton("images/new_item.gif");
         addAction.setTitle( "Add an action to this rule." );
         addAction.addClickListener( new ClickListener() {
             public void onClick(Widget w) {
@@ -102,7 +103,7 @@
 
 
     private Widget getAddAttribute() {
-        Image add = new Image("images/new_item.gif");
+        Image add = new ImageButton("images/new_item.gif");
         add.setTitle( "Add an option to the rule, to modify its behavior when evaluated or executed." );
         
         add.addClickListener( new ClickListener() {
@@ -172,7 +173,7 @@
             
             HorizontalPanel horiz = new HorizontalPanel();
             
-            Image remove = new Image("images/delete_item_small.gif");
+            Image remove = new ImageButton("images/delete_item_small.gif");
             remove.setTitle( "Remove this action." );
             final int idx = i;
             remove.addClickListener( new ClickListener() {
@@ -523,9 +524,7 @@
                               Widget w) {
         HorizontalPanel horiz = new HorizontalPanel();
         
-        
-        
-        Image remove = new Image("images/delete_item_small.gif");
+        Image remove = new ImageButton("images/delete_item_small.gif");
         remove.setTitle( "Remove this ENTIRE condition, and all the field constraints that belong to it." );
         final int idx = i;
         remove.addClickListener( new ClickListener() {

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	2007-04-04 12:22:16 UTC (rev 10752)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/JBRMS.css	2007-04-04 12:22:52 UTC (rev 10753)
@@ -192,7 +192,15 @@
   padding: 0px;
 }
 
+.constraint-value-Editor {
+	padding:2px !important;border-color:#ccc !important; border: 1px solid #aaaa99; color:#666;
+}
 
+.constraint-value-Editor:focus, .constraint-value-Editor:active {
+	border-color:black !important; color: black;
+}
+
+
 .gwt-Tree {
 }
 
@@ -201,6 +209,7 @@
 }
 
 .small-Text {font-size: smaller;}
+.weak-Text {font-size: smaller; color: #ccc;}
 
 
 .gwt-Tree .gwt-TreeItem-selected {
@@ -258,7 +267,6 @@
   width: 100%;
   padding: 0.3em;
   padding-right: 16px;
-  cursor: pointer;
   cursor: hand;
 }
 
@@ -266,20 +274,7 @@
   background-color: #aaaa99;
 }
 
-.ks-images-Image {
-  margin: 8px;
-}
 
-.ks-images-Button {
-  margin: 8px;
-  cursor: pointer;
-  cursor: hand;
-}
-
-.ks-layouts {
-  margin: 8px;
-}
-
 .ks-layouts-Label {
   background-color: #aaaa99;
   font-weight: bold;
@@ -534,6 +529,8 @@
 
 .sinkitem{color:white;}
 
+.image-Button{ cursor:pointer !important; }
+
 body{color:#444;}
 
 .gwt-TreeItem{width:100%; cursor:pointer; display:block !important; padding:0em; margin:0em; line-height:em}




More information about the jboss-svn-commits mailing list