[jboss-svn-commits] JBL Code SVN: r18690 - in labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client: common and 1 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Wed Mar 5 05:20:50 EST 2008
Author: michael.neale at jboss.com
Date: 2008-03-05 05:20:50 -0500 (Wed, 05 Mar 2008)
New Revision: 18690
Modified:
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/admin/CategoryManager.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/FormStylePopup.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/decisiontable/GuidedDecisionTableWidget.java
Log:
JBRULES-1494 Decision table model
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/admin/CategoryManager.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/admin/CategoryManager.java 2008-03-05 10:16:39 UTC (rev 18689)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/admin/CategoryManager.java 2008-03-05 10:20:50 UTC (rev 18690)
@@ -100,8 +100,9 @@
GuidedDecisionTable dt = new GuidedDecisionTable();
dt.data = new String[][] {
- new String[] {"a", "b", "c"},
- new String[] {"d", "e", "f"}
+ new String[] {"1", "a", "b", "c"},
+ new String[] {"2", "d", "e", "f"},
+ new String[] {"3", "d", "q", "x"}
};
ConditionCol c1 = new ConditionCol();
c1.header = "Driver 1 age";
@@ -115,8 +116,8 @@
a1.header = "Do something !";
dt.actionCols.add(a1);
- initWidget( form );
- //initWidget( new GuidedDecisionTableWidget(dt) );
+ //initWidget( form );
+ initWidget( new GuidedDecisionTableWidget(dt) );
}
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/FormStylePopup.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/FormStylePopup.java 2008-03-05 10:16:39 UTC (rev 18689)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/FormStylePopup.java 2008-03-05 10:20:50 UTC (rev 18690)
@@ -95,4 +95,6 @@
this.dialog.show();
}
+
+
}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/decisiontable/GuidedDecisionTableWidget.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/decisiontable/GuidedDecisionTableWidget.java 2008-03-05 10:16:39 UTC (rev 18689)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/decisiontable/GuidedDecisionTableWidget.java 2008-03-05 10:20:50 UTC (rev 18690)
@@ -5,29 +5,35 @@
import org.drools.brms.client.modeldriven.dt.GuidedDecisionTable;
import com.google.gwt.user.client.ui.Composite;
+import com.google.gwt.user.client.ui.KeyboardListener;
+import com.google.gwt.user.client.ui.KeyboardListenerAdapter;
+import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.VerticalPanel;
+import com.google.gwt.user.client.ui.Widget;
import com.gwtext.client.core.EventObject;
+import com.gwtext.client.core.SortDir;
import com.gwtext.client.data.ArrayReader;
import com.gwtext.client.data.FieldDef;
+import com.gwtext.client.data.GroupingStore;
import com.gwtext.client.data.MemoryProxy;
import com.gwtext.client.data.Record;
import com.gwtext.client.data.RecordDef;
+import com.gwtext.client.data.SortState;
import com.gwtext.client.data.Store;
import com.gwtext.client.data.StringFieldDef;
-import com.gwtext.client.widgets.MessageBox;
+import com.gwtext.client.widgets.Panel;
import com.gwtext.client.widgets.Toolbar;
import com.gwtext.client.widgets.ToolbarMenuButton;
-import com.gwtext.client.widgets.form.TextField;
+import com.gwtext.client.widgets.Window;
import com.gwtext.client.widgets.grid.BaseColumnConfig;
import com.gwtext.client.widgets.grid.CellMetadata;
import com.gwtext.client.widgets.grid.ColumnConfig;
import com.gwtext.client.widgets.grid.ColumnModel;
-import com.gwtext.client.widgets.grid.EditorGridPanel;
-import com.gwtext.client.widgets.grid.GridEditor;
import com.gwtext.client.widgets.grid.GridPanel;
-import com.gwtext.client.widgets.grid.GridView;
+import com.gwtext.client.widgets.grid.GroupingView;
import com.gwtext.client.widgets.grid.Renderer;
import com.gwtext.client.widgets.grid.RowNumberingColumnConfig;
+import com.gwtext.client.widgets.grid.event.GridCellListenerAdapter;
import com.gwtext.client.widgets.menu.BaseItem;
import com.gwtext.client.widgets.menu.Item;
import com.gwtext.client.widgets.menu.Menu;
@@ -40,7 +46,7 @@
public class GuidedDecisionTableWidget extends Composite {
private GuidedDecisionTable dt;
- private boolean DEBUG = false;
+ private boolean DEBUG = true;
public GuidedDecisionTableWidget(GuidedDecisionTable dt) {
@@ -56,33 +62,44 @@
private GridPanel doGrid() {
- FieldDef[] fds = new FieldDef[dt.actionCols.size() + dt.conditionCols.size()];
+ FieldDef[] fds = new FieldDef[dt.actionCols.size() + dt.conditionCols.size() + 1];
- BaseColumnConfig[] cols = new BaseColumnConfig[fds.length + 2];
+ fds[0] = new StringFieldDef("num");
+
+ BaseColumnConfig[] cols = new BaseColumnConfig[fds.length + 1];
if (!DEBUG ) {
cols[0] = new RowNumberingColumnConfig();
} else {
cols[0] = new ColumnConfig() {
{
setDataIndex("num");
- setWidth(5);
+ setWidth(20);
+ setSortable(true);
+ setRenderer(new Renderer() {
+ public String render(Object value,
+ CellMetadata cellMetadata, Record record,
+ int rowIndex, int colNum, Store store) {
+ return "<span class='x-grid3-cell-inner x-grid3-td-numberer'>" + value + "</span>";
+ //return value;
+ }
+ });
}
};
}
+
//do all the condition cols
for (int i = 0; i < dt.conditionCols.size(); i++) {
//here we could also deal with numeric type?
final ConditionCol c = (ConditionCol) dt.conditionCols.get(i);
- fds[i] = new StringFieldDef(c.header);
+ fds[i + 1] = new StringFieldDef(c.header);
cols[i + 1] = new ColumnConfig() {
{
setHeader(c.header);
setDataIndex(c.header);
- //and here we do the appropriate editor
- setEditor(new GridEditor(new TextField()));
+ setSortable(true);
}
};
}
@@ -109,14 +126,14 @@
for (int i = 0; i < dt.actionCols.size(); i++) {
//here we could also deal with numeric type?
final ActionCol c = (ActionCol) dt.actionCols.get(i);
- fds[i + dt.conditionCols.size()] = new StringFieldDef(c.header);
+ fds[i + dt.conditionCols.size() + 1] = new StringFieldDef(c.header);
cols[i + dt.conditionCols.size() + 2] = new ColumnConfig() {
{
setHeader(c.header);
setDataIndex(c.header);
//and here we do the appropriate editor
- setEditor(new GridEditor(new TextField()));
+ setSortable(true);
}
};
}
@@ -129,43 +146,85 @@
ColumnModel cm = new ColumnModel(cols);
- final Store store = new Store(proxy, reader);
+ final GroupingStore store = new GroupingStore();
+ store.setReader(reader);
+ store.setDataProxy(proxy);
+ store.setSortInfo(new SortState("num", SortDir.ASC));
store.load();
- final EditorGridPanel grid = new EditorGridPanel(store, cm);
+ final GridPanel grid = new GridPanel(store, cm);
+ grid.setStripeRows(true);
+
+ GroupingView gv = new GroupingView();
+
//to stretch it out
- GridView gv = new GridView();
gv.setForceFit(true);
+ gv.setGroupTextTpl("{text} ({[values.rs.length]} {[values.rs.length > 1 ? \"Items\" : \"Item\"]})");
+
grid.setView(gv);
+
grid.setStore(store);
grid.setWidth(500);
grid.setHeight(300);
- grid.setClicksToEdit(1);
+
+ grid.addGridCellListener(new GridCellListenerAdapter() {
+ public void onCellDblClick(GridPanel grid, int rowIndex,
+ int colIndex, EventObject e) {
+
+ final String dta = grid.getColumnModel().getDataIndex(colIndex);
+
+ final Record r = store.getAt(rowIndex);
+
+ String val = r.getAsString(dta);
+
+ final Window w = new Window();
+ w.setWidth(170);
+
+ 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);
+
+
+ }
+ });
+
Toolbar tb = new Toolbar();
Menu menu = new Menu();
menu.addItem(new Item("Add row...", new BaseItemListenerAdapter() {
public void onClick(BaseItem item, EventObject e) {
Record r = recordDef.createRecord(new Object[recordDef.getFields().length]);
- grid.stopEditing();
+ r.set("num", store.getRecords().length + 1);
store.add(r);
- grid.startEditing(0, 0);
}
}));
- menu.addItem(new Item("Remove row...", new BaseItemListenerAdapter() {
+ menu.addItem(new Item("Remove selected row...", new BaseItemListenerAdapter() {
public void onClick(BaseItem item, EventObject e) {
- MessageBox.prompt("Line number to delete", "Line #", new MessageBox.PromptCallback() {
- public void execute(String btnID, String text) {
- int i = Integer.parseInt(text);
-
- Record r = store.getAt(i - 1);
- grid.stopEditing();
- store.remove(r);
- grid.startEditing(0, 0);
+ Record[] selected = grid.getSelectionModel().getSelections();
+ if (com.google.gwt.user.client.Window.confirm("Are you sure you want to delete the selected row(s)? ")) {
+ for (int i = 0; i < selected.length; i++) {
+ store.remove(selected[i]);
}
- });
+ renumber(store.getRecords());
+ }
}
}));
ToolbarMenuButton tbb = new ToolbarMenuButton("Modify...", menu);
@@ -177,8 +236,15 @@
+
return grid;
}
+ private void renumber(Record[] rs) {
+ for (int i = 0; i < rs.length; i++) {
+ rs[i].set("num", "" + (i + 1));
+ }
+ }
+
}
More information about the jboss-svn-commits
mailing list