[jboss-svn-commits] JBL Code SVN: r5942 - in labs/jbossrules/trunk/drools-brms/src/org/drools/brms/client: . rpc rulelist rulenav
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Aug 18 10:09:55 EDT 2006
Author: michael.neale at jboss.com
Date: 2006-08-18 10:09:50 -0400 (Fri, 18 Aug 2006)
New Revision: 5942
Modified:
labs/jbossrules/trunk/drools-brms/src/org/drools/brms/client/Rules.java
labs/jbossrules/trunk/drools-brms/src/org/drools/brms/client/rpc/RepositoryService.java
labs/jbossrules/trunk/drools-brms/src/org/drools/brms/client/rulelist/RuleListView.java
labs/jbossrules/trunk/drools-brms/src/org/drools/brms/client/rulenav/RulesNavigatorTree.java
Log:
proper lazy loading of tree
Modified: labs/jbossrules/trunk/drools-brms/src/org/drools/brms/client/Rules.java
===================================================================
--- labs/jbossrules/trunk/drools-brms/src/org/drools/brms/client/Rules.java 2006-08-18 14:00:29 UTC (rev 5941)
+++ labs/jbossrules/trunk/drools-brms/src/org/drools/brms/client/Rules.java 2006-08-18 14:09:50 UTC (rev 5942)
@@ -70,8 +70,6 @@
public void selected(String selectedPath) {
System.out.println("Selected path: " + selectedPath);
list.loadRulesForCategoryPath(selectedPath);
-
-
}
});
Modified: labs/jbossrules/trunk/drools-brms/src/org/drools/brms/client/rpc/RepositoryService.java
===================================================================
--- labs/jbossrules/trunk/drools-brms/src/org/drools/brms/client/rpc/RepositoryService.java 2006-08-18 14:00:29 UTC (rev 5941)
+++ labs/jbossrules/trunk/drools-brms/src/org/drools/brms/client/rpc/RepositoryService.java 2006-08-18 14:09:50 UTC (rev 5942)
@@ -8,6 +8,23 @@
*/
public interface RepositoryService extends RemoteService {
- public String[] loadChildCategories(String path);
+ /**
+ * @param categoryPath A "/" delimited path to a category.
+ * @param callback
+ */
+ public String[] loadChildCategories(String categoryPath);
+
+ /**
+ * Return a a 2d array/grid of results for rules.
+ * @param A "/" delimited path to a category.
+ * @param status The status flag. Leave blank to be all.
+ */
+ public String[][] loadRuleListForCategories(String categoryPath, String status);
+
+ /**
+ * This will return a TableConfig of header names.
+ * @param listName The name of the list that we are going to render.
+ */
+ public TableConfig loadTableConfig(String listName);
}
Modified: labs/jbossrules/trunk/drools-brms/src/org/drools/brms/client/rulelist/RuleListView.java
===================================================================
--- labs/jbossrules/trunk/drools-brms/src/org/drools/brms/client/rulelist/RuleListView.java 2006-08-18 14:00:29 UTC (rev 5941)
+++ labs/jbossrules/trunk/drools-brms/src/org/drools/brms/client/rulelist/RuleListView.java 2006-08-18 14:09:50 UTC (rev 5942)
@@ -7,12 +7,12 @@
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.Grid;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.SourcesTableEvents;
import com.google.gwt.user.client.ui.TableListener;
+import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
/**
@@ -35,7 +35,7 @@
true );
private int startIndex, selectedRow = -1;
- private FlexTable table = new FlexTable();
+ private Grid table = new Grid();
private HorizontalPanel navBar = new HorizontalPanel();
@@ -75,11 +75,19 @@
navBar.add( innerNavBar );
navBar.setWidth( "100%" );
- //needed for composite to work
- setWidget( table );
-
+ //this is so we can stack controls on top of the table
+ VerticalPanel vert = new VerticalPanel();
+ vert.add( navBar );
+ vert.add( table );
+ vert.setStyleName( "rule-List" );
+ vert.setWidth( "100%" );
+
+ table.setStyleName( "rule-List" );
+ table.setWidth( "100%" );
+
+ // needed for composite to work
+ setWidget( vert );
setStyleName( "rule-List" );
-
initTable();
}
@@ -132,7 +140,10 @@
private void initTable() {
// Create the header row.
- table.setText( 0, 0, "Please wait..." );
+ table.resize( 1, 1 );
+ table.getRowFormatter().setStyleName( 0, "rule-ListHeader" );
+ table.setText( 0, 0, "Please wait..." );
+
service.loadTableConfig( "ruleList", new AsyncCallback() {
public void onFailure(Throwable caught) {
@@ -141,15 +152,17 @@
public void onSuccess(Object result) {
TableConfig config = (TableConfig) result;
+
String[] header = config.headers;
- numberOfColumns = header.length;
+ numberOfColumns = header.length;
+
+ visibleItemCount = config.rowsPerPage;
+ table.resize( visibleItemCount + 1, numberOfColumns);
+
for ( int i = 0; i < numberOfColumns; i++ ) {
table.setText( 0, i, header[i]);
- }
- table.setWidget( 0,
- numberOfColumns,
- navBar );
- visibleItemCount = config.rowsPerPage;
+ }
+
data = new String[1][numberOfColumns];
update();
@@ -157,39 +170,6 @@
});
- table.getRowFormatter().setStyleName( 0,
- "rule-ListHeader" );
-
- // Initialize the rest of the rows. MN: Not sure if I need to do this here or not...
-// for ( int i = 0; i < VISIBLE_ITEM_COUNT; ++i ) {
-// table.setText( i + 1,
-// 0,
-// "" );
-// table.setText( i + 1,
-// 1,
-// "" );
-// table.setText( i + 1,
-// 2,
-// "" );
-// table.setText( i + 1,
-// 3,
-// "" );
-//
-// table.getCellFormatter().setWordWrap( i + 1,
-// 0,
-// false );
-// table.getCellFormatter().setWordWrap( i + 1,
-// 1,
-// false );
-// table.getCellFormatter().setWordWrap( i + 1,
-// 2,
-// false );
-// table.getCellFormatter().setWordWrap( i + 1,
-// 3,
-// false );
-//
-// //table.getFlexCellFormatter().setColSpan(i + 1, 2, 2);
-// }
}
/**
@@ -234,11 +214,12 @@
private void update() {
-
+
if (this.numberOfColumns == -1) {
//if it hasn't been setup, can't load data yet
return;
}
+
// Update the older/newer buttons & label.
int count = data.length;
int max = startIndex + visibleItemCount;
Modified: labs/jbossrules/trunk/drools-brms/src/org/drools/brms/client/rulenav/RulesNavigatorTree.java
===================================================================
--- labs/jbossrules/trunk/drools-brms/src/org/drools/brms/client/rulenav/RulesNavigatorTree.java 2006-08-18 14:00:29 UTC (rev 5941)
+++ labs/jbossrules/trunk/drools-brms/src/org/drools/brms/client/rulenav/RulesNavigatorTree.java 2006-08-18 14:09:50 UTC (rev 5942)
@@ -28,111 +28,108 @@
* navigate the repository.
* Uses the the {@link com.google.gwt.user.client.ui.Tree} widget.
*/
-public class RulesNavigatorTree implements TreeListener {
+public class RulesNavigatorTree
+ implements
+ TreeListener {
+ private Tree navTreeWidget = new Tree();
+ private RepositoryServiceAsync service = RepositoryServiceFactory.getService();
+ private CategorySelectHandler categorySelectHandler;
- private Tree navTreeWidget = new Tree();
- private RepositoryServiceAsync service = RepositoryServiceFactory.getService();
- private TreeItem lastItemChanged = null;
- private CategorySelectHandler categorySelectHandler;
-
- public void setTreeSize(String width) {
- navTreeWidget.setWidth(width);
- }
-
- /** Return the actual widget so the composite can use it */
- public Tree getTree() {
- return navTreeWidget;
- }
-
- public RulesNavigatorTree(CategorySelectHandler handler) {
- this.categorySelectHandler = handler;
- service.loadChildCategories( "", new AsyncCallback() {
+ public void setTreeSize(String width) {
+ navTreeWidget.setWidth( width );
+ }
- public void onFailure(Throwable caught) {
- //TODO: work out how to handle it.
- }
+ /** Return the actual widget so the composite can use it */
+ public Tree getTree() {
+ return navTreeWidget;
+ }
- public void onSuccess(Object result) {
- String[] categories = (String[]) result;
- for ( int i = 0; i < categories.length; i++ ) {
- navTreeWidget.addItem( categories[i] ).addItem( new PendingItem() );
- }
-
- }
-
- });
-
- navTreeWidget.addTreeListener(this);
-
- }
+ public RulesNavigatorTree(CategorySelectHandler handler) {
+ this.categorySelectHandler = handler;
+ service.loadChildCategories( "",
+ new AsyncCallback() {
- public void onShow() {
- //move along... these are not the droids you're looking for...
- }
+ public void onFailure(Throwable caught) {
+ //TODO: work out how to handle it.
+ }
- public void onTreeItemSelected(TreeItem item) {
- this.categorySelectHandler.selected( getPath( item ) );
- }
-
+ public void onSuccess(Object result) {
+ String[] categories = (String[]) result;
+ for ( int i = 0; i < categories.length; i++ ) {
+ navTreeWidget.addItem( categories[i] ).addItem( new PendingItem() );
+ }
- public void onTreeItemStateChanged(TreeItem item) {
- if (notShowing( item )) return;
- if (item == lastItemChanged) return;
- lastItemChanged = item;
- final TreeItem root = item;
-
-
- //walk back up to build a tree
- String categoryPath = getPath( item );
-
- service.loadChildCategories( categoryPath, new AsyncCallback() {
+ }
- public void onFailure(Throwable caught) {
- // TODO Auto-generated method stub
+ } );
+
+ navTreeWidget.addTreeListener( this );
+
+ }
+
+ public void onShow() {
+ //move along... these are not the droids you're looking for...
+ }
+
+ public void onTreeItemSelected(TreeItem item) {
+ this.categorySelectHandler.selected( getPath( item ) );
+ }
+
+ public void onTreeItemStateChanged(TreeItem item) {
+
+ if ( hasBeenLoaded( item ) ) {
+ return;
}
- public void onSuccess(Object result) {
- TreeItem child = root.getChild( 0 );
- if (child instanceof PendingItem) {
- root.removeItem(child);
- }
- String[] list = (String[]) result;
- for ( int i = 0; i < list.length; i++ ) {
- root.addItem( list[i] ).addItem( new PendingItem() );
- }
+ final TreeItem root = item;
+
+ //walk back up to build a tree
+ String categoryPath = getPath( item );
+
+ item.setUserObject( new Boolean( true ) );
+
+ service.loadChildCategories( categoryPath,
+ new AsyncCallback() {
+
+ public void onFailure(Throwable caught) {
+ // TODO Auto-generated method stub
+ }
+
+ public void onSuccess(Object result) {
+ TreeItem child = root.getChild( 0 );
+ if ( child instanceof PendingItem ) {
+ root.removeItem( child );
+ }
+ String[] list = (String[]) result;
+ for ( int i = 0; i < list.length; i++ ) {
+ root.addItem( list[i] ).addItem( new PendingItem() );
+ }
+ }
+
+ } );
+
+ }
+
+ private boolean hasBeenLoaded(TreeItem item) {
+ if ( item.getUserObject() == null ) return false;
+ return (((Boolean) item.getUserObject()).booleanValue());
+ }
+
+ private String getPath(TreeItem item) {
+ String categoryPath = item.getText();
+ TreeItem parent = item.getParentItem();
+ while ( parent != null ) {
+ categoryPath = parent.getText() + "/" + categoryPath;
+ parent = parent.getParentItem();
}
-
- });
-
-
- }
+ return categoryPath;
+ }
-private String getPath(TreeItem item) {
- String categoryPath = item.getText();
- TreeItem parent = item.getParentItem();
- while (parent != null) {
- categoryPath = parent.getText() + "/" + categoryPath;
- parent = parent.getParentItem();
+ private static class PendingItem extends TreeItem {
+ public PendingItem() {
+ super( "Please wait..." );
+ }
}
- return categoryPath;
-}
-private boolean notShowing(TreeItem item) {
- return !item.getState();
}
-
-// private void createItem(Proto proto) {
-// proto.item = new TreeItem(proto.text);
-// proto.item.setUserObject(proto);
-// //if (proto.children != null)
-// proto.item.addItem(new PendingItem());
-// }
-
- private static class PendingItem extends TreeItem {
- public PendingItem() {
- super("Please wait...");
- }
- }
-
-}
More information about the jboss-svn-commits
mailing list