[jboss-svn-commits] JBL Code SVN: r6913 - in labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms: client client/rpc/mock client/rulelist client/table public/images
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Thu Oct 19 11:43:25 EDT 2006
Author: michael.neale at jboss.com
Date: 2006-10-19 11:43:13 -0400 (Thu, 19 Oct 2006)
New Revision: 6913
Added:
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rulelist/RuleItemListViewer.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/images/open_item.gif
Removed:
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rulelist/NewView.java
Modified:
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/Rules.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/Search.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/mock/MockRepositoryServiceAsync.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rulelist/EditItemEvent.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rulelist/RuleListView.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/table/SortableTable.java
Log:
much better table implementation
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/Rules.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/Rules.java 2006-10-19 14:37:28 UTC (rev 6912)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/Rules.java 2006-10-19 15:43:13 UTC (rev 6913)
@@ -9,6 +9,7 @@
import org.drools.brms.client.ruleeditor.NewRuleWizard;
import org.drools.brms.client.ruleeditor.RuleView;
import org.drools.brms.client.rulelist.EditItemEvent;
+import org.drools.brms.client.rulelist.RuleItemListViewer;
import org.drools.brms.client.rulelist.RuleListView;
import com.google.gwt.user.client.ui.Button;
@@ -73,13 +74,26 @@
FlexTable table = new FlexTable();
//setup the list
- final RuleListView list = new RuleListView(new EditItemEvent() {
+// final RuleListView list = new RuleListView(new EditItemEvent() {
+//
+// public void open(String[] rowData) {
+// tab.selectTab( EDITOR_TAB );
+// }
+//
+// });
+
+ final RuleItemListViewer list = new RuleItemListViewer(new EditItemEvent() {
- public void open(String[] rowData) {
- tab.selectTab( EDITOR_TAB );
+ public void open(String key) {
+ System.out.println("opening key " + key);
+ //tab.selectTab( EDITOR_TAB );
+ RuleView view = new RuleView();
+
+ tab.add( view, "Rule: " + key );
+ tab.selectTab( tab.getWidgetIndex( view ) );
}
- });
+ });
//setup the nav, which will drive the list
CategoryExplorerWidget nav = new CategoryExplorerWidget(new CategorySelectHandler() {
@@ -104,6 +118,7 @@
formatter.setRowSpan( 0, 1, 3 );
formatter.setWidth( 0, 0, "30%" );
formatter.setWidth( 0, 1, "70%" );
+
formatter.setHeight( 0, 0, "90%" );
table.setText( 2, 0, "" );
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/Search.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/Search.java 2006-10-19 14:37:28 UTC (rev 6912)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/Search.java 2006-10-19 15:43:13 UTC (rev 6913)
@@ -16,7 +16,7 @@
package org.drools.brms.client;
import org.drools.brms.client.rpc.TableConfig;
-import org.drools.brms.client.rulelist.NewView;
+import org.drools.brms.client.rulelist.RuleItemListViewer;
import org.drools.brms.client.table.SortableTable;
import com.google.gwt.user.client.ui.Image;
@@ -180,8 +180,8 @@
TableConfig conf = new TableConfig();
conf.headers = new String[] {"name", "last modified", "status", "version" };
- NewView view = new NewView(conf);
- initWidget( view );
+// NewView view = new NewView(conf);
+// initWidget( view );
}
public void onShow() {
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/mock/MockRepositoryServiceAsync.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/mock/MockRepositoryServiceAsync.java 2006-10-19 14:37:28 UTC (rev 6912)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/mock/MockRepositoryServiceAsync.java 2006-10-19 15:43:13 UTC (rev 6913)
@@ -2,6 +2,8 @@
import org.drools.brms.client.rpc.RepositoryServiceAsync;
import org.drools.brms.client.rpc.TableConfig;
+import org.drools.brms.client.rpc.TableDataResult;
+import org.drools.brms.client.rpc.TableDataRow;
import com.google.gwt.user.client.Timer;
import com.google.gwt.user.client.rpc.AsyncCallback;
@@ -48,13 +50,22 @@
String status,
AsyncCallback callback) {
log("loading rule list", "for cat path: " + categoryPath);
- String[][] data = { { "Rule 1", "Production", "mark", "2" },
- { "Rule 2", "Production", "mark", "2" },
- { "Rule 3", "Production", "mark", "2" }};
+ TableDataResult result = new TableDataResult();
+ result.numberOfRows = 42;
+ result.data = new TableDataRow[42];
- callback.onSuccess( data );
+ for (int i = 0; i < 42; i++) {
+ TableDataRow row = new TableDataRow();
+ row.key = "woozle";
+ row.values = new String[] {"name", "another", "yeah", "blah"};
+ result.data[i] = row;
+ }
+
+
+ callback.onSuccess( result );
+
}
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rulelist/EditItemEvent.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rulelist/EditItemEvent.java 2006-10-19 14:37:28 UTC (rev 6912)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rulelist/EditItemEvent.java 2006-10-19 15:43:13 UTC (rev 6913)
@@ -1,7 +1,11 @@
package org.drools.brms.client.rulelist;
+/**
+ * This is used by the list view to "open" an item.
+ * @author Michael Neale
+ */
public interface EditItemEvent {
- public void open(String[] rowData);
+ public void open(String key);
}
Deleted: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rulelist/NewView.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rulelist/NewView.java 2006-10-19 14:37:28 UTC (rev 6912)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rulelist/NewView.java 2006-10-19 15:43:13 UTC (rev 6913)
@@ -1,106 +0,0 @@
-package org.drools.brms.client.rulelist;
-
-import org.drools.brms.client.common.ErrorPopup;
-import org.drools.brms.client.rpc.RepositoryServiceFactory;
-import org.drools.brms.client.rpc.TableConfig;
-import org.drools.brms.client.table.SortableTable;
-
-import com.google.gwt.user.client.rpc.AsyncCallback;
-import com.google.gwt.user.client.ui.Composite;
-import com.google.gwt.user.client.ui.FlexTable;
-import com.google.gwt.user.client.ui.HasHorizontalAlignment;
-import com.google.gwt.user.client.ui.HasVerticalAlignment;
-import com.google.gwt.user.client.ui.Label;
-import com.google.gwt.user.client.ui.ScrollPanel;
-import com.google.gwt.user.client.ui.FlexTable.FlexCellFormatter;
-
-/**
- * This is a viewer for viewing a list of rules for editing/selection.
- */
-public class NewView extends Composite {
-
- private FlexTable outer = new FlexTable();
- private SortableTable table;
-
- public NewView(TableConfig conf) {
-
- RepositoryServiceFactory.getService().loadTableConfig( "ruleList",
- new AsyncCallback() {
-
- public void onFailure(Throwable w) {
- ErrorPopup.showMessage( w.getMessage() );
- }
-
- public void onSuccess(Object o) {
- configTable( (TableConfig) o );
- }
-
- } );
-
- init();
-
- }
-
- private void init() {
- FlexCellFormatter formatter = outer.getFlexCellFormatter();
-
- //outer.setStyleName( SortableTable.styleList );
- outer.setWidth( "100%" );
-
- outer.setWidget( 0,
- 0,
- new Label( "left" ) );
- formatter.setAlignment( 0,
- 0,
- HasHorizontalAlignment.ALIGN_LEFT,
- HasVerticalAlignment.ALIGN_MIDDLE );
-
- outer.setWidget( 0,
- 1,
- new Label( "right" ) );
- formatter.setAlignment( 0,
- 1,
- HasHorizontalAlignment.ALIGN_RIGHT,
- HasVerticalAlignment.ALIGN_MIDDLE );
-
- initWidget( outer );
- }
-
- private void configTable(TableConfig conf) {
- FlexCellFormatter formatter = outer.getFlexCellFormatter();
- table = new SortableTable( 50,
- conf.headers.length + 1 );
- table.setHiddenColumn( 0 );
- table.addColumnHeader( "",
- 0 );
- table.setWidth( "100%" );
-
- for ( int i = 0; i < conf.headers.length; i++ ) {
- table.addColumnHeader( conf.headers[i],
- i + 1 );
- }
-
- ScrollPanel scroll = new ScrollPanel();
-
- scroll.setScrollPosition( 1000 );
- scroll.setAlwaysShowScrollBars( true );
- scroll.add( table );
-
- outer.setWidget( 1,
- 0,
- scroll );
- formatter.setColSpan( 1,
- 0,
- 2 );
- for (int i = 1; i < 40; i++) {
- table.setValue( i, 0, "KEY" );
- table.setValue( i, 1, "yeah1" );
- table.setValue( i, 2, "yeah2" );
- table.setValue( i, 3, "yeah3" );
- table.setValue( i, 4, "yeah4" );
-
-
- }
- }
-
-}
Copied: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rulelist/RuleItemListViewer.java (from rev 6907, labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rulelist/NewView.java)
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rulelist/NewView.java 2006-10-19 00:32:57 UTC (rev 6907)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rulelist/RuleItemListViewer.java 2006-10-19 15:43:13 UTC (rev 6913)
@@ -0,0 +1,189 @@
+package org.drools.brms.client.rulelist;
+
+import org.drools.brms.client.common.ErrorPopup;
+import org.drools.brms.client.rpc.RepositoryServiceFactory;
+import org.drools.brms.client.rpc.TableConfig;
+import org.drools.brms.client.rpc.TableDataResult;
+import org.drools.brms.client.rpc.TableDataRow;
+import org.drools.brms.client.table.SortableTable;
+
+import com.google.gwt.user.client.rpc.AsyncCallback;
+import com.google.gwt.user.client.ui.ClickListener;
+import com.google.gwt.user.client.ui.Composite;
+import com.google.gwt.user.client.ui.FlexTable;
+import com.google.gwt.user.client.ui.HasHorizontalAlignment;
+import com.google.gwt.user.client.ui.HasVerticalAlignment;
+import com.google.gwt.user.client.ui.HorizontalPanel;
+import com.google.gwt.user.client.ui.Image;
+import com.google.gwt.user.client.ui.Label;
+import com.google.gwt.user.client.ui.Widget;
+import com.google.gwt.user.client.ui.FlexTable.FlexCellFormatter;
+
+/**
+ * This is a viewer for viewing a list of rules for editing/selection.
+ * This uses the sortable table widget, and
+ */
+public class RuleItemListViewer extends Composite {
+
+ private FlexTable outer = new FlexTable();
+ private SortableTable table;
+ private TableConfig tableConfig;
+ private EditItemEvent openItemEvent;
+ private String currentSelectedPath;
+
+ public RuleItemListViewer(EditItemEvent event) {
+
+ init();
+
+ RepositoryServiceFactory.getService().loadTableConfig( "ruleList",
+ new AsyncCallback() {
+
+ public void onFailure(Throwable w) {
+ ErrorPopup.showMessage( w.getMessage() );
+ }
+
+ public void onSuccess(Object o) {
+ tableConfig = (TableConfig) o;
+ doTable( null );
+ }
+
+ } );
+
+ this.openItemEvent = event;
+
+ }
+
+ /**
+ * Initialise the widget goodness.
+ */
+ private void init() {
+ FlexCellFormatter formatter = outer.getFlexCellFormatter();
+
+ //outer.setStyleName( SortableTable.styleList );
+ outer.setWidth( "100%" );
+
+ formatter.setAlignment( 0,
+ 0,
+ HasHorizontalAlignment.ALIGN_LEFT,
+ HasVerticalAlignment.ALIGN_MIDDLE );
+
+ Image openIcon = new Image( "images/open_item.gif" );
+ openIcon.addClickListener( new ClickListener() {
+ public void onClick(Widget w) {
+ openItemEvent.open( table.getSelectedKey() );
+ }
+ } );
+ openIcon.setTitle( "Open item" );
+
+ outer.setWidget( 0,
+ 1,
+ openIcon );
+ formatter.setAlignment( 0,
+ 1,
+ HasHorizontalAlignment.ALIGN_RIGHT,
+ HasVerticalAlignment.ALIGN_MIDDLE );
+
+ initWidget( outer );
+ }
+
+ /**
+ * This will create a table, and load the data, wrapping it in a scrolling area.
+ * If the data is null, it will just fill it in with something empty
+ * so it looks busy.
+ *
+ * This could probably clear the table, but I just throw it away
+ * let the garbage collector do the hard work.
+ *
+ */
+ private void doTable(TableDataResult data) {
+ FlexCellFormatter formatter = outer.getFlexCellFormatter();
+ outer.setWidget( 1,
+ 0,
+ null );
+
+ if ( data == null ) {
+ table = new SortableTable( 100,
+ this.tableConfig.headers.length + 1 );
+ table.setValue( 1,
+ 1,
+ "" );
+ } else {
+ table = new SortableTable( data.numberOfRows,
+ this.tableConfig.headers.length + 1 );
+ for ( int i = 0; i < data.data.length; i++ ) {
+ TableDataRow row = data.data[i];
+ table.setValue( i + 1,
+ 0,
+ row.key );
+ for ( int j = 0; j < row.values.length; j++ ) {
+ String val = row.values[j];
+ table.setValue( i + 1,
+ j + 1,
+ val );
+ }
+ }
+
+ //now the refresh icon and the number of rows.
+ Image refreshIcon = new Image("images/refresh.gif");
+ refreshIcon.addClickListener( new ClickListener() {
+ public void onClick(Widget w) {
+ loadRulesForCategoryPath( currentSelectedPath );
+ }
+ });
+ refreshIcon.setTitle( "Refresh current list. Will show any changes." );
+
+
+ HorizontalPanel panel = new HorizontalPanel();
+ panel.add( refreshIcon );
+ panel.add( new Label( " " + data.numberOfRows + " items." ));
+
+ outer.setWidget( 0,
+ 0,
+ panel);
+ }
+
+ //setup the "key" column
+ table.setHiddenColumn( 0 );
+ table.addColumnHeader( "",
+ 0 );
+ table.setWidth( "100%" );
+
+ //add the headers
+ for ( int i = 0; i < this.tableConfig.headers.length; i++ ) {
+ table.addColumnHeader( this.tableConfig.headers[i],
+ i + 1 );
+ }
+
+ outer.setWidget( 1,
+ 0,
+ table );
+ formatter.setColSpan( 1,
+ 0,
+ 2 );
+
+ }
+
+ /**
+ * This is called to tell the widget to reload itself for the given cat path.
+ */
+ public void loadRulesForCategoryPath(final String selectedPath) {
+
+ this.currentSelectedPath = selectedPath;
+ RepositoryServiceFactory.getService().loadRuleListForCategories( selectedPath,
+ "",
+ new AsyncCallback() {
+
+ public void onFailure(Throwable t) {
+ ErrorPopup.showMessage( t.getMessage() );
+ }
+
+ public void onSuccess(Object o) {
+ TableDataResult result = (TableDataResult) o;
+ doTable( result );
+ }
+
+ } );
+
+ }
+
+}
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rulelist/RuleListView.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rulelist/RuleListView.java 2006-10-19 14:37:28 UTC (rev 6912)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rulelist/RuleListView.java 2006-10-19 15:43:13 UTC (rev 6913)
@@ -17,6 +17,12 @@
import com.google.gwt.user.client.ui.Widget;
/**
+ * NOTE: this is not currently used, but it worked OK.
+ * It did NOT have sorting, but did have paging, and performed reasonably well.
+ *
+ * SO KEEP THIS AROUND IN CASE THE OTHER ONE BLOWS CHUNKS !
+ * This one is based on the mail app example.
+ *
* A composite that displays an explorer and a list view.
*/
public class RuleListView extends Composite
@@ -133,7 +139,7 @@
*/
private void openEditor() {
if (selectedRow < data.length) {
- this.editEvent.open( data[selectedRow] );
+ this.editEvent.open( data[selectedRow][0] );
}
}
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/table/SortableTable.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/table/SortableTable.java 2006-10-19 14:37:28 UTC (rev 6912)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/table/SortableTable.java 2006-10-19 15:43:13 UTC (rev 6913)
@@ -21,6 +21,7 @@
public static String styleListHeader = "rule-ListHeader";
public static String styleSelectedRow = "rule-SelectedRow";
public static String styleEvenRow = "rule-ListEvenRow";
+
public static String styleList = "rule-List";
@@ -92,9 +93,8 @@
}
//and do the zebra striping
- if (rowIndex % 2 == 0) {
- getCellFormatter().setStyleName( rowIndex, colIndex, styleEvenRow );
- }
+ resetStyle( rowIndex,
+ colIndex );
if((rowIndex-1) >= this.tableRows.size() || null == tableRows.get(rowIndex-1)){
tableRows.add(rowIndex-1, new RowData());
@@ -102,13 +102,20 @@
RowData rowData = (RowData)this.tableRows.get(rowIndex-1);
rowData.addColumnValue(colIndex, value);
- this.setHTML(rowIndex, colIndex, "" + value.toString()+ "");
+ this.setText(rowIndex, colIndex, "" + value.toString()+ "");
//and hiding the required column
if (colIndex == hideColumnIndex) {
getCellFormatter().setVisible( rowIndex, colIndex, false );
}
}
+
+ private void resetStyle(int rowIndex,
+ int colIndex) {
+ if (rowIndex % 2 == 0) {
+ getCellFormatter().setStyleName( rowIndex, colIndex, styleEvenRow );
+ }
+ }
/** This performs the sorting */
@@ -144,8 +151,17 @@
*/
private void styleSelectedRow(int row) {
if (row != 0) {
- getRowFormatter().addStyleName( row , styleSelectedRow );
- getRowFormatter().removeStyleName( selectedRow, styleSelectedRow );
+ CellFormatter formatter = getCellFormatter();
+ for (int i=1; i < this.getColumnCount(); i++ ) {
+ formatter.setStyleName( row, i, styleSelectedRow );
+
+ if (selectedRow % 2 == 0 && selectedRow != 0) {
+ formatter.setStyleName( selectedRow, i, styleEvenRow );
+ } else {
+ formatter.removeStyleName( selectedRow, i, styleSelectedRow );
+ }
+ }
+
selectedRow = row;
}
}
@@ -156,6 +172,13 @@
public int getSelectedRow() {
return this.selectedRow;
}
+
+ /**
+ * This will return the key of the selected row.
+ */
+ public String getSelectedKey() {
+ return this.getText( selectedRow, this.hideColumnIndex );
+ }
/**
* This actually kicks off the sorting.
@@ -280,7 +303,7 @@
for(int colIndex=0; colIndex<columns.getColumnValues().size(); colIndex++){
Object value = columns.getColumnValue(colIndex);
if(null != value){
- this.setHTML(rowIndex+1, colIndex, value.toString());
+ this.setText(rowIndex+1, colIndex, value.toString());
}
}
}
@@ -291,7 +314,7 @@
for(int colIndex=0; colIndex<columns.getColumnValues().size(); colIndex++){
Object value = columns.getColumnValue(colIndex);
if(null != value){
- this.setHTML(rowNum, colIndex, value.toString());
+ this.setText(rowNum, colIndex, value.toString());
}
}
}
Added: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/images/open_item.gif
===================================================================
(Binary files differ)
Property changes on: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/images/open_item.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
More information about the jboss-svn-commits
mailing list