[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