[jboss-svn-commits] JBL Code SVN: r33459 - labs/jbossrules/trunk/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
Fri Jun 11 17:54:53 EDT 2010
Author: baunax
Date: 2010-06-11 17:54:53 -0400 (Fri, 11 Jun 2010)
New Revision: 33459
Added:
labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/ExpressionChangeEvent.java
labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/ExpressionChangeHandler.java
labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/ExpressionTypeChangeEvent.java
labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/ExpressionTypeChangeHandler.java
labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/HasExpressionChangeHandlers.java
labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/HasExpressionTypeChangeHandlers.java
Modified:
labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/ExpressionBuilder.java
Log:
GUVNOR-559 Allow to use the Expression Builder on the left side of a constraints
- Added "change type" and "change" events
Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/ExpressionBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/ExpressionBuilder.java 2010-06-11 21:48:18 UTC (rev 33458)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/ExpressionBuilder.java 2010-06-11 21:54:53 UTC (rev 33459)
@@ -1,27 +1,20 @@
package org.drools.guvnor.client.modeldriven.ui;
+import static org.drools.ide.common.client.modeldriven.brl.ExpressionPartHelper.getExpressionPartForField;
+import static org.drools.ide.common.client.modeldriven.brl.ExpressionPartHelper.getExpressionPartForGlobalVariable;
+import static org.drools.ide.common.client.modeldriven.brl.ExpressionPartHelper.getExpressionPartForMethod;
+
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
+import org.drools.guvnor.client.common.SmallLabel;
import org.drools.guvnor.client.messages.Constants;
-
-import com.google.gwt.core.client.GWT;
-import com.google.gwt.user.client.ui.ChangeListener;
-import com.google.gwt.user.client.ui.HasVerticalAlignment;
-import com.google.gwt.user.client.ui.HorizontalPanel;
-import com.google.gwt.user.client.ui.ListBox;
-import com.google.gwt.user.client.ui.Widget;
-import org.drools.guvnor.client.common.SmallLabel;
-import org.drools.ide.common.client.modeldriven.MethodInfo;
import org.drools.ide.common.client.modeldriven.SuggestionCompletionEngine;
-import org.drools.ide.common.client.modeldriven.brl.ExpressionCollection;
import org.drools.ide.common.client.modeldriven.brl.ExpressionCollectionIndex;
-import org.drools.ide.common.client.modeldriven.brl.ExpressionField;
import org.drools.ide.common.client.modeldriven.brl.ExpressionFieldVariable;
import org.drools.ide.common.client.modeldriven.brl.ExpressionFormLine;
-import org.drools.ide.common.client.modeldriven.brl.ExpressionGlobalVariable;
import org.drools.ide.common.client.modeldriven.brl.ExpressionMethod;
import org.drools.ide.common.client.modeldriven.brl.ExpressionPart;
import org.drools.ide.common.client.modeldriven.brl.ExpressionText;
@@ -29,338 +22,348 @@
import org.drools.ide.common.client.modeldriven.brl.FactPattern;
import org.drools.ide.common.client.modeldriven.brl.RuleModel;
-public class ExpressionBuilder extends RuleModellerWidget {
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.event.dom.client.ChangeEvent;
+import com.google.gwt.event.dom.client.ChangeHandler;
+import com.google.gwt.event.shared.HandlerRegistration;
+import com.google.gwt.user.client.ui.HasVerticalAlignment;
+import com.google.gwt.user.client.ui.HorizontalPanel;
+import com.google.gwt.user.client.ui.ListBox;
+import com.google.gwt.user.client.ui.Widget;
- private static final String DELETE_VALUE = "_delete_";
- private static final String FIElD_VALUE_PREFIX = "fl";
- 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 static final String METHOD_VALUE_PREFIX = "mt";
- private Constants constants = ((Constants) GWT.create(Constants.class));
- //private FlowPanel panel = new FlowPanel();
- private HorizontalPanel panel = new HorizontalPanel();
- private ExpressionFormLine expression;
- private boolean readOnly;
+public class ExpressionBuilder extends RuleModellerWidget implements HasExpressionTypeChangeHandlers, HasExpressionChangeHandlers {
- public ExpressionBuilder(RuleModeller modeller,
- ExpressionFormLine expression) {
- this(modeller, expression, false);
- }
+ private static final String DELETE_VALUE = "_delete_";
+ private static final String FIElD_VALUE_PREFIX = "fl";
+ 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 static final String METHOD_VALUE_PREFIX = "mt";
+ private Constants constants = ((Constants) GWT.create(Constants.class));
+ // private FlowPanel panel = new FlowPanel();
+ private HorizontalPanel panel = new HorizontalPanel();
+ private ExpressionFormLine expression;
+ private boolean readOnly;
- public ExpressionBuilder(RuleModeller modeller,
- ExpressionFormLine expression, Boolean readOnly) {
- super(modeller);
+ public ExpressionBuilder(RuleModeller modeller, ExpressionFormLine expression) {
+ this(modeller, expression, false);
+ }
- if (readOnly == null){
- this.readOnly = !modeller.getSuggestionCompletions().containsFactType(modeller.getSuggestionCompletions().getFactNameFromType(this.expression.getRootExpression().getClassType()));
- }else{
- this.readOnly = readOnly;
- }
+ public ExpressionBuilder(RuleModeller modeller, ExpressionFormLine expression, Boolean readOnly) {
+ super(modeller);
- panel.setVerticalAlignment(HasVerticalAlignment.ALIGN_MIDDLE);
+ if (readOnly == null) {
+ this.readOnly = !modeller.getSuggestionCompletions().containsFactType(
+ modeller.getSuggestionCompletions().getFactNameFromType(
+ this.expression.getRootExpression().getClassType()));
+ } else {
+ this.readOnly = readOnly;
+ }
- this.expression = expression;
- if (expression == null || expression.getText().length() == 0) {
- if (this.readOnly) {
- panel.add(new SmallLabel("<b>-</b>"));
- } else {
- panel.add(createStartPointWidget());
- }
- } else {
- if (this.readOnly) {
- panel.add(new SmallLabel("<b>" + expression.getText() + "</b>"));
- } else {
- panel.add(new SmallLabel("<b>" + expression.getText() + ".</b>"));
- panel.add(getWidgetForCurrentType());
- }
- }
- initWidget(panel);
- }
+ panel.setVerticalAlignment(HasVerticalAlignment.ALIGN_MIDDLE);
- private Widget createStartPointWidget() {
- ListBox startPoint = new ListBox();
- panel.add(startPoint);
+ this.expression = expression;
+ if (expression == null || expression.isEmpty()) {
+ if (this.readOnly) {
+ panel.add(new SmallLabel("<b>-</b>"));
+ } else {
+ panel.add(createStartPointWidget());
+ }
+ } else {
+ if (this.readOnly) {
+ panel.add(new SmallLabel("<b>" + expression.getText() + "</b>"));
+ } else {
+ panel.add(new SmallLabel("<b>" + expression.getText() + ".</b>"));
+ panel.add(getWidgetForCurrentType());
+ }
+ }
+ initWidget(panel);
+ }
- startPoint.addItem(constants.ChooseDotDotDot(), "");
+ private Widget createStartPointWidget() {
+ ListBox startPoint = new ListBox();
+ panel.add(startPoint);
- //TODO {baunax} uncomment when global collections is implemented.
-// for (String gc : getCompletionEngine().getGlobalCollections()) {
-// startPoint.addItem(gc, GLOBAL_COLLECTION_VALUE_PREFIX + "." + gc);
-// }
+ startPoint.addItem(constants.ChooseDotDotDot(), "");
- for (String gv : getCompletionEngine().getGlobalVariables()) {
- startPoint.addItem(gv, GLOBAL_VARIABLE_VALUE_PREFIX + "." + gv);
- }
+ // TODO {baunax} uncomment when global collections is implemented.
+ // for (String gc : getCompletionEngine().getGlobalCollections()) {
+ // startPoint.addItem(gc, GLOBAL_COLLECTION_VALUE_PREFIX + "." + gc);
+ // }
- for (String v : getRuleModel().getBoundFacts()) {
- startPoint.addItem(v, VARIABLE_VALUE_PREFIX + "." + v);
- }
+ for (String gv : getCompletionEngine().getGlobalVariables()) {
+ startPoint.addItem(gv, GLOBAL_VARIABLE_VALUE_PREFIX + "." + gv);
+ }
- startPoint.setVisibleItemCount(1);
- startPoint.addChangeListener(new ChangeListener() {
+ for (String v : getRuleModel().getBoundFacts()) {
+ startPoint.addItem(v, VARIABLE_VALUE_PREFIX + "." + v);
+ }
- public void onChange(Widget sender) {
- ListBox lb = (ListBox) sender;
- int index = lb.getSelectedIndex();
- if (index > 0) {
- ExpressionBuilder.this.makeDirty();
- startPointChange(lb.getValue(index));
- }
- }
- });
- return startPoint;
- }
+ startPoint.setVisibleItemCount(1);
+ startPoint.addChangeHandler(new ChangeHandler() {
- private void startPointChange(String value) {
- setModified(true);
- panel.clear();
- Widget w;
- int dotPos = value.indexOf('.');
- String prefix = value.substring(0, dotPos);
- String attrib = value.substring(dotPos + 1);
- if (prefix.equals(VARIABLE_VALUE_PREFIX)) {
- FactPattern fact = getRuleModel().getBoundFact(attrib);
- ExpressionPart variable;
- if (fact!=null){
- variable = new ExpressionVariable(fact);
- }else{
- variable = new ExpressionFieldVariable(attrib);
- }
- expression.appendPart(variable);
+ public void onChange(ChangeEvent event) {
+ ListBox lb = (ListBox) event.getSource();
+ int index = lb.getSelectedIndex();
+ if (index > 0) {
+ ExpressionBuilder.this.makeDirty();
+ startPointChange(lb.getValue(index));
+ }
+ }
+ });
+ return startPoint;
+ }
- } else if (prefix.equals(GLOBAL_VARIABLE_VALUE_PREFIX)) {
- String globalVarType = getCompletionEngine().getGlobalVariable(attrib);
- ExpressionGlobalVariable variable = new ExpressionGlobalVariable(attrib, globalVarType, globalVarType);
- expression.appendPart(variable);
- }
- w = getWidgetForCurrentType();
+ @Override
+ public void makeDirty() {
+ super.makeDirty();
+ setModified(true);
+ }
- if (!expression.isEmpty()) {
- panel.add(new SmallLabel("<b>"+expression.getText()+".</b>"));
- }
- if (w != null) {
- panel.add(w);
- }
+ private void startPointChange(String value) {
+ setModified(true);
+ panel.clear();
+ Widget w;
+ int dotPos = value.indexOf('.');
+ String prefix = value.substring(0, dotPos);
+ String attrib = value.substring(dotPos + 1);
+ if (prefix.equals(VARIABLE_VALUE_PREFIX)) {
+ FactPattern fact = getRuleModel().getBoundFact(attrib);
+ ExpressionPart variable;
+ if (fact != null) {
+ variable = new ExpressionVariable(fact);
+ } else {
+ //TODO {baunax} fix it!!! to make recursive
+ variable = new ExpressionFieldVariable(attrib);
+ }
+ expression.appendPart(variable);
- // panel.add(getWidgetFor(startPoint.getValue(index)));
- // ExpressionBuilder.this.expression.appendText(v);
- }
+ } else if (prefix.equals(GLOBAL_VARIABLE_VALUE_PREFIX)) {
+ expression.appendPart(getExpressionPartForGlobalVariable(getCompletionEngine(), attrib));
+ }
+ w = getWidgetForCurrentType();
- private Widget getWidgetForCurrentType() {
- if (expression.isEmpty()) {
- return createStartPointWidget();
- }
- String factName = getCompletionEngine().getFactNameFromType(
- getCurrentClassType());
- if (factName != null) {
- ListBox lb = new ListBox();
- lb.setVisibleItemCount(1);
- lb.addItem(constants.ChooseDotDotDot(), "");
- lb.addItem("<==" + constants.DeleteItem(), DELETE_VALUE);
- for (Map.Entry<String, String> entry : getCompletionsForCurrentType().entrySet()) {
- lb.addItem(entry.getKey(), entry.getValue());
- }
+ if (!expression.isEmpty()) {
+ panel.add(new SmallLabel("<b>" + expression.getText() + ".</b>"));
+ }
+ if (w != null) {
+ panel.add(w);
+ }
+ fireExpressionChangeEvent();
+ fireExpressionTypeChangeEvent();
+ }
- lb.addChangeListener(new ChangeListener() {
+ private Widget getWidgetForCurrentType() {
+ if (expression.isEmpty()) {
+ return createStartPointWidget();
+ }
+
+ ChangeHandler ch = new ChangeHandler() {
+ public void onChange(ChangeEvent event) {
+ ListBox box = (ListBox) event.getSource();
+ panel.remove(box);
+ if (box.getSelectedIndex() > 0) {
+ onChangeSelection(box.getValue(box.getSelectedIndex()));
+ }
+ }
+ };
+
+ ListBox lb = new ListBox();
+ lb.setVisibleItemCount(1);
+ lb.addItem(constants.ChooseDotDotDot(), "");
+ lb.addItem("<==" + constants.DeleteItem(), DELETE_VALUE);
+ for (Map.Entry<String, String> entry : getCompletionsForCurrentType().entrySet()) {
+ lb.addItem(entry.getKey(), entry.getValue());
+ }
+ lb.addChangeHandler(ch);
+ return lb;
+ }
- public void onChange(Widget sender) {
- ListBox box = (ListBox) sender;
- panel.remove(box);
- if (box.getSelectedIndex() > 0) {
- onChangeSelection(box.getValue(box.getSelectedIndex()));
- }
- }
- });
- return lb;
- } else {//if (SuggestionCompletionEngine.TYPE_COLLECTION.equals(getCurrentGenericType())) {
- ListBox lb = new ListBox();
- lb.setVisibleItemCount(1);
- lb.addItem(constants.ChooseDotDotDot(), "");
- lb.addItem("<==" + constants.DeleteItem(), DELETE_VALUE);
- for (Map.Entry<String, String> entry : getCompletionsForCurrentType().entrySet()) {
- lb.addItem(entry.getKey(), entry.getValue());
- }
- lb.addChangeListener(new ChangeListener() {
+ private void onCollectionChange(String value) {
+ if ("size".contains(value)) {
+ expression.appendPart(new ExpressionMethod("size", "int", SuggestionCompletionEngine.TYPE_NUMERIC));
+ } else if ("isEmpty".equals(value)) {
+ expression.appendPart(new ExpressionMethod("isEmpty", "boolean", SuggestionCompletionEngine.TYPE_BOOLEAN));
+ } else {
+ ExpressionCollectionIndex collectionIndex;
+ String factName = getCompletionEngine().getFactNameFromType(getCurrentParametricType());
+ if (getCurrentParametricType() != null && factName != null) {
+ collectionIndex = new ExpressionCollectionIndex("get", getCurrentParametricType(), factName);
+ } else {
+ collectionIndex = new ExpressionCollectionIndex("get", "java.lang.Object",
+ SuggestionCompletionEngine.TYPE_OBJECT);
+ }
+ if ("first".equals(value)) {
+ collectionIndex.putParam("index", new ExpressionFormLine(new ExpressionText("0")));
+ expression.appendPart(collectionIndex);
+ } else if ("last".equals(value)) {
+ ExpressionFormLine index = new ExpressionFormLine(expression);
+ index.appendPart(new ExpressionMethod("size", "int", SuggestionCompletionEngine.TYPE_NUMERIC));
+ index.appendPart(new ExpressionText("-1"));
- public void onChange(Widget sender) {
- ListBox box = (ListBox) sender;
- panel.remove(box);
- if (box.getSelectedIndex() > 0) {
- onChangeSelection(box.getValue(box.getSelectedIndex()));
- }
- }
- });
- return lb;
- }
-// return null;
- }
+ collectionIndex.putParam("index", index);
+ expression.appendPart(collectionIndex);
+ }
+ }
+ }
- private void onCollectionChange(String value) {
- if ("size".contains(value)) {
- expression.appendPart(new ExpressionMethod("size", "int", SuggestionCompletionEngine.TYPE_NUMERIC));
- } else if ("isEmpty".equals(value)) {
- expression.appendPart(new ExpressionMethod("isEmpty", "boolean", SuggestionCompletionEngine.TYPE_BOOLEAN));
- } else {
- ExpressionCollectionIndex collectionIndex;
- String factName = getCompletionEngine().getFactNameFromType(getCurrentParametricType());
- if (getCurrentParametricType() != null && factName != null) {
- collectionIndex = new ExpressionCollectionIndex("get", getCurrentParametricType(), factName);
- } else {
- collectionIndex = new ExpressionCollectionIndex("get", "java.lang.Object", SuggestionCompletionEngine.TYPE_OBJECT);
- }
- if ("first".equals(value)) {
- collectionIndex.putParam("index", new ExpressionFormLine(new ExpressionText("0")));
- expression.appendPart(collectionIndex);
- } else if ("last".equals(value)) {
- ExpressionFormLine index = new ExpressionFormLine(expression);
- index.appendPart(new ExpressionMethod("size", "int", SuggestionCompletionEngine.TYPE_NUMERIC));
- index.appendPart(new ExpressionText("-1"));
+ private void onChangeSelection(String value) {
+ setModified(true);
+ String oldType = getCurrentGenericType();
+ String prevFactName = null;
+ if (DELETE_VALUE.equals(value)) {
+ expression.removeLast();
+ } else if (SuggestionCompletionEngine.TYPE_COLLECTION.equals(getCurrentGenericType())) {
+ onCollectionChange(value);
+ } else if (SuggestionCompletionEngine.TYPE_STRING.equals(getCurrentGenericType())) {
+ if ("size".equals(value)) {
+ expression.appendPart(new ExpressionMethod("size", "int", SuggestionCompletionEngine.TYPE_NUMERIC));
+ } else if ("isEmpty".equals(value)) {
+ expression.appendPart(new ExpressionText(".size() == 0", "", SuggestionCompletionEngine.TYPE_NUMERIC));
+ }
+ } else {
+ int dotPos = value.indexOf('.');
+ String prefix = value.substring(0, dotPos);
+ String attrib = value.substring(dotPos + 1);
- collectionIndex.putParam("index", index);
- expression.appendPart(collectionIndex);
- }
- }
- }
+ prevFactName = getCompletionEngine().getFactNameFromType(getCurrentClassType());
+ // String genericType = SuggestionCompletionEngine.TYPE_OBJECT;
+ if (FIElD_VALUE_PREFIX.equals(prefix)) {
+ expression.appendPart(getExpressionPartForField(getCompletionEngine(), prevFactName, attrib));
+ } else if (METHOD_VALUE_PREFIX.equals(prefix)) {
+ expression.appendPart(getExpressionPartForMethod(getCompletionEngine(), prevFactName, attrib));
+ }
+ }
+ Widget w = getWidgetForCurrentType();
- private void onChangeSelection(String value) {
- setModified(true);
+ panel.clear();
+ if (!expression.isEmpty()) {
+ panel.add(new SmallLabel("<b>" + expression.getText() + ".</b>"));
+ }
+ if (w != null) {
+ panel.add(w);
+ }
+ fireExpressionChangeEvent();
+ fireExpressionTypeChangeEvent(oldType);
+ }
- String prevFactName = null;
- if (DELETE_VALUE.equals(value)) {
- expression.removeLast();
- } else if (SuggestionCompletionEngine.TYPE_COLLECTION.equals(getCurrentGenericType())) {
- onCollectionChange(value);
- } else if (SuggestionCompletionEngine.TYPE_STRING.equals(getCurrentGenericType())) {
- if ("size".equals(value)) {
- expression.appendPart(new ExpressionMethod("size", "int", SuggestionCompletionEngine.TYPE_NUMERIC));
- } else if ("isEmpty".equals(value)) {
- expression.appendPart(new ExpressionText(".size() == 0", "", SuggestionCompletionEngine.TYPE_NUMERIC));
- }
- } else {
- int dotPos = value.indexOf('.');
- String prefix = value.substring(0, dotPos);
- String attrib = value.substring(dotPos + 1);
+ private Map<String, String> getCompletionsForCurrentType() {
+ Map<String, String> completions = new LinkedHashMap<String, String>();
- prevFactName = getCompletionEngine().getFactNameFromType(
- getCurrentClassType());
-// String genericType = SuggestionCompletionEngine.TYPE_OBJECT;
- if (FIElD_VALUE_PREFIX.equals(prefix)) {
- String fieldClassName = getCompletionEngine().getFieldClassName(prevFactName, attrib);
- String fieldGenericType = getCompletionEngine().getFieldType(prevFactName, attrib);
- if (SuggestionCompletionEngine.TYPE_COLLECTION.equals(fieldGenericType)) {
- String fieldParametricType = getCompletionEngine().getParametricFieldType(prevFactName, attrib);
- expression.appendPart(new ExpressionCollection(attrib, fieldClassName, fieldGenericType, fieldParametricType));
- } else {
- expression.appendPart(new ExpressionField(attrib, fieldClassName, fieldGenericType));
- }
- } else if (METHOD_VALUE_PREFIX.equals(prefix)) {
- MethodInfo mi = getCompletionEngine().getMethodinfo(prevFactName, attrib);
- if (SuggestionCompletionEngine.TYPE_COLLECTION.equals(mi.getGenericType())) {
- expression.appendPart(new ExpressionCollection(attrib, mi.getReturnClassType(), mi.getGenericType(), mi.getParametricReturnType()));
- } else {
- expression.appendPart(new ExpressionMethod(mi.getName(), mi.getReturnClassType(), mi.getGenericType()));
- }
- }
- }
- Widget w = getWidgetForCurrentType();
+ if (SuggestionCompletionEngine.TYPE_FINAL_OBJECT.equals(getCurrentGenericType())) {
+ return completions;
+ }
- panel.clear();
- if (!expression.isEmpty()) {
- panel.add(new SmallLabel("<b>"+expression.getText()+".</b>"));
- }
- if (w != null) {
- panel.add(w);
- }
- }
+ if (SuggestionCompletionEngine.TYPE_COLLECTION.equals(getCurrentGenericType())) {
+ completions.put("size()", "size");
+ completions.put("first()", "first");
+ completions.put("last()", "last");
+ completions.put("isEmpty()", "isEmpty");
+ return completions;
+ }
- private Map<String, String> getCompletionsForCurrentType() {
- Map<String, String> completions = new LinkedHashMap<String, String>();
+ if (SuggestionCompletionEngine.TYPE_STRING.equals(getCurrentGenericType())) {
+ completions.put("size()", "size");
+ completions.put("isEmpty()", "isEmpty");
+ return completions;
+ }
- if (SuggestionCompletionEngine.TYPE_FINAL_OBJECT.equals(getCurrentGenericType())) {
- return completions;
- }
+ if (SuggestionCompletionEngine.TYPE_BOOLEAN.equals(getCurrentGenericType())
+ || SuggestionCompletionEngine.TYPE_NUMERIC.equals(getCurrentGenericType())
+ || SuggestionCompletionEngine.TYPE_DATE.equals(getCurrentGenericType())
+ || SuggestionCompletionEngine.TYPE_OBJECT.equals(getCurrentGenericType())) {
+ return completions;
+ }
- if (SuggestionCompletionEngine.TYPE_COLLECTION.equals(getCurrentGenericType())) {
- completions.put("size()", "size");
- completions.put("first()", "first");
- completions.put("last()", "last");
- completions.put("isEmpty()", "isEmpty");
- return completions;
- }
+ String factName = getCompletionEngine().getFactNameFromType(getCurrentClassType());
+ if (factName != null) {
+ // we currently only support 0 param method calls
+ List<String> methodNames = getCompletionEngine().getMethodFullNames(factName, 0);
- if (SuggestionCompletionEngine.TYPE_STRING.equals(getCurrentGenericType())) {
- completions.put("size()", "size");
- completions.put("isEmpty()", "isEmpty");
- return completions;
- }
+ for (String field : getCompletionEngine().getFieldCompletions(factName)) {
+ boolean changed = false;
+ for (Iterator<String> i = methodNames.iterator(); i.hasNext();) {
+ String method = i.next();
+ if (method.startsWith(field)) {
+ completions.put(method, METHOD_VALUE_PREFIX + "." + method);
+ i.remove();
+ changed = true;
+ }
+ }
+ if (!changed) {
+ completions.put(field, FIElD_VALUE_PREFIX + "." + field);
+ }
+ }
+ }
+ // else {We don't know anything about this type, so return empty map}
+ return completions;
+ }
- if (SuggestionCompletionEngine.TYPE_BOOLEAN.equals(getCurrentGenericType())
- || SuggestionCompletionEngine.TYPE_NUMERIC.equals(getCurrentGenericType())
- || SuggestionCompletionEngine.TYPE_DATE.equals(getCurrentGenericType())
- || SuggestionCompletionEngine.TYPE_OBJECT.equals(getCurrentGenericType())) {
- return completions;
- }
+ // private String getCurrentPartName() {
+ // return expression.getCurrentName();
+ // }
- String factName = getCompletionEngine().getFactNameFromType(getCurrentClassType());
- if (factName != null) {
- //we currently only support 0 param method calls
- List<String> methodNames = getCompletionEngine().getMethodFullNames(factName, 0);
+ private RuleModel getRuleModel() {
+ return this.getModeller().getModel();
+ }
- for (String field : getCompletionEngine().getFieldCompletions(
- factName)) {
- boolean changed = false;
- for (Iterator<String> i = methodNames.iterator(); i.hasNext();) {
- String method = i.next();
- if (method.startsWith(field)) {
- completions.put(method, METHOD_VALUE_PREFIX + "." + method);
- i.remove();
- changed = true;
- }
- }
- if (!changed) {
- completions.put(field, FIElD_VALUE_PREFIX + "." + field);
- }
- }
- }
- //else {We don't know anything about this type, so return empty map}
- return completions;
- }
+ private SuggestionCompletionEngine getCompletionEngine() {
+ return this.getModeller().getSuggestionCompletions();
+ }
- private String getCurrentPartName() {
- return expression.getCurrentName();
- }
+ private String getCurrentClassType() {
+ return expression.getClassType();
+ }
- private RuleModel getRuleModel() {
- return this.getModeller().getModel();
- }
+ private String getCurrentGenericType() {
+ return expression.getGenericType();
+ }
- private SuggestionCompletionEngine getCompletionEngine() {
- return this.getModeller().getSuggestionCompletions();
- }
+ private String getPreviousGenericType() {
+ return expression.getPreviousGenericType();
+ }
- private String getCurrentClassType() {
- return expression.getClassType();
- }
+ private String getCurrentParametricType() {
+ return expression.getParametricType();
+ }
- private String getCurrentGenericType() {
- return expression.getGenericType();
- }
+ // private String getPreviousClassType() {
+ // return expression.getPreviousType();
+ // }
+ //
+ // private ExpressionPart getRootExpression() {
+ // return expression.getRootExpression();
+ // }
- private String getCurrentParametricType() {
- return expression.getParametricType();
- }
+ @Override
+ public boolean isReadOnly() {
+ return this.readOnly;
+ }
- private String getPreviousClassType() {
- return expression.getPreviousType();
- }
+ /**
+ * @see org.drools.guvnor.client.modeldriven.ui.HasExpressionTypeChangeHandlers#addExpressionTypeChangeHandler(org.drools.guvnor.client.modeldriven.ui.ExpressionTypeChangeHandler)
+ */
+ public HandlerRegistration addExpressionTypeChangeHandler(ExpressionTypeChangeHandler handler) {
+ return addHandler(handler, ExpressionTypeChangeEvent.getType());
+ }
- private ExpressionPart getRootExpression() {
- return expression.getRootExpression();
- }
-
- @Override
- public boolean isReadOnly() {
- return this.readOnly;
- }
+ private void fireExpressionChangeEvent() {
+ fireEvent(new ExpressionChangeEvent());
+ }
+
+ private void fireExpressionTypeChangeEvent() {
+ fireExpressionTypeChangeEvent(getPreviousGenericType());
+ }
+
+ private void fireExpressionTypeChangeEvent(String previousGenericType) {
+ String currentGenericType = getCurrentGenericType();
+ if ((previousGenericType == null || !previousGenericType.equals(currentGenericType))
+ || currentGenericType != null) {
+ fireEvent(new ExpressionTypeChangeEvent(previousGenericType, currentGenericType));
+ }
+ }
+
+ public HandlerRegistration addExpressionChangeHandler(ExpressionChangeHandler handler) {
+ return addHandler(handler, ExpressionChangeEvent.getType());
+ }
}
Added: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/ExpressionChangeEvent.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/ExpressionChangeEvent.java (rev 0)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/ExpressionChangeEvent.java 2010-06-11 21:54:53 UTC (rev 33459)
@@ -0,0 +1,35 @@
+package org.drools.guvnor.client.modeldriven.ui;
+/*
+ * Copyright 2005 JBoss Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import com.google.gwt.event.shared.GwtEvent;
+
+public class ExpressionChangeEvent extends GwtEvent<ExpressionChangeHandler> {
+ private static final GwtEvent.Type<ExpressionChangeHandler> TYPE = new GwtEvent.Type<ExpressionChangeHandler>();
+
+ @Override
+ protected void dispatch(ExpressionChangeHandler handler) {
+ handler.onExpressionChanged(this);
+ }
+
+ @Override
+ public GwtEvent.Type<ExpressionChangeHandler> getAssociatedType() {
+ return getType();
+ }
+
+ public static final Type<ExpressionChangeHandler> getType() {
+ return TYPE;
+ }
+}
Property changes on: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/ExpressionChangeEvent.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/ExpressionChangeHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/ExpressionChangeHandler.java (rev 0)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/ExpressionChangeHandler.java 2010-06-11 21:54:53 UTC (rev 33459)
@@ -0,0 +1,21 @@
+package org.drools.guvnor.client.modeldriven.ui;
+/*
+ * Copyright 2005 JBoss Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import com.google.gwt.event.shared.EventHandler;
+
+public interface ExpressionChangeHandler extends EventHandler {
+ void onExpressionChanged(ExpressionChangeEvent event);
+}
Property changes on: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/ExpressionChangeHandler.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/ExpressionTypeChangeEvent.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/ExpressionTypeChangeEvent.java (rev 0)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/ExpressionTypeChangeEvent.java 2010-06-11 21:54:53 UTC (rev 33459)
@@ -0,0 +1,56 @@
+package org.drools.guvnor.client.modeldriven.ui;
+/*
+ * Copyright 2005 JBoss Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import com.google.gwt.event.shared.GwtEvent;
+
+public class ExpressionTypeChangeEvent extends GwtEvent<ExpressionTypeChangeHandler> {
+ private static final GwtEvent.Type<ExpressionTypeChangeHandler> TYPE = new GwtEvent.Type<ExpressionTypeChangeHandler>();
+ private String oldType;
+ private String newType;
+
+ public ExpressionTypeChangeEvent(String oldType, String newType) {
+ super();
+ this.oldType = oldType;
+ this.newType = newType;
+ }
+
+ public String getOldType() {
+ return oldType;
+ }
+
+ public String getNewType() {
+ return newType;
+ }
+
+ @Override
+ protected void dispatch(ExpressionTypeChangeHandler handler) {
+
+ try {
+ handler.onExpressionTypeChanged(this);
+ } catch (Throwable e) {
+ e.printStackTrace();
+ }
+ }
+
+ @Override
+ public GwtEvent.Type<ExpressionTypeChangeHandler> getAssociatedType() {
+ return getType();
+ }
+
+ public static final Type<ExpressionTypeChangeHandler> getType() {
+ return TYPE;
+ }
+}
Property changes on: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/ExpressionTypeChangeEvent.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/ExpressionTypeChangeHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/ExpressionTypeChangeHandler.java (rev 0)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/ExpressionTypeChangeHandler.java 2010-06-11 21:54:53 UTC (rev 33459)
@@ -0,0 +1,21 @@
+package org.drools.guvnor.client.modeldriven.ui;
+/*
+ * Copyright 2005 JBoss Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import com.google.gwt.event.shared.EventHandler;
+
+public interface ExpressionTypeChangeHandler extends EventHandler {
+ void onExpressionTypeChanged(ExpressionTypeChangeEvent event);
+}
Property changes on: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/ExpressionTypeChangeHandler.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/HasExpressionChangeHandlers.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/HasExpressionChangeHandlers.java (rev 0)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/HasExpressionChangeHandlers.java 2010-06-11 21:54:53 UTC (rev 33459)
@@ -0,0 +1,10 @@
+package org.drools.guvnor.client.modeldriven.ui;
+
+import com.google.gwt.event.shared.HandlerRegistration;
+import com.google.gwt.event.shared.HasHandlers;
+
+public interface HasExpressionChangeHandlers extends HasHandlers {
+
+ HandlerRegistration addExpressionChangeHandler(ExpressionChangeHandler handler);
+
+}
\ No newline at end of file
Property changes on: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/HasExpressionChangeHandlers.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/HasExpressionTypeChangeHandlers.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/HasExpressionTypeChangeHandlers.java (rev 0)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/HasExpressionTypeChangeHandlers.java 2010-06-11 21:54:53 UTC (rev 33459)
@@ -0,0 +1,10 @@
+package org.drools.guvnor.client.modeldriven.ui;
+
+import com.google.gwt.event.shared.HandlerRegistration;
+import com.google.gwt.event.shared.HasHandlers;
+
+public interface HasExpressionTypeChangeHandlers extends HasHandlers {
+
+ HandlerRegistration addExpressionTypeChangeHandler(ExpressionTypeChangeHandler handler);
+
+}
\ No newline at end of file
Property changes on: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/HasExpressionTypeChangeHandlers.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
More information about the jboss-svn-commits
mailing list