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

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu Nov 30 11:21:48 EST 2006


Author: michael.neale at jboss.com
Date: 2006-11-30 11:21:35 -0500 (Thu, 30 Nov 2006)
New Revision: 7986

Added:
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/model/CompositeFactPattern.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/public/images/connective_constraint_add.gif
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/images/new_fact.gif
Removed:
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/model/Exist.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/model/Not.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/model/Or.java
Modified:
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/Packages.java
   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/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:
improvements to the model driven editor

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/Packages.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/Packages.java	2006-11-30 15:53:29 UTC (rev 7985)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/Packages.java	2006-11-30 16:21:35 UTC (rev 7986)
@@ -1,11 +1,13 @@
 package org.drools.brms.client;
 
 import org.drools.brms.client.modeldriven.SuggestionCompletionEngine;
+import org.drools.brms.client.modeldriven.model.CompositeFactPattern;
 import org.drools.brms.client.modeldriven.model.ConnectiveConstraint;
 import org.drools.brms.client.modeldriven.model.Constraint;
 import org.drools.brms.client.modeldriven.model.FactPattern;
 import org.drools.brms.client.modeldriven.model.IPattern;
 import org.drools.brms.client.modeldriven.model.RuleModel;
+import org.drools.brms.client.modeldriven.ui.CompositeFactPatternWidget;
 import org.drools.brms.client.modeldriven.ui.RuleModeller;
 
 import com.google.gwt.user.client.ui.Image;
