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

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu Dec 21 17:28:48 EST 2006


Author: michael.neale at jboss.com
Date: 2006-12-21 17:28:42 -0500 (Thu, 21 Dec 2006)
New Revision: 8531

Modified:
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/FormStyleLayout.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/FormStylePopup.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/RuleAttributeWidget.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/RuleModeller.java
Log:
added rule attribute editor.

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/FormStyleLayout.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/FormStyleLayout.java	2006-12-21 22:27:29 UTC (rev 8530)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/FormStyleLayout.java	2006-12-21 22:28:42 UTC (rev 8531)
@@ -21,15 +21,24 @@
     private FlexCellFormatter formatter = layout.getFlexCellFormatter();
     private int numInLayout = 0;
 
+    /**
+     * Create a new layout with a header and and icon.
+     */
     public FormStyleLayout(String image, String title) {
         addHeader( image, title );
         initWidget( layout );
     }
     
+    
+    /** This has no header */
+    public FormStyleLayout() {
+        initWidget( layout );
+    }
+    
     /**
      * Add a widget to the "form".
      */
-    protected void addAttribute(String lbl,
+    public void addAttribute(String lbl,
                      Widget editor) {
         Label label = new Label(lbl);
         layout.setWidget( numInLayout, 0, label );

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/FormStylePopup.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/FormStylePopup.java	2006-12-21 22:27:29 UTC (rev 8530)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/FormStylePopup.java	2006-12-21 22:28:42 UTC (rev 8531)
@@ -1,10 +1,8 @@
 package org.drools.brms.client.common;
 
-import com.google.gwt.user.client.ui.Button;
 import com.google.gwt.user.client.ui.ClickListener;
 import com.google.gwt.user.client.ui.Image;
 import com.google.gwt.user.client.ui.PopupPanel;
-import com.google.gwt.user.client.ui.VerticalPanel;
 import com.google.gwt.user.client.ui.Widget;
 
 /**

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/RuleAttributeWidget.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/RuleAttributeWidget.java	2006-12-21 22:27:29 UTC (rev 8530)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/RuleAttributeWidget.java	2006-12-21 22:28:42 UTC (rev 8531)
@@ -1,7 +1,78 @@
 package org.drools.brms.client.modeldriven.ui;
 
+import org.drools.brms.client.common.FormStyleLayout;
+import org.drools.brms.client.common.YesNoDialog;
+import org.drools.brms.client.modeldriven.model.RuleAttribute;
+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.HorizontalPanel;
+import com.google.gwt.user.client.ui.Image;
+import com.google.gwt.user.client.ui.TextBox;
+import com.google.gwt.user.client.ui.Widget;
 
+/**
+ * Displays a list of rule options (attributes).
+ * 
+ * @author Michael Neale
+ */
 public class RuleAttributeWidget extends Composite {
 
+    private FormStyleLayout layout;
+    private RuleModel model;
+    private RuleModeller parent;
+
+    public RuleAttributeWidget(RuleModeller parent, RuleModel model) {
+        this.parent = parent;
+        this.model = model;
+        layout = new FormStyleLayout();
+        RuleAttribute[] attrs = model.attributes;
+        for ( int i = 0; i < attrs.length; i++ ) {
+            RuleAttribute at = attrs[i];
+            layout.addAttribute( at.attributeName, getEditorWidget(at, i));
+        }
+        
+        initWidget( layout );
+    }
+
+    private Widget getEditorWidget(final RuleAttribute at, final int idx) {
+        if (at.attributeName.equals( "no-loop" )) {
+            return getRemoveIcon( idx );
+        }
+        
+        final TextBox box = new TextBox();
+        box.setVisibleLength( (at.value.length() < 3) ? 3 : at.value.length() );
+        box.setText( at.value );
+        box.addChangeListener( new ChangeListener() {
+            public void onChange(Widget w) {
+                at.value = box.getText();
+            }
+        });
+        HorizontalPanel horiz = new HorizontalPanel();
+        horiz.add( box );
+        horiz.add( getRemoveIcon( idx ) );
+        
+        return horiz;
+    }
+
+    private Image getRemoveIcon(final int idx) {
+        Image remove = new Image( "images/delete_item_small.gif" );
+        remove.addClickListener( new ClickListener() {
+            public void onClick(Widget w) {
+                YesNoDialog diag = new YesNoDialog("Remove this rule option?", new Command() {
+                    public void execute() {
+                        model.removeAttribute( idx);
+                        parent.refreshWidget();                            
+                    }
+                });
+                diag.setPopupPosition( w.getAbsoluteLeft(), w.getAbsoluteTop() );
+                diag.show();
+            }
+        } );
+        return remove;
+    }
+    
 }

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-21 22:27:29 UTC (rev 8530)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/RuleModeller.java	2006-12-21 22:28:42 UTC (rev 8531)
@@ -15,6 +15,7 @@
 import org.drools.brms.client.modeldriven.model.FactPattern;
 import org.drools.brms.client.modeldriven.model.IAction;
 import org.drools.brms.client.modeldriven.model.IPattern;
+import org.drools.brms.client.modeldriven.model.RuleAttribute;
 import org.drools.brms.client.modeldriven.model.RuleModel;
 
 import com.google.gwt.user.client.Command;
@@ -86,9 +87,55 @@
         layout.setWidget( 2, 2, addAction );
         
         layout.setWidget( 3, 1, renderRhs(this.model) );
+        
+        layout.setWidget( 4, 0, new Label("(options)") );
+        layout.setWidget( 4, 2, getAddAttribute() );
+        layout.setWidget( 5, 1, new RuleAttributeWidget(this, this.model) );
+        
     }
 
 
+    private Widget getAddAttribute() {
+        Image add = new Image("images/new_item.gif");
+        add.setTitle( "Add an option to the rule, to modify its behavior when evaluated or executed." );
+        
+        add.addClickListener( new ClickListener() {
+            public void onClick(Widget w) {
+                showAttributeSelector(w);
+            }            
+        });
+        return add;
+    }
+
+    protected void showAttributeSelector(Widget w) {
+        final FormStylePopup pop = new FormStylePopup("images/config.png", "Add an option to the rule");
+        final ListBox list = new ListBox();
+        list.addItem( "Choose..." );
+        
+        list.addItem( "salience" );
+        list.addItem( "no-loop" );
+        list.addItem( "agenda-group" );
+        list.addItem( "activation-group" );
+        list.addItem( "duration" );
+        list.addItem( "auto-focus" );        
+        
+        list.setSelectedIndex( 0 );
+        
+        list.addChangeListener( new ChangeListener() {
+            public void onChange(Widget w) {
+              model.addAttribute( new RuleAttribute(list.getItemText( list.getSelectedIndex() ), "") );
+              refreshWidget();
+              pop.hide();
+            }            
+        });
+
+        pop.setStyleName( "ks-popups-Popup" );
+        
+        pop.addAttribute( "Attribute", list );
+        pop.setPopupPosition( w.getAbsoluteLeft() - 400, w.getAbsoluteTop() );
+        pop.show();
+    }
+
     /**
      * Do all the widgets for the RHS.
      */




More information about the jboss-svn-commits mailing list