[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