[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(" "));
}
- @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