[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