@@ -65,13 +67,16 @@
     private RuleModel getDummyData() {
         RuleModel model = new RuleModel();
         
-        model.lhs = new IPattern[2];
+        model.lhs = new IPattern[3];
         
         FactPattern p1 = new FactPattern();
         FactPattern p2 = new FactPattern();
+        CompositeFactPattern p3 = new CompositeFactPattern();
         
+        
         model.lhs[0] = p1;
         model.lhs[1] = p2;
+        model.lhs[2] = p3;
         
         p1.factType = "Person";
         p1.constraints = new Constraint[2];
@@ -97,7 +102,15 @@
         p2.constraints[0].fieldName = "type";
         p2.constraints[0].operator = "!=";
         
+        p3.type = "Not";
+        p3.patterns = new FactPattern[1];
+        FactPattern i1 = new FactPattern("Vehicle");
+        i1.constraints = new Constraint[1];
+        i1.constraints[0] = new Constraint();
+        i1.constraints[0].fieldName = "type";
+        i1.constraints[0].operator = "==";
         
+        p3.patterns[0] = i1;
         
         return model;
         

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-11-30 15:53:29 UTC (rev 7985)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/model/ActionSetField.java	2006-11-30 16:21:35 UTC (rev 7986)
@@ -1,5 +1,10 @@
 package org.drools.brms.client.modeldriven.model;
 
+/**
+ * For setting a field on a bound LHS variable or a global.
+ * @author Michael Neale
+ *
+ */
 public class ActionSetField implements IAction {
 
     public String variable;

Added: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/model/CompositeFactPattern.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/model/CompositeFactPattern.java	2006-11-30 15:53:29 UTC (rev 7985)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/model/CompositeFactPattern.java	2006-11-30 16:21:35 UTC (rev 7986)
@@ -0,0 +1,18 @@
+package org.drools.brms.client.modeldriven.model;
+
+
+/**
+ * Represents first order logic like Or, Not, Exists.
+ * 
+ * @author Michael Neale
+ */
+public class CompositeFactPattern implements IPattern {
+
+    /**
+     * this will one of: [Not, Exist, Or]
+     */
+    public String type;
+    public FactPattern[] patterns;
+    
+    
+}

Deleted: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/model/Exist.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/model/Exist.java	2006-11-30 15:53:29 UTC (rev 7985)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/model/Exist.java	2006-11-30 16:21:35 UTC (rev 7986)
@@ -1,9 +0,0 @@
-package org.drools.brms.client.modeldriven.model;
-
-public class Exist
-    implements
-    IPattern {
-
-    FactPattern[] factPattern;
-    
-}

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-11-30 15:53:29 UTC (rev 7985)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/model/FactPattern.java	2006-11-30 16:21:35 UTC (rev 7986)
@@ -2,6 +2,15 @@
 
 public class FactPattern implements IPattern {
 
+    public FactPattern() {
+        this.constraints = new Constraint[0];
+    }
+    
+    public FactPattern(String factType) {
+        this.factType = factType;
+        this.constraints = new Constraint[0];
+    }
+    
     public Constraint[] constraints;
     public String factType;
     public String boundName;

Deleted: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/model/Not.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/model/Not.java	2006-11-30 15:53:29 UTC (rev 7985)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/model/Not.java	2006-11-30 16:21:35 UTC (rev 7986)
@@ -1,9 +0,0 @@
-package org.drools.brms.client.modeldriven.model;
-
-public class Not
-    implements
-    IPattern {
-
-    FactPattern[] factPatterns;
-    
-}

Deleted: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/model/Or.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/model/Or.java	2006-11-30 15:53:29 UTC (rev 7985)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/model/Or.java	2006-11-30 16:21:35 UTC (rev 7986)
@@ -1,7 +0,0 @@
-package org.drools.brms.client.modeldriven.model;
-
-public class Or implements IPattern {
-    
-    FactPattern[] factPatterns;
-    
-}

Added: 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-11-30 15:53:29 UTC (rev 7985)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/CompositeFactPatternWidget.java	2006-11-30 16:21:35 UTC (rev 7986)
@@ -0,0 +1,46 @@
+package org.drools.brms.client.modeldriven.ui;
+
+import org.drools.brms.client.modeldriven.SuggestionCompletionEngine;
+import org.drools.brms.client.modeldriven.model.CompositeFactPattern;
+import org.drools.brms.client.modeldriven.model.FactPattern;
+
+import com.google.gwt.user.client.ui.Composite;
+import com.google.gwt.user.client.ui.Grid;
+import com.google.gwt.user.client.ui.Label;
+import com.google.gwt.user.client.ui.VerticalPanel;
+
+public class CompositeFactPatternWidget extends Composite {
+
+    private final SuggestionCompletionEngine completions;
+    private CompositeFactPattern pattern;
+    private Grid layout;
+
+    public CompositeFactPatternWidget(CompositeFactPattern pattern,
+                                      SuggestionCompletionEngine completions) {
+        this.completions = completions;
+        this.pattern = pattern;
+        
+        this.layout = new Grid(1, 2);
+        this.layout.setStyleName( "model-builderInner-Background" );
+        
+        doLayout( );
+        
+        
+        initWidget( layout );        
+     }
+
+    private void doLayout() {
+        VerticalPanel vert = new VerticalPanel();
+        
+        FactPattern[] facts = pattern.patterns;
+        for ( int i = 0; i < facts.length; i++ ) {
+            vert.add( new FactPatternWidget(facts[i], this.completions) );
+        }
+        
+        this.layout.setWidget( 0, 0, new Label(pattern.type) );
+        this.layout.setWidget( 0, 1, vert );
+    }
+
+    
+    
+}

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-11-30 15:53:29 UTC (rev 7985)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/FactPatternWidget.java	2006-11-30 16:21:35 UTC (rev 7986)
@@ -51,10 +51,9 @@
             inner.setWidget( row, 3, connectives(c) );
 
         }
-        layout.setStyleName( "model-builder-Background" );
+        layout.setStyleName( "model-builderInner-Background" );
         initWidget( layout );
         
-        
     }
 
 

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-11-30 15:53:29 UTC (rev 7985)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/RuleModeller.java	2006-11-30 16:21:35 UTC (rev 7986)
@@ -1,15 +1,19 @@
 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.CompositeFactPattern;
 import org.drools.brms.client.modeldriven.model.FactPattern;
 import org.drools.brms.client.modeldriven.model.IPattern;
 import org.drools.brms.client.modeldriven.model.RuleModel;
 
+import com.google.gwt.user.client.ui.Button;
 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.Image;
 import com.google.gwt.user.client.ui.Label;
+import com.google.gwt.user.client.ui.ListBox;
 import com.google.gwt.user.client.ui.VerticalPanel;
 import com.google.gwt.user.client.ui.Widget;
 
@@ -20,7 +24,7 @@
  *
  */
 public class RuleModeller extends Composite {
-
+ 
     private FlexTable layout;
     private SuggestionCompletionEngine completions;
     private RuleModel model;
@@ -30,14 +34,24 @@
         this.completions = com;
         
         layout = new FlexTable();
+        
+        doLayout();
+        
         layout.setStyleName( "model-builder-Background" );
-        
         initWidget( layout );
         
+    }
+
+    private void doLayout() {
+        layout.clear();
+        
+        
+        
+        
         Image addPattern = new Image( "images/new_item.gif" );
         addPattern.addClickListener( new ClickListener() {
             public void onClick(Widget w) {
-                showFactTypeSelector();               
+                showFactTypeSelector(w);               
             }            
         });
         
@@ -49,14 +63,51 @@
         layout.setWidget( 1, 1, renderLhs(this.model) );
         layout.setWidget( 2, 0, new Label("THEN") );
         layout.setWidget( 3, 1, new Label("<Rhs here>") );
+    }
+
+    /**
+     * Pops up the fact selector.
+     */
+    protected void showFactTypeSelector(final Widget w) {
+        final ListBox box = new ListBox();
+        String[] facts = completions.getFactTypes();
+        for ( int i = 0; i < facts.length; i++ ) {
+            box.addItem( facts[i] );
+        }
+        final FormStylePopup popup = new FormStylePopup("images/new_fact.gif", "New fact pattern...");
+        popup.addAttribute( "choose type", box );
+        Button ok = new Button("OK");
+        popup.addAttribute( "", ok );
         
+        ok.addClickListener( new ClickListener() {
+            public void onClick(Widget w) {
+                addNewFact(box.getItemText( box.getSelectedIndex() ));
+                popup.hide();
+                
+            }
+        });
+        popup.setStyleName( "ks-popups-Popup" );
         
-        
+        popup.setPopupPosition( w.getAbsoluteLeft() - 400, w.getAbsoluteTop() );
+        popup.show();
     }
 
-    protected void showFactTypeSelector() {
-        // TODO Auto-generated method stub
+    /**
+     * Adds a fact to the model, and then refreshes the display.
+     */
+    protected void addNewFact(String itemText) {
+        IPattern[] list = this.model.lhs;
+        IPattern[] newList = new IPattern[list.length + 1];
         
+        
+        for ( int i = 0; i < list.length; i++ ) {
+            newList[i] =  list[i];
+        }
+        newList[list.length] = new FactPattern(itemText); 
+        
+        this.model.lhs = newList;
+        
+        doLayout();
     }
 
     private Widget renderLhs(RuleModel model) {
@@ -65,6 +116,10 @@
             IPattern pattern = model.lhs[i];
             if (pattern instanceof FactPattern) {                
                 vert.add( new FactPatternWidget(pattern, completions) );
+            } else if (pattern instanceof CompositeFactPattern) {
+                vert.add( new CompositeFactPatternWidget((CompositeFactPattern) pattern, completions) );
+            } else {
+                throw new RuntimeException("I don't know what type of pattern that is.");
             }
             //TODO: add stuff for removing pattern here.
             

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-11-30 15:53:29 UTC (rev 7985)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/JBRMS.css	2006-11-30 16:21:35 UTC (rev 7986)
@@ -118,6 +118,11 @@
   border: 1px solid #87B3FF;
 }
 
+.model-builderInner-Background {
+  background-color: #FDFCDC;
+  border: 1px solid #87B3FF;
+}
+
 .gwt-TabBar {
   background-color: #B8B8B8;
   font-size: smaller;

Added: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/images/connective_constraint_add.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/images/connective_constraint_add.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/images/new_fact.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/images/new_fact.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream




More information about the jboss-svn-commits mailing list