[jboss-svn-commits] JBL Code SVN: r31168 - labs/jbossrules/branches/guvnor_expressionEditor2_baunax_esteban/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Jan 20 15:27:01 EST 2010


Author: baunax
Date: 2010-01-20 15:27:01 -0500 (Wed, 20 Jan 2010)
New Revision: 31168

Added:
   labs/jbossrules/branches/guvnor_expressionEditor2_baunax_esteban/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/ExpressionBuilder.java
Log:
expression builder component

Added: labs/jbossrules/branches/guvnor_expressionEditor2_baunax_esteban/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/ExpressionBuilder.java
===================================================================
--- labs/jbossrules/branches/guvnor_expressionEditor2_baunax_esteban/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/ExpressionBuilder.java	                        (rev 0)
+++ labs/jbossrules/branches/guvnor_expressionEditor2_baunax_esteban/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/ExpressionBuilder.java	2010-01-20 20:27:01 UTC (rev 31168)
@@ -0,0 +1,98 @@
+package org.drools.guvnor.client.modeldriven.ui;
+
+import org.drools.guvnor.client.common.DirtyableComposite;
+import org.drools.guvnor.client.messages.Constants;
+import org.drools.guvnor.client.modeldriven.SuggestionCompletionEngine;
+import org.drools.guvnor.client.modeldriven.brl.FactPattern;
+import org.drools.guvnor.client.modeldriven.brl.RuleModel;
+
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.user.client.ui.ChangeListener;
+import com.google.gwt.user.client.ui.FlowPanel;
+import com.google.gwt.user.client.ui.ListBox;
+import com.google.gwt.user.client.ui.Widget;
+import com.gwtext.client.widgets.form.Label;
+
+public class ExpressionBuilder extends DirtyableComposite {
+	private static final String VARIABLE_VALUE_PREFIX = "va";
+	private static final String GLOBAL_COLLECTION_VALUE_PREFIX = "gc";
+	private static final String GLOBAL_VARIABLE_VALUE_PREFIX = "gv";
+	
+	private Constants constants = ((Constants) GWT.create(Constants.class));
+	private FlowPanel panel = new FlowPanel();
+
+	private RuleModeller modeller;
+
+	public ExpressionBuilder(RuleModeller modeller, String expression) {
+		super();
+		if (expression == null || expression.isEmpty()) {
+			final ListBox startPoint = new ListBox();
+			panel.add(startPoint);
+			this.modeller = modeller;
+			startPoint.addItem(constants.ChooseDotDotDot(), ".");
+			for (String gc : getCompletions().getGlobalCollections()) {
+				startPoint.addItem(gc, GLOBAL_COLLECTION_VALUE_PREFIX + "."
+						+ gc);
+			}
+
+			for (String gv : getCompletions().getGlobalVariables()) {
+				startPoint.addItem(gv, GLOBAL_VARIABLE_VALUE_PREFIX + "." + gv);
+			}
+
+			for (String v : getRuleModel().getBoundFacts()) {
+				startPoint.addItem(v, VARIABLE_VALUE_PREFIX + "." + v);
+			}
+
+			startPoint.setVisibleItemCount(1);
+			startPoint.addChangeListener(new ChangeListener() {
+				public void onChange(Widget sender) {
+					int index = startPoint.getSelectedIndex();
+					if (index > 0) {
+						panel.clear();
+						panel.add(new Label(startPoint.getItemText(index)));
+						panel.add(getWidgetFor(startPoint.getValue(index)));
+					}
+				}
+			});
+			initWidget(panel);
+		} else {
+			parseExpression(expression);
+		}
+		
+	}
+
+	protected Widget getWidgetFor(String value) {
+		if (value == null || value.isEmpty()) {
+			throw new IllegalArgumentException("value is empty");
+		}
+		if (value.startsWith(VARIABLE_VALUE_PREFIX)) {
+			FactPattern fact = getRuleModel().getBoundFact(value.substring(VARIABLE_VALUE_PREFIX.length() + 1));
+			String[] methods = getCompletions().getFieldCompletions(fact.factType);
+			ListBox lb = new ListBox();
+			lb.setVisibleItemCount(1);
+			
+			for (String method : methods) {
+				lb.addItem(method);
+			}
+			panel.add(lb);
+		} else if (value.startsWith(GLOBAL_COLLECTION_VALUE_PREFIX)) {
+			
+		} else if (value.startsWith(GLOBAL_VARIABLE_VALUE_PREFIX)) {
+			
+		}
+		throw new IllegalArgumentException("value has invalidad prefix: '" + value + "'");
+	}
+
+	private void parseExpression(String expression) {
+		throw new IllegalStateException("not implemented yet");
+	}
+
+	private RuleModel getRuleModel() {
+		return modeller.getModel();
+	}
+
+	private SuggestionCompletionEngine getCompletions() {
+		return modeller.getSuggestionCompletions();
+	}
+
+}


Property changes on: labs/jbossrules/branches/guvnor_expressionEditor2_baunax_esteban/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/ExpressionBuilder.java
___________________________________________________________________
Name: svn:keywords
   + Id Revision
Name: svn:eol-style
   + LF



More information about the jboss-svn-commits mailing list