[jboss-svn-commits] JBL Code SVN: r31195 - in labs/jbossrules/branches/guvnor_expressionEditor2_baunax_esteban: drools-compiler/src/main/java/org/drools/guvnor/server/util and 1 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Jan 22 15:14:06 EST 2010


Author: eaa
Date: 2010-01-22 15:14:06 -0500 (Fri, 22 Jan 2010)
New Revision: 31195

Modified:
   labs/jbossrules/branches/guvnor_expressionEditor2_baunax_esteban/drools-compiler/src/main/java/org/drools/guvnor/client/modeldriven/brl/FromCompositeFactPattern.java
   labs/jbossrules/branches/guvnor_expressionEditor2_baunax_esteban/drools-compiler/src/main/java/org/drools/guvnor/server/util/BRDRLPersistence.java
   labs/jbossrules/branches/guvnor_expressionEditor2_baunax_esteban/drools-compiler/src/main/java/org/drools/guvnor/server/util/BRXMLPersistence.java
   labs/jbossrules/branches/guvnor_expressionEditor2_baunax_esteban/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/FactPatternWidget.java
   labs/jbossrules/branches/guvnor_expressionEditor2_baunax_esteban/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/FromCompositeFactPatternWidget.java
   labs/jbossrules/branches/guvnor_expressionEditor2_baunax_esteban/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/RuleModeller.java
Log:
Guided Editor:
	FROM support: pattern & widget refactoring.
	FROM COLLECT support: added basic FROM support.

Modified: labs/jbossrules/branches/guvnor_expressionEditor2_baunax_esteban/drools-compiler/src/main/java/org/drools/guvnor/client/modeldriven/brl/FromCompositeFactPattern.java
===================================================================
--- labs/jbossrules/branches/guvnor_expressionEditor2_baunax_esteban/drools-compiler/src/main/java/org/drools/guvnor/client/modeldriven/brl/FromCompositeFactPattern.java	2010-01-22 17:47:41 UTC (rev 31194)
+++ labs/jbossrules/branches/guvnor_expressionEditor2_baunax_esteban/drools-compiler/src/main/java/org/drools/guvnor/client/modeldriven/brl/FromCompositeFactPattern.java	2010-01-22 20:14:06 UTC (rev 31195)
@@ -1,25 +1,17 @@
-
 package org.drools.guvnor.client.modeldriven.brl;
 
 /**
  *
  * @author esteban.aliverti at gmail.com
  */
-public class FromCompositeFactPattern extends CompositeFactPattern {
+public class FromCompositeFactPattern implements IPattern {
 
-    public static final String COMPOSITE_TYPE_FROM     = "from";
-    public static final String COMPOSITE_TYPE_FROM_ACCUMULATE     = "from accumulate";
-    public static final String COMPOSITE_TYPE_FROM_COLLECT     = "from collect";
-
+    public FactPattern factPattern;
     private ExpressionFormLine expression = new ExpressionFormLine();
 
     public FromCompositeFactPattern() {
     }
 
-    public FromCompositeFactPattern(final String type) {
-        super(type);
-    }
-
     public ExpressionFormLine getExpression() {
         return expression;
     }
@@ -28,16 +20,13 @@
         this.expression = expression;
     }
 
-    public IPattern getInternalPattern(){
-        if (this.patterns == null || this.patterns.length ==0 ){
-            return null;
-        }
-        return this.patterns[0];
-        
+    public FactPattern getFactPattern() {
+        return factPattern;
     }
 
-    
+    public void setFactPattern(FactPattern pattern) {
+        this.factPattern = pattern;
+    }
 
 
-
 }

Modified: labs/jbossrules/branches/guvnor_expressionEditor2_baunax_esteban/drools-compiler/src/main/java/org/drools/guvnor/server/util/BRDRLPersistence.java
===================================================================
--- labs/jbossrules/branches/guvnor_expressionEditor2_baunax_esteban/drools-compiler/src/main/java/org/drools/guvnor/server/util/BRDRLPersistence.java	2010-01-22 17:47:41 UTC (rev 31194)
+++ labs/jbossrules/branches/guvnor_expressionEditor2_baunax_esteban/drools-compiler/src/main/java/org/drools/guvnor/server/util/BRDRLPersistence.java	2010-01-22 20:14:06 UTC (rev 31195)
@@ -190,19 +190,28 @@
 				// adding passthrough markup
 				buf.append(">");
 			}
