[jboss-svn-commits] JBL Code SVN: r19117 - in labs/jbossrules/branches/fixing_bad_merge/drools-jbrms/src/main/java/org/drools/brms/client: decisiontable and 1 other directory.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Wed Mar 19 09:49:36 EDT 2008
Author: tirelli
Date: 2008-03-19 09:49:36 -0400 (Wed, 19 Mar 2008)
New Revision: 19117
Added:
labs/jbossrules/branches/fixing_bad_merge/drools-jbrms/src/main/java/org/drools/brms/client/decisiontable/ActionInsertColumn.java
Modified:
labs/jbossrules/branches/fixing_bad_merge/drools-jbrms/src/main/java/org/drools/brms/client/admin/CategoryManager.java
labs/jbossrules/branches/fixing_bad_merge/drools-jbrms/src/main/java/org/drools/brms/client/decisiontable/ActionSetColumn.java
labs/jbossrules/branches/fixing_bad_merge/drools-jbrms/src/main/java/org/drools/brms/client/decisiontable/GuidedDTColumnConfig.java
labs/jbossrules/branches/fixing_bad_merge/drools-jbrms/src/main/java/org/drools/brms/client/decisiontable/GuidedDecisionTableWidget.java
Log:
reapplying commit #19104
Modified: labs/jbossrules/branches/fixing_bad_merge/drools-jbrms/src/main/java/org/drools/brms/client/admin/CategoryManager.java
===================================================================
--- labs/jbossrules/branches/fixing_bad_merge/drools-jbrms/src/main/java/org/drools/brms/client/admin/CategoryManager.java 2008-03-19 13:48:32 UTC (rev 19116)
+++ labs/jbossrules/branches/fixing_bad_merge/drools-jbrms/src/main/java/org/drools/brms/client/admin/CategoryManager.java 2008-03-19 13:49:36 UTC (rev 19117)
@@ -126,17 +126,19 @@
// a1.header = "Do something !";
// dt.actionCols.add(a1);
+ //initWidget( form );
+ final RuleAsset asset_ = new RuleAsset();
+ asset_.metaData = new MetaData();
+ asset_.metaData.packageName = "com.billasurf.manufacturing.plant";
+ asset_.content = dt;
+ initWidget( new GuidedDecisionTableWidget(asset_) );
SuggestionCompletionCache.getInstance().doAction("com.billasurf.manufacturing.plant", new Command() {
public void execute() {
System.err.println("loaded SCE");
+
}
});
- //initWidget( form );
- RuleAsset asset_ = new RuleAsset();
- asset_.metaData = new MetaData();
- asset_.metaData.packageName = "com.billasurf.manufacturing.plant";
- asset_.content = dt;
- initWidget( new GuidedDecisionTableWidget(asset_) );
+
}
Copied: labs/jbossrules/branches/fixing_bad_merge/drools-jbrms/src/main/java/org/drools/brms/client/decisiontable/ActionInsertColumn.java (from rev 19104, labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/decisiontable/ActionInsertColumn.java)
===================================================================
--- labs/jbossrules/branches/fixing_bad_merge/drools-jbrms/src/main/java/org/drools/brms/client/decisiontable/ActionInsertColumn.java (rev 0)
+++ labs/jbossrules/branches/fixing_bad_merge/drools-jbrms/src/main/java/org/drools/brms/client/decisiontable/ActionInsertColumn.java 2008-03-19 13:49:36 UTC (rev 19117)
@@ -0,0 +1,249 @@
+package org.drools.brms.client.decisiontable;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import org.drools.brms.client.common.FormStylePopup;
+import org.drools.brms.client.common.ImageButton;
+import org.drools.brms.client.common.InfoPopup;
+import org.drools.brms.client.common.SmallLabel;
+import org.drools.brms.client.modeldriven.SuggestionCompletionEngine;
+import org.drools.brms.client.modeldriven.dt.ActionCol;
+import org.drools.brms.client.modeldriven.dt.ActionInsertFactCol;
+import org.drools.brms.client.modeldriven.dt.ConditionCol;
+import org.drools.brms.client.modeldriven.dt.GuidedDecisionTable;
+
+import com.google.gwt.user.client.Command;
+import com.google.gwt.user.client.ui.Button;
+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.Image;
+import com.google.gwt.user.client.ui.ListBox;
+import com.google.gwt.user.client.ui.TextBox;
+import com.google.gwt.user.client.ui.Widget;
+
+/**
+ * This is an editor for columns that are for inserting facts.
+ * @author Michael Neale
+ *
+ */
+public class ActionInsertColumn extends FormStylePopup {
+
+ private GuidedDecisionTable dt;
+ private SuggestionCompletionEngine sce;
+ private ActionInsertFactCol editingCol;
+ private SmallLabel patternLabel = new SmallLabel();
+ private SmallLabel fieldLabel = new SmallLabel();
+
+ public ActionInsertColumn(SuggestionCompletionEngine sce, final GuidedDecisionTable dt, final Command refreshGrid, final ActionInsertFactCol col, final boolean isNew) {
+ this.setModal(false);
+ this.dt = dt;
+ this.sce = sce;
+ this.editingCol = new ActionInsertFactCol();
+ editingCol.boundName = col.boundName;
+ editingCol.type = col.type;
+ editingCol.factField = col.factField;
+ editingCol.factType = col.factType;
+ editingCol.header = col.header;
+ editingCol.valueList = col.valueList;
+
+ setTitle("Action column configuration (inserting a new fact)");
+
+ final TextBox header = new TextBox();
+ header.setText(col.header);
+ header.addChangeListener(new ChangeListener() {
+ public void onChange(Widget w) {
+ editingCol.header = header.getText();
+ } });
+ addAttribute("Column header (description):", header);
+
+
+ HorizontalPanel pattern = new HorizontalPanel();
+ pattern.add(patternLabel );
+ doPatternLabel();
+
+ Image changePattern = new ImageButton("images/edit.gif", "Choose a pattern that this column adds data to", new ClickListener() {
+ public void onClick(Widget w) {
+ showChangePattern(w);
+ }
+ });
+ pattern.add(changePattern);
+ addAttribute("Pattern:", pattern);
+
+ HorizontalPanel field = new HorizontalPanel();
+ field.add(fieldLabel);
+ Image editField = new ImageButton("images/edit.gif", "Edit the field that this column operates on", new ClickListener() {
+ public void onClick(Widget w) {
+ showFieldChange();
+ }
+ });
+ field.add(editField);
+ addAttribute("Field:", field);
+ doFieldLabel();
+
+
+ final TextBox valueList = new TextBox();
+ valueList.setText(editingCol.valueList);
+ valueList.addChangeListener(new ChangeListener() {
+ public void onChange(Widget w) {
+ editingCol.valueList = valueList.getText();
+ }
+ });
+ HorizontalPanel vl = new HorizontalPanel();
+ vl.add(valueList);
+ vl.add(new InfoPopup("Value list", "Value lists are an optional comma separated list of values to show as a drop down."));
+ addAttribute("(optional) value list:", vl);
+
+ Button apply = new Button("Apply changes");
+ apply.addClickListener(new ClickListener() {
+ public void onClick(Widget w) {
+ if (isNew) {
+ dt.actionCols.add(editingCol);
+ } else {
+ col.boundName = editingCol.boundName;
+ col.type = editingCol.type;
+ col.factField = editingCol.factField;
+ col.factType = editingCol.factType;
+ col.header = editingCol.header;
+ col.valueList = editingCol.valueList;
+ }
+ refreshGrid.execute();
+ hide();
+ }
+ });
+ addAttribute("", apply);
+
+ }
+
+ private void showFieldChange() {
+ final FormStylePopup pop = new FormStylePopup();
+ pop.setModal(false);
+ String[] fields = this.sce.getFieldCompletions(this.editingCol.factType);
+ final ListBox box = new ListBox();
+ for (int i = 0; i < fields.length; i++) {
+ box.addItem(fields[i]);
+ }
+ pop.addAttribute("Field:", box);
+ Button b = new Button("OK");
+ pop.addAttribute("", b);
+ b.addClickListener(new ClickListener() {
+ public void onClick(Widget w) {
+ editingCol.factField = box.getItemText(box.getSelectedIndex());
+ editingCol.type = sce.getFieldType(editingCol.factType, editingCol.factField);
+ doFieldLabel();
+ pop.hide();
+ }
+ });
+ pop.show();
+
+ }
+
+ private void doFieldLabel() {
+ if (nil(this.editingCol.factField)) {
+ fieldLabel.setText("(please choose fact type)");
+ } else {
+ fieldLabel.setText(editingCol.factField);
+ }
+
+ }
+
+ private boolean nil(String s) {
+ return s == null || s.equals("");
+ }
+
+ private void doPatternLabel() {
+ if (this.editingCol.factType != null) {
+ this.patternLabel.setText(this.editingCol.factType + " [" + editingCol.boundName + "]");
+ }
+ }
+
+ protected void showChangePattern(Widget w) {
+
+ final ListBox pats = this.loadPatterns();
+ if (pats.getItemCount() == 0) {
+ showNewPatternDialog();
+ return;
+ }
+ final FormStylePopup pop = new FormStylePopup();
+ Button ok = new Button("OK");
+ HorizontalPanel hp = new HorizontalPanel();
+ hp.add(pats);
+ hp.add(ok);
+
+
+ pop.addAttribute("Choose existing pattern to add column to:", hp);
+ pop.addAttribute("", new HTML("<i><b>---OR---</i></b>"));
+
+ Button createPattern = new Button("Create new fact pattern");
+ createPattern.addClickListener(new ClickListener() {
+ public void onClick(Widget w) {
+ pop.hide();
+ showNewPatternDialog();
+ }
+ });
+ pop.addAttribute("", createPattern);
+
+
+
+
+ ok.addClickListener(new ClickListener() {
+ public void onClick(Widget w) {
+ String[] val = pats.getValue(pats.getSelectedIndex()).split("\\s");
+ editingCol.factType = val[0];
+ editingCol.boundName = val[1];
+ doPatternLabel();
+ pop.hide();
+ }
+ });
+
+ pop.show();
+ }
+
+ protected void showNewPatternDialog() {
+ final FormStylePopup pop = new FormStylePopup();
+ pop.setTitle("New fact - select the type");
+ final ListBox types = new ListBox();
+ for (int i = 0; i < sce.factTypes.length; i++) {
+ types.addItem(sce.factTypes[i]);
+ }
+ pop.addAttribute("Fact type:", types);
+ final TextBox binding = new TextBox();
+ pop.addAttribute("name:", binding);
+
+ Button ok = new Button("OK");
+ ok.addClickListener(new ClickListener() {
+ public void onClick(Widget w) {
+ editingCol.boundName = binding.getText();
+ editingCol.factType = types.getItemText(types.getSelectedIndex());
+ doPatternLabel();
+ pop.hide();
+ }
+ });
+ pop.addAttribute("", ok);
+
+ pop.show();
+ }
+
+ private ListBox loadPatterns() {
+ Set vars = new HashSet();
+ ListBox patterns = new ListBox();
+ for (int i = 0; i < dt.conditionCols.size(); i++) {
+ ActionCol col = (ActionCol) dt.actionCols.get(i);
+ if (col instanceof ActionInsertFactCol) {
+ ActionInsertFactCol c = (ActionInsertFactCol) col;
+ if (!vars.contains(c.boundName)) {
+ patterns.addItem(c.factType + " [" + c.boundName + "]", c.factType + " " + c.boundName);
+ vars.add(c.boundName);
+ }
+ }
+ }
+
+ return patterns;
+
+ }
+
+
+
+}
Modified: labs/jbossrules/branches/fixing_bad_merge/drools-jbrms/src/main/java/org/drools/brms/client/decisiontable/ActionSetColumn.java
===================================================================
--- labs/jbossrules/branches/fixing_bad_merge/drools-jbrms/src/main/java/org/drools/brms/client/decisiontable/ActionSetColumn.java 2008-03-19 13:48:32 UTC (rev 19116)
+++ labs/jbossrules/branches/fixing_bad_merge/drools-jbrms/src/main/java/org/drools/brms/client/decisiontable/ActionSetColumn.java 2008-03-19 13:49:36 UTC (rev 19117)
@@ -6,6 +6,7 @@
import org.drools.brms.client.common.FormStylePopup;
import org.drools.brms.client.common.ImageButton;
+import org.drools.brms.client.common.InfoPopup;
import org.drools.brms.client.common.SmallLabel;
import org.drools.brms.client.modeldriven.SuggestionCompletionEngine;
import org.drools.brms.client.modeldriven.dt.ActionSetFieldCol;
@@ -39,6 +40,7 @@
editingCol.factField = col.factField;
editingCol.header = col.header;
editingCol.type = col.type;
+ editingCol.valueList = col.valueList;
super.setModal(false);
setTitle("Column configuration (set a field on a fact)");
@@ -74,6 +76,18 @@
addAttribute("Field:", field);
doFieldLabel();
+ final TextBox valueList = new TextBox();
+ valueList.setText(editingCol.valueList);
+ valueList.addChangeListener(new ChangeListener() {
+ public void onChange(Widget w) {
+ editingCol.valueList = valueList.getText();
+ }
+ });
+ HorizontalPanel vl = new HorizontalPanel();
+ vl.add(valueList);
+ vl.add(new InfoPopup("Value list", "Value lists are an optional comma separated list of values to show as a drop down."));
+ addAttribute("(optional) value list:", vl);
+
Button apply = new Button("Apply changes");
apply.addClickListener(new ClickListener() {
public void onClick(Widget w) {
@@ -85,6 +99,7 @@
col.factField = editingCol.factField;
col.header = editingCol.header;
col.type = editingCol.type;
+ col.valueList = editingCol.valueList;
}
refreshGrid.execute();
hide();
@@ -142,7 +157,7 @@
final FormStylePopup pop = new FormStylePopup();
final ListBox pats = this.loadBoundFacts();
- pop.addAttribute("Choose fact to set field of:", pats);
+ pop.addAttribute("Choose fact:", pats);
Button ok = new Button("OK");
pop.addAttribute("", ok);
@@ -172,6 +187,11 @@
box.addItem(b);
}
+ String[] globs = this.sce.getGlobalVariables();
+ for (int i = 0; i < globs.length; i++) {
+ box.addItem(globs[i]);
+ }
+
return box;
}
Modified: labs/jbossrules/branches/fixing_bad_merge/drools-jbrms/src/main/java/org/drools/brms/client/decisiontable/GuidedDTColumnConfig.java
===================================================================
--- labs/jbossrules/branches/fixing_bad_merge/drools-jbrms/src/main/java/org/drools/brms/client/decisiontable/GuidedDTColumnConfig.java 2008-03-19 13:48:32 UTC (rev 19116)
+++ labs/jbossrules/branches/fixing_bad_merge/drools-jbrms/src/main/java/org/drools/brms/client/decisiontable/GuidedDTColumnConfig.java 2008-03-19 13:49:36 UTC (rev 19117)
@@ -1,7 +1,11 @@
package org.drools.brms.client.decisiontable;
+import java.util.HashSet;
+import java.util.Set;
+
import org.drools.brms.client.common.FormStylePopup;
import org.drools.brms.client.common.ImageButton;
+import org.drools.brms.client.common.InfoPopup;
import org.drools.brms.client.common.SmallLabel;
import org.drools.brms.client.modeldriven.HumanReadable;
import org.drools.brms.client.modeldriven.SuggestionCompletionEngine;
@@ -50,6 +54,7 @@
editingCol.factType = col.factType;
editingCol.header = col.header;
editingCol.operator = col.operator;
+ editingCol.valueList = col.valueList;
setTitle("Condition column configuration");
@@ -142,13 +147,23 @@
addAttribute("Operator:", operator);
doOperatorLabel();
+ final TextBox valueList = new TextBox();
+ valueList.setText(editingCol.valueList);
+ valueList.addChangeListener(new ChangeListener() {
+ public void onChange(Widget w) {
+ editingCol.valueList = valueList.getText();
+ }
+ });
+ HorizontalPanel vl = new HorizontalPanel();
+ vl.add(valueList);
+ vl.add(new InfoPopup("Value list", "Value lists are an optional comma separated list of values to show as a drop down."));
+ addAttribute("(optional) value list:", vl);
Button apply = new Button("Apply changes");
apply.addClickListener(new ClickListener() {
public void onClick(Widget w) {
if (isNew) {
dt.conditionCols.add(editingCol);
-
} else {
col.boundName = editingCol.boundName;
col.constraintValueType = editingCol.constraintValueType;
@@ -156,7 +171,7 @@
col.factType = editingCol.factType;
col.header = editingCol.header;
col.operator = editingCol.operator;
-
+ col.valueList = editingCol.valueList;
}
refreshGrid.execute();
hide();
@@ -194,6 +209,7 @@
private void showOperatorChange() {
final FormStylePopup pop = new FormStylePopup();
+ pop.setTitle("Set the operator");
pop.setModal(false);
String[] ops = this.sce.getOperatorCompletions(editingCol.factType, editingCol.factField);
final ListBox box = new ListBox();
@@ -331,10 +347,14 @@
}
private ListBox loadPatterns() {
+ Set vars = new HashSet();
ListBox patterns = new ListBox();
for (int i = 0; i < dt.conditionCols.size(); i++) {
ConditionCol c = (ConditionCol) dt.conditionCols.get(i);
- patterns.addItem(c.factType + " [" + c.boundName + "]", c.factType + " " + c.boundName);
+ if (!vars.contains(c.boundName)) {
+ patterns.addItem(c.factType + " [" + c.boundName + "]", c.factType + " " + c.boundName);
+ vars.add(c.boundName);
+ }
}
return patterns;
Modified: labs/jbossrules/branches/fixing_bad_merge/drools-jbrms/src/main/java/org/drools/brms/client/decisiontable/GuidedDecisionTableWidget.java
===================================================================
--- labs/jbossrules/branches/fixing_bad_merge/drools-jbrms/src/main/java/org/drools/brms/client/decisiontable/GuidedDecisionTableWidget.java 2008-03-19 13:48:32 UTC (rev 19116)
+++ labs/jbossrules/branches/fixing_bad_merge/drools-jbrms/src/main/java/org/drools/brms/client/decisiontable/GuidedDecisionTableWidget.java 2008-03-19 13:49:36 UTC (rev 19117)
@@ -1,18 +1,24 @@
package org.drools.brms.client.decisiontable;
+import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
+import java.util.Map;
import org.drools.brms.client.common.FormStylePopup;
import org.drools.brms.client.common.ImageButton;
+import org.drools.brms.client.common.PrettyFormLayout;
import org.drools.brms.client.common.SmallLabel;
import org.drools.brms.client.modeldriven.SuggestionCompletionEngine;
import org.drools.brms.client.modeldriven.brl.ISingleFieldConstraint;
import org.drools.brms.client.modeldriven.dt.ActionCol;
+import org.drools.brms.client.modeldriven.dt.ActionInsertFactCol;
import org.drools.brms.client.modeldriven.dt.ActionSetFieldCol;
import org.drools.brms.client.modeldriven.dt.AttributeCol;
import org.drools.brms.client.modeldriven.dt.ConditionCol;
+import org.drools.brms.client.modeldriven.dt.DTColumnConfig;
import org.drools.brms.client.modeldriven.dt.GuidedDecisionTable;
+import org.drools.brms.client.modeldriven.ui.ActionValueEditor;
import org.drools.brms.client.packages.SuggestionCompletionCache;
import org.drools.brms.client.rpc.RuleAsset;
@@ -20,6 +26,7 @@
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.ClickListener;
import com.google.gwt.user.client.ui.Composite;
+import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.KeyboardListener;
@@ -39,7 +46,6 @@
import com.gwtext.client.data.SortState;
import com.gwtext.client.data.Store;
import com.gwtext.client.data.StringFieldDef;
-import com.gwtext.client.widgets.Component;
import com.gwtext.client.widgets.Panel;
import com.gwtext.client.widgets.Toolbar;
import com.gwtext.client.widgets.ToolbarMenuButton;
@@ -54,6 +60,7 @@
import com.gwtext.client.widgets.grid.GroupingView;
import com.gwtext.client.widgets.grid.Renderer;
import com.gwtext.client.widgets.grid.event.GridCellListenerAdapter;
+import com.gwtext.client.widgets.grid.event.GridColumnListenerAdapter;
import com.gwtext.client.widgets.menu.BaseItem;
import com.gwtext.client.widgets.menu.Item;
import com.gwtext.client.widgets.menu.Menu;
@@ -73,10 +80,13 @@
private VerticalPanel conditionsConfigWidget;
private String packageName;
private VerticalPanel actionsConfigWidget;
+ private Map colMap;
+ private SuggestionCompletionEngine sce;
public GuidedDecisionTableWidget(RuleAsset asset) {
+
this.dt = (GuidedDecisionTable) asset.content;
this.packageName = asset.metaData.packageName;
@@ -96,6 +106,7 @@
attributes.setFrame(true);
attributes.add(getAttributes());
+ attributes.setCollapsed(dt.attributeCols.size() == 0);
config.add(attributes);
@@ -139,8 +150,36 @@
}
- private Widget editAction(ActionCol c) {
- return new Image("images/edit.gif");
+ private Widget editAction(final ActionCol c) {
+ return new ImageButton("images/edit.gif", "Edit this action column configuration", new ClickListener() {
+ public void onClick(Widget w) {
+ if (c instanceof ActionSetFieldCol) {
+ ActionSetFieldCol asf = (ActionSetFieldCol) c;
+ ActionSetColumn ed = new ActionSetColumn(getSCE(), dt, new Command() {
+ public void execute() {
+ scrapeData(-1);
+ refreshGrid();
+ refreshActionsWidget();
+ }
+ }
+ , asf, false);
+ ed.show();
+ } else if (c instanceof ActionInsertFactCol) {
+ ActionInsertFactCol asf = (ActionInsertFactCol) c;
+ ActionInsertColumn ed = new ActionInsertColumn(getSCE(), dt, new Command() {
+ public void execute() {
+ scrapeData(-1);
+ refreshGrid();
+ refreshActionsWidget();
+ }
+ }
+ , asf, false);
+ ed.show();
+ }
+
+ }
+ });
+
}
private Widget newAction() {
@@ -152,7 +191,6 @@
final ListBox choice = new ListBox();
choice.addItem("Set the value of a field", "set");
choice.addItem("Set the value of a field on a new fact", "insert");
- choice.addItem("Retract an existing fact", "retract");
Button ok = new Button("OK");
ok.addClickListener(new ClickListener() {
public void onClick(Widget w) {
@@ -161,41 +199,35 @@
showSet();
} else if (s.equals("insert")) {
showInsert();
- } else if (s.equals("retract")) {
- showRetract();
}
pop.hide();
}
- private void showRetract() {
- // TODO Auto-generated method stub
-
- }
-
private void showInsert() {
- // TODO Auto-generated method stub
-
+ ActionInsertColumn ins = new ActionInsertColumn(getSCE(), dt, new Command() {
+ public void execute() { newActionAdded(); }
+ }, new ActionInsertFactCol(), true);
+ ins.show();
}
private void showSet() {
ActionSetColumn set = new ActionSetColumn(getSCE(), dt, new Command() {
- public void execute() {
- //want to add in a blank row into the data
- scrapeData(dt.attributeCols.size() + dt.conditionCols.size() + dt.actionCols.size() + 1);
- refreshGrid();
- refreshActionsWidget();
- }
+ public void execute() { newActionAdded(); }
}, new ActionSetFieldCol(), true);
set.show();
}
+
+ private void newActionAdded() {
+ //want to add in a blank row into the data
+ scrapeData(dt.attributeCols.size() + dt.conditionCols.size() + dt.actionCols.size() + 1);
+ refreshGrid();
+ refreshActionsWidget();
+
+ }
});
-
pop.addAttribute("Type of action column:", choice);
-
pop.addAttribute("", ok);
-
pop.show();
-
}
});
@@ -274,8 +306,11 @@
});
}
- protected SuggestionCompletionEngine getSCE() {
- return SuggestionCompletionCache.getInstance().getEngineFromCache(this.packageName);
+ private SuggestionCompletionEngine getSCE() {
+ if (sce == null) {
+ this.sce = SuggestionCompletionCache.getInstance().getEngineFromCache(this.packageName);
+ }
+ return sce;
}
private Widget removeCondition(final ConditionCol c) {
@@ -444,14 +479,31 @@
if (layout.getWidgetCount() > 1) {
layout.remove(1);
}
- grid = doGrid();
- layout.add(grid);
+ if (dt.actionCols.size() == 0 && dt.conditionCols.size() == 0 && dt.actionCols.size() == 0) {
+ VerticalPanel vp = new VerticalPanel();
+ vp.setWidth("100%");
+ PrettyFormLayout pfl = new PrettyFormLayout();
+ pfl.startSection();
+ pfl.addRow(new HTML("<img src='images/information.gif'/> Configure the columns first, then add rows (rules)."));
+
+ pfl.endSection();
+ vp.add(pfl);
+ grid = doGrid();
+ vp.add(grid);
+ layout.add(vp);
+
+ } else {
+ grid = doGrid();
+ layout.add(grid);
+ }
}
private GridPanel doGrid() {
fds = new FieldDef[dt.attributeCols.size() + dt.actionCols.size() + dt.conditionCols.size() + 2]; //its +2 as we have counter and description data
+ colMap = new HashMap();
+
fds[0] = new StringFieldDef("num");
fds[1] = new StringFieldDef("desc");
@@ -492,8 +544,13 @@
setHeader(attr.attr);
setDataIndex(attr.attr);
setSortable(true);
+ if (attr.width != -1) {
+ setWidth(attr.width);
+ }
+
}
};
+ colMap.put(attr.attr, attr);
colCount++;
}
@@ -508,8 +565,12 @@
setHeader(c.header);
setDataIndex(c.header);
setSortable(true);
+ if (c.width != -1) {
+ setWidth(c.width);
+ }
}
};
+ colMap.put(c.header, c);
colCount++;
}
@@ -544,8 +605,12 @@
setDataIndex(c.header);
//and here we do the appropriate editor
setSortable(true);
+ if (c.width != -1) {
+ setWidth(-1);
+ }
}
};
+ colMap.put(c.header, c);
colCount++;
}
@@ -554,8 +619,6 @@
MemoryProxy proxy = new MemoryProxy( dt.data );
-
-
ColumnModel cm = new ColumnModel(cols);
final GroupingStore store = new GroupingStore();
store.setReader(reader);
@@ -586,38 +649,37 @@
public void onCellDblClick(GridPanel grid, int rowIndex,
int colIndex, EventObject e) {
- final String dta = grid.getColumnModel().getDataIndex(colIndex);
-
+ final String dataIdx = grid.getColumnModel().getDataIndex(colIndex);
final Record r = store.getAt(rowIndex);
+ String val = r.getAsString(dataIdx);
+ DTColumnConfig colConf = (DTColumnConfig) colMap.get(dataIdx);
+ String[] vals = dt.getValueList(colConf, getSCE());
+ if (vals.length == 0) {
+ showTextEditor(e, dataIdx, r, val, colConf);
+ } else {
+ showDropDownEditor(e, dataIdx, r, val, vals);
+ }
- String val = r.getAsString(dta);
+ //box.setFocus(true);
- final Window w = new Window();
- w.setWidth(168);
- w.setAutoDestroy(true);
- final TextBox box = new TextBox();
- box.setText(val);
- box.addKeyboardListener(new KeyboardListenerAdapter() {
- public void onKeyUp(Widget sender, char keyCode,
- int modifiers) {
- if (keyCode == KeyboardListener.KEY_ENTER) {
- r.set(dta, box.getText());
- w.destroy();
- }
- }
- });
- Panel p = new Panel();
- p.add(box);
- w.add(p);
- w.setBorder(false);
+ }
- w.setPosition(e.getPageX(), e.getPageY());
- w.show();
- //box.setFocus(true);
+ });
-
+ //remember any size changes
+ grid.addGridColumnListener(new GridColumnListenerAdapter() {
+ public void onColumnResize(GridPanel grid, int colIndex, int newSize) {
+ final String dta = grid.getColumnModel().getDataIndex(colIndex);
+ if (dta.equals("desc")) {
+ dt.descriptionWidth = newSize;
+ } else {
+ if (colMap.containsKey(dta)) {
+ DTColumnConfig col = (DTColumnConfig) colMap.get(dta);
+ col.width = newSize;
+ }
+ }
}
});
@@ -649,11 +711,61 @@
+ return grid;
+ }
- return grid;
+ /**
+ * Show a drop down editor, obviously.
+ */
+
+ private void showDropDownEditor(EventObject e, final String dataIdx, final Record r, String val, String[] vals) {
+ final Window w = new Window();
+ w.setWidth(200);
+ w.setPlain(true);
+ w.setBodyBorder(false);
+ w.setAutoDestroy(true);
+ w.setTitle("Select value for " + dataIdx);
+ final ListBox drop = new ListBox();
+ for (int i = 0; i < vals.length; i++) {
+ String v = vals[i].trim();
+ drop.addItem(v);
+ if (v.equals(val)) {
+ drop.setSelectedIndex(i);
+ }
+ }
+ drop.addKeyboardListener(new KeyboardListenerAdapter() {
+ public void onKeyUp(Widget sender, char keyCode,
+ int modifiers) {
+ if (keyCode == KeyboardListener.KEY_ENTER) {
+ r.set(dataIdx, drop.getItemText(drop.getSelectedIndex()));
+ w.destroy();
+ }
+ }
+ });
+
+
+
+
+ Panel p = new Panel();
+ p.add(drop);
+ w.add(p);
+ w.setBorder(false);
+
+ Button ok = new Button("OK");
+ ok.addClickListener(new ClickListener() {
+ public void onClick(Widget wg) {
+ r.set(dataIdx, drop.getItemText(drop.getSelectedIndex()));
+ w.destroy();
+ }
+ });
+ p.add(ok);
+
+ w.setPosition(e.getPageX(), e.getPageY());
+ w.show();
+
}
private void renumber(Record[] rs) {
@@ -662,4 +774,51 @@
}
}
+
+ /**
+ * Show a plain old text editor for a cell.
+ */
+ private void showTextEditor(EventObject e, final String dta,
+ final Record r, String val, DTColumnConfig colConf) {
+ final Window w = new Window();
+ w.setWidth(200);
+ w.setAutoDestroy(true);
+ w.setPlain(true);
+ w.setBodyBorder(false);
+ w.setTitle("Set value for " + dta);
+ final TextBox box = new TextBox();
+ box.setText(val);
+ box.addKeyboardListener(new KeyboardListenerAdapter() {
+ public void onKeyUp(Widget sender, char keyCode,
+ int modifiers) {
+ if (keyCode == KeyboardListener.KEY_ENTER) {
+ r.set(dta, box.getText());
+ w.destroy();
+ }
+ }
+ });
+
+ if (dt.isNumeric(colConf, getSCE())) {
+ box.addKeyboardListener(ActionValueEditor.getNumericFilter(box));
+ }
+
+ Panel p = new Panel();
+ p.add(box);
+ w.add(p);
+ w.setBorder(false);
+
+ Button ok = new Button("OK");
+ ok.addClickListener(new ClickListener() {
+ public void onClick(Widget wg) {
+ r.set(dta, box.getText());
+ w.destroy();
+ }
+ });
+ p.add(ok);
+
+ w.setPosition(e.getPageX(), e.getPageY());
+ w.show();
+ }
+
+
}
More information about the jboss-svn-commits
mailing list