-			if (FromCompositeFactPattern.COMPOSITE_TYPE_FROM.equals(pattern.type)) {
-				renderSubPattern(pattern, 0);
-                                buf.append(" FROM ( ");
-                                renderExpression(pattern.getExpression());
-                                buf.append(") \n");
+                        if (pattern.getFactPattern() != null){
+                            generateFactPattern(pattern.getFactPattern());
+                        }
+                        buf.append(" FROM ( ");
+                        renderExpression(pattern.getExpression());
+                        buf.append(") \n");
+		}
 
-			} else if (FromCompositeFactPattern.COMPOSITE_TYPE_FROM_ACCUMULATE
-					.equals(pattern.type)) {
-				throw new IllegalArgumentException("FROM ACCUMULATE is not supported yet.");
-			} else if (FromCompositeFactPattern.COMPOSITE_TYPE_FROM_COLLECT
-					.equals(pattern.type)) {
-				throw new IllegalArgumentException("FROM COLLECT is not supported yet.");
+		public void visitFromCollectCompositeFactPattern(FromCollectCompositeFactPattern pattern) {
+			buf.append("\t\t");
+			if (isDSLEnhanced) {
+				// adding passthrough markup
+				buf.append(">");
 			}
+                        if (pattern.getFactPattern() != null){
+                            generateFactPattern(pattern.getFactPattern());
+                        }
+                        buf.append(" FROM COLLECT ( ");
+                        if (pattern.getRightPattern() != null){
+                            generateFactPattern(pattern.getRightPattern());
+                        }
+                        buf.append(") \n");
 		}
 
 		private void renderCompositeFOL(CompositeFactPattern pattern) {

Modified: labs/jbossrules/branches/guvnor_expressionEditor2_baunax_esteban/drools-compiler/src/main/java/org/drools/guvnor/server/util/BRXMLPersistence.java
===================================================================
--- labs/jbossrules/branches/guvnor_expressionEditor2_baunax_esteban/drools-compiler/src/main/java/org/drools/guvnor/server/util/BRXMLPersistence.java	2010-01-22 17:47:41 UTC (rev 31194)
+++ labs/jbossrules/branches/guvnor_expressionEditor2_baunax_esteban/drools-compiler/src/main/java/org/drools/guvnor/server/util/BRXMLPersistence.java	2010-01-22 20:14:06 UTC (rev 31195)
@@ -40,6 +40,10 @@
                        CompositeFactPattern.class );
         this.xt.alias( "fromCompositePattern",
                        FromCompositeFactPattern.class );
+        this.xt.alias( "fromCollectCompositePattern",
+                       FromCollectCompositeFactPattern.class );
+        this.xt.alias( "fromAccumulateCompositePattern",
+                       FromAccumulateCompositeFactPattern.class );
         this.xt.alias( "metadata",
                        RuleMetadata.class );
         this.xt.alias( "attribute",

Modified: labs/jbossrules/branches/guvnor_expressionEditor2_baunax_esteban/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/FactPatternWidget.java
===================================================================
--- labs/jbossrules/branches/guvnor_expressionEditor2_baunax_esteban/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/FactPatternWidget.java	2010-01-22 17:47:41 UTC (rev 31194)
+++ labs/jbossrules/branches/guvnor_expressionEditor2_baunax_esteban/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/FactPatternWidget.java	2010-01-22 20:14:06 UTC (rev 31195)
@@ -59,8 +59,15 @@
     private boolean                    bindable;
     private Constants constants = ((Constants) GWT.create(Constants.class));
 
+    private String customLabel;
+
     public FactPatternWidget(RuleModeller mod, IPattern p,
             boolean canBind) {
+        this(mod, p, null, canBind);
+    }
+
+    public FactPatternWidget(RuleModeller mod, IPattern p,
+            String customLabel, boolean canBind) {
         this.pattern = (FactPattern) p;
         this.completions = mod.getSuggestionCompletions();
         this.modeller = mod;
@@ -77,6 +84,8 @@
         this.popupCreator.setModeller(modeller);
         this.popupCreator.setPattern(pattern);
 
+        this.customLabel = customLabel;
+
         layout.setWidget( 0, 0, getPatternLabel() );
         FlexCellFormatter formatter = layout.getFlexCellFormatter();
         formatter.setAlignment( 0, 0, HasHorizontalAlignment.ALIGN_LEFT, HasVerticalAlignment.ALIGN_BOTTOM );
@@ -324,6 +333,7 @@
         return pred;
     }
 
+
     /**
      * This returns the pattern label.
      */
@@ -336,13 +346,19 @@
 
         String patternName = (pattern.boundName != null) ? pattern.factType  + " <b>[" + pattern.boundName + "]</b>" : pattern.factType;
 
-        if (pattern.constraintList != null && pattern.constraintList.constraints.length > 0) {
-            String desc = Format.format(constants.ThereIsAAn0With(), patternName);
-            return  new ClickableLabel( anA(desc, patternName) , click, !modeller.lockLHS()) ;
-        } else {
-            String desc = Format.format(constants.ThereIsAAn0(), patternName);
-            return new ClickableLabel( anA(desc, patternName) , click, !modeller.lockLHS() );
+        String desc = this.getCustomLabel();
+        if (desc == null){
+            if (pattern.constraintList != null && pattern.constraintList.constraints.length > 0) {
+                desc = Format.format(constants.ThereIsAAn0With(), patternName);
+            } else {
+                desc = Format.format(constants.ThereIsAAn0(), patternName);
+            }
+            desc = anA(desc, patternName);
+        }else{
+            desc = Format.format(desc, patternName);
         }
+
+        return  new ClickableLabel( desc , click, !modeller.lockLHS()) ;
     }
 
     /** Change to an/a depending on context - only for english */
@@ -427,8 +443,17 @@
         return ab;
     }
 
+    public String getCustomLabel() {
+        return customLabel;
+    }
 
+    public void setCustomLabel(String customLabel) {
+        this.customLabel = customLabel;
+    }
 
+
+    
+
     public boolean isDirty() {
         return layout.hasDirty();
     }

Modified: labs/jbossrules/branches/guvnor_expressionEditor2_baunax_esteban/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/FromCompositeFactPatternWidget.java
===================================================================
--- labs/jbossrules/branches/guvnor_expressionEditor2_baunax_esteban/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/FromCompositeFactPatternWidget.java	2010-01-22 17:47:41 UTC (rev 31194)
+++ labs/jbossrules/branches/guvnor_expressionEditor2_baunax_esteban/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/FromCompositeFactPatternWidget.java	2010-01-22 20:14:06 UTC (rev 31195)
@@ -1,85 +1,128 @@
 package org.drools.guvnor.client.modeldriven.ui;
 
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.user.client.ui.ChangeListener;
 import com.google.gwt.user.client.ui.ClickListener;
 import com.google.gwt.user.client.ui.HTML;
-import com.google.gwt.user.client.ui.HorizontalPanel;
-import com.google.gwt.user.client.ui.Label;
-import com.google.gwt.user.client.ui.Panel;
+import com.google.gwt.user.client.ui.ListBox;
 import com.google.gwt.user.client.ui.Widget;
 import org.drools.guvnor.client.common.ClickableLabel;
+import org.drools.guvnor.client.common.DirtyableComposite;
 import org.drools.guvnor.client.common.DirtyableFlexTable;
 import org.drools.guvnor.client.common.DirtyableVerticalPane;
+import org.drools.guvnor.client.common.FormStylePopup;
 import org.drools.guvnor.client.modeldriven.HumanReadable;
+import org.drools.guvnor.client.modeldriven.SuggestionCompletionEngine;
 import org.drools.guvnor.client.modeldriven.brl.FactPattern;
 import org.drools.guvnor.client.modeldriven.brl.FromCompositeFactPattern;
+import org.drools.guvnor.client.messages.Constants;
 
 /**
  *
  * @author esteban
  */
-public class FromCompositeFactPatternWidget extends CompositeFactPatternWidget{
+public class FromCompositeFactPatternWidget extends DirtyableComposite {
 
+    protected final SuggestionCompletionEngine completions;
+    protected FromCompositeFactPattern pattern;
+    protected DirtyableFlexTable layout;
+    protected RuleModeller modeller;
+    protected Constants constants = ((Constants) GWT.create(Constants.class));
+
     public FromCompositeFactPatternWidget(RuleModeller modeller,
-                                      FromCompositeFactPattern pattern) {
-        super(modeller, pattern);
+            FromCompositeFactPattern pattern) {
+        this.completions = modeller.getSuggestionCompletions();
+        this.pattern = pattern;
+        this.modeller = modeller;
+
+        this.layout = new DirtyableFlexTable();
+        this.layout.setStyleName("model-builderInner-Background");
+
+        doLayout();
+        initWidget(layout);
     }
 
-    
-    @Override
     protected void doLayout() {
 
-        int r=0;
+        int r = 0;
 
-        if ( pattern.patterns != null ) {
+        if (pattern.getFactPattern() != null) {
             DirtyableVerticalPane vert = new DirtyableVerticalPane();
-            FactPattern[] facts = pattern.patterns;
-            for ( int i = 0; i < facts.length; i++ ) {
-                vert.add( new FactPatternWidget( modeller,
-                                                 facts[i],
-                                                 false ) );
+            FactPattern fact = pattern.getFactPattern();
+            if (fact != null) {
+                vert.add(new FactPatternWidget(modeller,
+                        fact,
+                        false));
+                this.layout.setWidget(r,
+                        0,
+                        vert);
+                r++;
             }
-            this.layout.setWidget( r,
-                                   0,
-                                   vert );
-
-            r++;
         }
 
-        this.layout.setWidget( r,
-                               0,
-                               getCompositeLabel() );
+        this.layout.setWidget(r,
+                0,
+                getCompositeLabel());
 
-        //this.layout.getFlexCellFormatter().setColSpan(0, 0, 2);
-
-        //this.layout.setWidget(r, 0, new HTML("&nbsp;&nbsp;&nbsp;&nbsp;"));
     }
 
-    @Override
     protected Widget getCompositeLabel() {
 
-        ClickListener click =  new ClickListener() {
+        ClickListener click = new ClickListener() {
+
             public void onClick(Widget w) {
-                showFactTypeSelector( w );
+                showFactTypeSelector(w);
             }
         };
-        String lbl = "<div class='x-form-field'>"+HumanReadable.getCEDisplayName( pattern.type )+"</div>";
+        String lbl = "<div class='x-form-field'>" + HumanReadable.getCEDisplayName("from") + "</div>";
 
-//        lbl += "( "+getFormPattern().getExpression().text+" )";
-
         DirtyableFlexTable panel = new DirtyableFlexTable();
-        panel.setWidget(0, 0, new HTML(lbl));
-        panel.setWidget(0, 1, new ExpressionBuilder(modeller, getFormPattern().getExpression().text));
 
-        if (pattern.patterns == null || pattern.patterns.length ==0) {
-            panel.setWidget(1,0, new ClickableLabel("<br> <font color='red'>" + constants.clickToAddPatterns() + "</font>", click, !this.modeller.lockLHS() ) );
+        int r = 0;
+
+        if (pattern.getFactPattern() == null) {
+            panel.setWidget(r, 0, new ClickableLabel("<br> <font color='red'>" + constants.clickToAddPatterns() + "</font>", click, !this.modeller.lockLHS()));
+            r++;
         }
 
 
+        panel.setWidget(r, 0, new HTML(lbl));
+        panel.setWidget(r, 1, new ExpressionBuilder(modeller, this.pattern.getExpression().text));
 
+
         return panel;
     }
 
-    private FromCompositeFactPattern getFormPattern(){
-        return (FromCompositeFactPattern)this.pattern;
+    /**
+     * Pops up the fact selector.
+     */
+    protected void showFactTypeSelector(final Widget w) {
+        final ListBox box = new ListBox();
+        String[] facts = completions.getFactTypes();
+
+        box.addItem(constants.Choose());
+        for ( int i = 0; i < facts.length; i++ ) {
+            box.addItem( facts[i] );
+        }
+        box.setSelectedIndex( 0 );
+
+        final FormStylePopup popup = new FormStylePopup();
+        popup.setTitle(constants.NewFactPattern());
+        popup.addAttribute(constants.chooseFactType(),
+                            box );
+
+        box.addChangeListener( new ChangeListener() {
+            public void onChange(Widget w) {
+                pattern.setFactPattern( new FactPattern( box.getItemText( box.getSelectedIndex() ) ) );
+                modeller.refreshWidget();
+                popup.hide();
+            }
+        } );
+
+        popup.show();
     }
+
+    public boolean isDirty() {
+        return layout.hasDirty();
+    }
 }

Modified: labs/jbossrules/branches/guvnor_expressionEditor2_baunax_esteban/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/RuleModeller.java
===================================================================
--- labs/jbossrules/branches/guvnor_expressionEditor2_baunax_esteban/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/RuleModeller.java	2010-01-22 17:47:41 UTC (rev 31194)
+++ labs/jbossrules/branches/guvnor_expressionEditor2_baunax_esteban/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/RuleModeller.java	2010-01-22 20:14:06 UTC (rev 31195)
@@ -752,8 +752,17 @@
         refreshWidget();
     }
 
-    protected void addNewFCE(String s) {
-        this.model.addLhsItem( new FromCompositeFactPattern(s) );
+    protected void addNewFCE(String type) {
+        FromCompositeFactPattern p = null;
+        if (type.equals("from")){
+            p = new FromCompositeFactPattern();
+        }else if (type.equals("from accumulate")){
+            p = new FromAccumulateCompositeFactPattern();
+        }else if (type.equals("from collect")){
+            p = new FromCollectCompositeFactPattern();
+        }
+
+        this.model.addLhsItem(p);
         refreshWidget();
     }
 
@@ -781,14 +790,18 @@
                               w ) );
                 vert.add( spacerWidget() );
             } else if (pattern instanceof CompositeFactPattern) {
-                if (pattern instanceof FromCompositeFactPattern){
-                    w = new FromCompositeFactPatternWidget(this, (FromCompositeFactPattern) pattern) ;
-                }else{
-                    w = new CompositeFactPatternWidget(this, (CompositeFactPattern) pattern) ;
-                }
+                w = new CompositeFactPatternWidget(this, (CompositeFactPattern) pattern) ;
                 vert.add( wrapLHSWidget( model, i, w ));
                 vert.add( spacerWidget() );
-            } else if (pattern instanceof DSLSentence) {
+            }else if(pattern instanceof FromCollectCompositeFactPattern){
+                w = new FromCollectCompositeFactPatternWidget(this, (FromCollectCompositeFactPattern) pattern) ;
+                vert.add( wrapLHSWidget( model, i, w ));
+                vert.add( spacerWidget() );
+            }else if(pattern instanceof FromCompositeFactPattern){
+                w = new FromCompositeFactPatternWidget(this, (FromCompositeFactPattern) pattern) ;
+                vert.add( wrapLHSWidget( model, i, w ));
+                vert.add( spacerWidget() );
+            }else if (pattern instanceof DSLSentence) {
                 //ignore this time
             } else if (pattern instanceof FreeFormLine){
             	final FreeFormLine ffl = (FreeFormLine) pattern;



More information about the jboss-svn-commits mailing list