[jboss-svn-commits] JBL Code SVN: r5937 - in labs/jbossrules/trunk/drools-brms/src/org/drools/brms/client: . rpc rpc/mock rulelist rulenav

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Aug 18 06:53:56 EDT 2006


Author: michael.neale at jboss.com
Date: 2006-08-18 06:53:46 -0400 (Fri, 18 Aug 2006)
New Revision: 5937

Added:
   labs/jbossrules/trunk/drools-brms/src/org/drools/brms/client/rpc/TableConfig.java
   labs/jbossrules/trunk/drools-brms/src/org/drools/brms/client/rulelist/RemoveMeData.java
   labs/jbossrules/trunk/drools-brms/src/org/drools/brms/client/rulenav/CategorySelectHandler.java
Removed:
   labs/jbossrules/trunk/drools-brms/src/org/drools/brms/client/rulelist/RuleListData.java
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/rpc/RepositoryServiceAsync.java
   labs/jbossrules/trunk/drools-brms/src/org/drools/brms/client/rpc/mock/MockRepositoryServiceAsync.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:
got lazy loading all working now. 

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 04:16:20 UTC (rev 5936)
+++ labs/jbossrules/trunk/drools-brms/src/org/drools/brms/client/Rules.java	2006-08-18 10:53:46 UTC (rev 5937)
@@ -2,6 +2,7 @@
 
 import org.drools.brms.client.ruleeditor.RuleView;
 import org.drools.brms.client.rulelist.RuleListView;
+import org.drools.brms.client.rulenav.CategorySelectHandler;
 import org.drools.brms.client.rulenav.RulesNavigatorTree;
 
 import com.google.gwt.user.client.ui.HorizontalPanel;
@@ -46,9 +47,15 @@
 
 	private HorizontalPanel doExplore(TabPanel tab) {
 		HorizontalPanel  panel = new HorizontalPanel();
-		RulesNavigatorTree nav = new RulesNavigatorTree();			
+		RulesNavigatorTree nav = new RulesNavigatorTree(new CategorySelectHandler() {
+
+            public void selected(String selectedPath) {
+                System.out.println("Selected path: " + selectedPath);                
+            }
+            
+        });			
 		panel.add(nav.getTree());
-		RuleListView list = new RuleListView(tab);
+		RuleListView list = new RuleListView(tab); //TODO: change this to item select handler
 		panel.add(list);
 		return panel;
 	}

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 04:16:20 UTC (rev 5936)
+++ labs/jbossrules/trunk/drools-brms/src/org/drools/brms/client/rpc/RepositoryService.java	2006-08-18 10:53:46 UTC (rev 5937)
@@ -8,6 +8,6 @@
  */
 public interface RepositoryService extends RemoteService {
 
-    public String myMethod(String blah);
+    public String[] loadChildCategories(String path);
     
 }

Modified: labs/jbossrules/trunk/drools-brms/src/org/drools/brms/client/rpc/RepositoryServiceAsync.java
===================================================================
--- labs/jbossrules/trunk/drools-brms/src/org/drools/brms/client/rpc/RepositoryServiceAsync.java	2006-08-18 04:16:20 UTC (rev 5936)
+++ labs/jbossrules/trunk/drools-brms/src/org/drools/brms/client/rpc/RepositoryServiceAsync.java	2006-08-18 10:53:46 UTC (rev 5937)
@@ -13,9 +13,22 @@
 public interface RepositoryServiceAsync {
 
     /**
-     * @param categoryPath A "/" delimited 
+     * @param categoryPath A "/" delimited path to a category. 
      * @param callback
      */
     public void loadChildCategories(String categoryPath, AsyncCallback callback);
+ 
     
+    /**
+     * 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 void loadRuleListForCategories(String categoryPath, String status, AsyncCallback callback);
+    
+    /**
+     * This will return a TableConfig of header names.
+     * @param listName The name of the list that we are going to render.
+     */
+    public void loadTableConfig(String listName, AsyncCallback callback);
 }

Added: labs/jbossrules/trunk/drools-brms/src/org/drools/brms/client/rpc/TableConfig.java
===================================================================
--- labs/jbossrules/trunk/drools-brms/src/org/drools/brms/client/rpc/TableConfig.java	2006-08-18 04:16:20 UTC (rev 5936)
+++ labs/jbossrules/trunk/drools-brms/src/org/drools/brms/client/rpc/TableConfig.java	2006-08-18 10:53:46 UTC (rev 5937)
@@ -0,0 +1,12 @@
+package org.drools.brms.client.rpc;
+
+import com.google.gwt.user.client.rpc.IsSerializable;
+
+public class TableConfig
+    implements
+    IsSerializable {
+    
+    public String[] headers;
+    public int rowsPerPage;
+
+}

Modified: labs/jbossrules/trunk/drools-brms/src/org/drools/brms/client/rpc/mock/MockRepositoryServiceAsync.java
===================================================================
--- labs/jbossrules/trunk/drools-brms/src/org/drools/brms/client/rpc/mock/MockRepositoryServiceAsync.java	2006-08-18 04:16:20 UTC (rev 5936)
+++ labs/jbossrules/trunk/drools-brms/src/org/drools/brms/client/rpc/mock/MockRepositoryServiceAsync.java	2006-08-18 10:53:46 UTC (rev 5937)
@@ -1,6 +1,7 @@
 package org.drools.brms.client.rpc.mock;
 
 import org.drools.brms.client.rpc.RepositoryServiceAsync;
+import org.drools.brms.client.rpc.TableConfig;
 
 import com.google.gwt.user.client.Timer;
 import com.google.gwt.user.client.rpc.AsyncCallback;
@@ -25,7 +26,7 @@
                 cb.onSuccess( result );                
             }            
         };        
-        t.schedule( 1000 );
+        t.schedule( 500 );
         
     }
     
@@ -34,7 +35,38 @@
     private void log(String serviceName,
                      String message) {
         System.out.println("[" + serviceName + "] " + message);
+    }
+
+
+
+    public void loadRuleListForCategories(String categoryPath,
+                                          String status,
+                                          AsyncCallback callback) {
+        String[][] data = { { "Rule 1", "Production", "mark", "2" },
+                            { "Rule 2", "Production", "mark", "2" },
+                            { "Rule 3", "Production", "mark", "2" }};
+        callback.onSuccess( data );
         
     }
 
+
+
+    public void loadTableConfig(String listName,
+                                AsyncCallback callback) {
+        final TableConfig config = new TableConfig();
+        final AsyncCallback cb = callback;
+        Timer t = new Timer() {
+
+            public void run() {
+                config.headers = new String[] {"name", "status", "last updated by", "version"};
+                config.rowsPerPage = 30;
+                cb.onSuccess( config );
+            }
+            
+        };
+        t.schedule( 300 );
+
+        
+    }
+
 }

Copied: labs/jbossrules/trunk/drools-brms/src/org/drools/brms/client/rulelist/RemoveMeData.java (from rev 5848, labs/jbossrules/trunk/drools-brms/src/org/drools/brms/client/rulelist/RuleListData.java)
===================================================================
--- labs/jbossrules/trunk/drools-brms/src/org/drools/brms/client/rulelist/RuleListData.java	2006-08-14 08:27:51 UTC (rev 5848)
+++ labs/jbossrules/trunk/drools-brms/src/org/drools/brms/client/rulelist/RemoveMeData.java	2006-08-18 10:53:46 UTC (rev 5937)
@@ -0,0 +1,58 @@
+/*
+ * Copyright 2006 Google Inc.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package org.drools.brms.client.rulelist;
+
+
+
+/**
+ * A simple client-side generator of fake email messages.
+ */
+public class RemoveMeData {
+
+  private RuleListItem[] items;
+	
+
+  public RemoveMeData() {
+	  
+	  items = new RuleListItem[42];
+	  
+	  items[0] = new RuleListItem("MyCommunity 97%", "production", "mproctor");
+	  items[1] = new RuleListItem("MyCommunity 100%", "production", "mproctor");
+	  items[2] = new RuleListItem("Autum deals", "draft", "mneale");
+	  items[3] = new RuleListItem("Alan parsons", "draft", "bmchirter");
+	  
+	  
+	  for (int i = 4; i < items.length; i++) {
+		items[i] = new RuleListItem("Dummy rule", "draft", "anon");
+	  }
+	  
+  }
+  
+  
+  public int getMailItemCount() {
+    return items.length;
+  }
+
+  public RuleListItem getMailItem(int index) {
+    if (index >= items.length)
+      return null;
+    return items[index];
+  }
+
+  
+  
+  
+}

Deleted: labs/jbossrules/trunk/drools-brms/src/org/drools/brms/client/rulelist/RuleListData.java
===================================================================
--- labs/jbossrules/trunk/drools-brms/src/org/drools/brms/client/rulelist/RuleListData.java	2006-08-18 04:16:20 UTC (rev 5936)
+++ labs/jbossrules/trunk/drools-brms/src/org/drools/brms/client/rulelist/RuleListData.java	2006-08-18 10:53:46 UTC (rev 5937)
@@ -1,58 +0,0 @@
-/*
- * Copyright 2006 Google Inc.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- * 
- * http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
-package org.drools.brms.client.rulelist;
-
-
-
-/**
- * A simple client-side generator of fake email messages.
- */
-public class RuleListData {
-
-  private RuleListItem[] items;
-	
-
-  public RuleListData() {
-	  
-	  items = new RuleListItem[42];
-	  
-	  items[0] = new RuleListItem("MyCommunity 97%", "production", "mproctor");
-	  items[1] = new RuleListItem("MyCommunity 100%", "production", "mproctor");
-	  items[2] = new RuleListItem("Autum deals", "draft", "mneale");
-	  items[3] = new RuleListItem("Alan parsons", "draft", "bmchirter");
-	  
-	  
-	  for (int i = 4; i < items.length; i++) {
-		items[i] = new RuleListItem("Dummy rule", "draft", "anon");
-	  }
-	  
-  }
-  
-  
-  public int getMailItemCount() {
-    return items.length;
-  }
-
-  public RuleListItem getMailItem(int index) {
-    if (index >= items.length)
-      return null;
-    return items[index];
-  }
-
-  
-  
-  
-}

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 04:16:20 UTC (rev 5936)
+++ labs/jbossrules/trunk/drools-brms/src/org/drools/brms/client/rulelist/RuleListView.java	2006-08-18 10:53:46 UTC (rev 5937)
@@ -1,7 +1,8 @@
 package org.drools.brms.client.rulelist;
 
-
+import org.drools.brms.client.rpc.RepositoryServiceAsync;
 import org.drools.brms.client.rpc.RepositoryServiceFactory;
+import org.drools.brms.client.rpc.TableConfig;
 
 import com.google.gwt.user.client.rpc.AsyncCallback;
 import com.google.gwt.user.client.ui.ClickListener;
@@ -17,187 +18,269 @@
 /**
  * A composite that displays a list of emails that can be selected.
  */
-public class RuleListView extends Composite implements TableListener, ClickListener {
+public class RuleListView extends Composite
+    implements
+    TableListener,
+    ClickListener {
 
-  private static final int EDITOR_TAB = 1;
-  private static final int VISIBLE_ITEM_COUNT = 10;
+    private static final int       EDITOR_TAB         = 1;
+    private int                     visibleItemCount = -1;
 
-  private HTML countLabel = new HTML();
-  private HTML prevButton = new HTML("<a href='javascript:;'>&lt; prev</a>",true);
-  private HTML nextButton = new HTML("<a href='javascript:;'>next &gt;</a>",true);  
-  private HTML editButton = new HTML("<a href='javascript:;'>edit</a>",true);  
-  
-  private int startIndex, selectedRow = -1;
-  private FlexTable table = new FlexTable();
-  private HorizontalPanel navBar = new HorizontalPanel();
-  private TabPanel	tabPanel;
-  private RuleListData data = new RuleListData();
-  
-  public RuleListView(TabPanel tab) {
-	  
-	tabPanel = tab;
-	  
-    // Setup the table.
-    table.setCellSpacing(0);
-    table.setCellPadding(0);
-    table.setWidth("100%");
+    private HTML                   countLabel         = new HTML();
+    private HTML                   prevButton         = new HTML( "<a href='javascript:;'>&lt; prev</a>",
+                                                                  true );
+    private HTML                   nextButton         = new HTML( "<a href='javascript:;'>next &gt;</a>",
+                                                                  true );
+    private HTML                   editButton         = new HTML( "<a href='javascript:;'>edit</a>",
+                                                                  true );
 
-    // Hook up events.
-    table.addTableListener(this);
-    prevButton.addClickListener(this);
-    nextButton.addClickListener(this);
-    editButton.addClickListener(this);
+    private int                    startIndex, selectedRow = -1;
+    private FlexTable              table              = new FlexTable();
+    private HorizontalPanel        navBar             = new HorizontalPanel();
+    private TabPanel               tabPanel;
+    
+    private final RepositoryServiceAsync service;
+    private String[][] data;
+    protected int numberOfColumns;
 
-    // Create the 'navigation' bar at the upper-right.
-    HorizontalPanel innerNavBar = new HorizontalPanel();
-    innerNavBar.setStyleName("rule-ListNavBar");
-    innerNavBar.setSpacing(8);
-    innerNavBar.add(prevButton);
-    innerNavBar.add(countLabel);
-    innerNavBar.add(nextButton);
-    innerNavBar.add(editButton);
+    public RuleListView(TabPanel tab) {
 
-    navBar.setHorizontalAlignment(HorizontalPanel.ALIGN_RIGHT);
-    navBar.add(innerNavBar); 
-    navBar.setWidth("100%");
+        service = RepositoryServiceFactory.getService();
+        tabPanel = tab;
 
-    setWidget(table);
-    setStyleName("rule-List");
+        // Setup the table.
+        table.setCellSpacing( 0 );
+        table.setCellPadding( 0 );
+        table.setWidth( "100%" );
 
-    initTable();
-    update();
-  }
+        // Hook up events.
+        table.addTableListener( this );
+        prevButton.addClickListener( this );
+        nextButton.addClickListener( this );
+        editButton.addClickListener( this );
 
-  public void onCellClicked(SourcesTableEvents sender, int row, int cell) {
-    // Select the row that was clicked (-1 to account for header row).
-    if (row > 0)
-      selectRow(row - 1);
-  }
+        // Create the 'navigation' bar at the upper-right.
+        HorizontalPanel innerNavBar = new HorizontalPanel();
+        innerNavBar.setStyleName( "rule-ListNavBar" );
+        innerNavBar.setSpacing( 8 );
+        innerNavBar.add( prevButton );
+        innerNavBar.add( countLabel );
+        innerNavBar.add( nextButton );
+        innerNavBar.add( editButton );
+        navBar.setHorizontalAlignment( HorizontalPanel.ALIGN_RIGHT );
+        navBar.add( innerNavBar );
+        navBar.setWidth( "100%" );
 
-  public void onClick(Widget sender) {
-    if (sender == nextButton) {
-      // Move forward a page.
-      startIndex += VISIBLE_ITEM_COUNT;
-      if (startIndex >= data.getMailItemCount())
-        startIndex -= VISIBLE_ITEM_COUNT;
-      else {
-        styleRow(selectedRow, false);
-        selectedRow = -1;
-        update();
-      }
-    } else if (sender == prevButton) {
-      // Move back a page.
-      startIndex -= VISIBLE_ITEM_COUNT;
-      if (startIndex < 0)
-        startIndex = 0;
-      else {
-        styleRow(selectedRow, false);
-        selectedRow = -1;
-        update();
-      }
-    } else if (sender == editButton) {    	
-    	changeTabToEdit();
+        //needed for composite to work
+        setWidget( table );
+
+        setStyleName( "rule-List" );
+
+        initTable();
+
     }
-  }
 
-  private void changeTabToEdit() {   
-	tabPanel.selectTab(EDITOR_TAB);	
-  }
+    public void onCellClicked(SourcesTableEvents sender,
+                              int row,
+                              int cell) {
+        // Select the row that was clicked (-1 to account for header row).
+        if ( row > 0 ) selectRow( row - 1 );
+    }
 
-  /**
-   * Initializes the table so that it contains enough rows for a full page of
-   * emails. Also creates the images that will be used as 'read' flags.
-   */
-  private void initTable() {
-    // Create the header row.
-    table.setText(0, 0, "name");
-    table.setText(0, 1, "status");
-    table.setText(0, 2, "last updated by");
-    table.setText(0, 3, "version");
-    table.setWidget(0, 4, navBar); //TODO: maybe put this in a seperate bar not the header
-    table.getRowFormatter().setStyleName(0, "rule-ListHeader");
+    public void onClick(Widget sender) {
+        if ( sender == nextButton ) {
+            // Move forward a page.
+            startIndex += visibleItemCount;
+            if ( startIndex >= data.length ) startIndex -= visibleItemCount;
+            else {
+                styleRow( selectedRow,
+                          false );
+                selectedRow = -1;
+                update();
+            }
+        } else if ( sender == prevButton ) {
+            // Move back a page.
+            startIndex -= visibleItemCount;
+            if ( startIndex < 0 ) startIndex = 0;
+            else {
+                styleRow( selectedRow,
+                          false );
+                selectedRow = -1;
+                update();
+            }
+        } else if ( sender == editButton ) {
+            changeTabToEdit();
+        }
+    }
 
-    // Initialize the rest of the rows.
-    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);
+    private void changeTabToEdit() {
+        tabPanel.selectTab( EDITOR_TAB );
     }
-  }
 
-  /**
-   * Selects the given row (relative to the current page).
-   * 
-   * @param row the row to be selected
-   */
-  private void selectRow(int row) {
+    /**
+     * Initializes the table. Will load the header config, initialise etc.
+     */
+    private void initTable() {
+        // Create the header row.
 
-	//change the style flags
-    styleRow(selectedRow, false);
-    styleRow(row, true);
+        table.setText( 0, 0, "Please wait..." );        
+        service.loadTableConfig( "ruleList", new AsyncCallback() {
 
-    //mark the selected row
-    selectedRow = row;
-    
-    //may also show "preview" view here of rule.
-  }
+            public void onFailure(Throwable caught) {
+                //TODO
+            }
 
-  private void styleRow(int row, boolean selected) {
-    if (row != -1) {
-      if (selected)
-        table.getRowFormatter().addStyleName(row + 1, "rule-SelectedRow");
-      else
-        table.getRowFormatter().removeStyleName(row + 1, "rule-SelectedRow");
+            public void onSuccess(Object result) {
+                TableConfig config = (TableConfig) result;
+                String[] header = config.headers;
+                numberOfColumns = header.length;
+                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();      
+                
+            }
+            
+        });
+        
+        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);
+//        }
     }
-  }
 
-  private void update() {
-    // Update the older/newer buttons & label.
-    int count = data.getMailItemCount();
-    int max = startIndex + VISIBLE_ITEM_COUNT;
-    if (max > count)
-      max = count;
+    /**
+     * Selects the given row (relative to the current page).
+     * 
+     * @param row the row to be selected
+     */
+    private void selectRow(int row) {
 
-    prevButton.setVisible(startIndex != 0);
-    nextButton.setVisible(startIndex + VISIBLE_ITEM_COUNT < count);
-    countLabel.setText("" + (startIndex + 1) + " - " + max + " of " + count);
+        //change the style flags
+        styleRow( selectedRow,
+                  false );
+        styleRow( row,
+                  true );
 
-    // Show the selected emails.
-    int i = 0;
-    for (; i < VISIBLE_ITEM_COUNT; ++i) {
-      // Don't read past the end.
-      if (startIndex + i >= data.getMailItemCount())
-        break;
+        //mark the selected row
+        selectedRow = row;
 
-      RuleListItem item = data.getMailItem(startIndex + i);
+        //TODO: also show "preview" view here of rule.
+        System.out.println("[Preview rule now]");
+    }
 
-      // Add a new row to the table, then set each of its columns to the
-      // email's sender and subject values.
-      table.setText(i + 1, 0, item.name);
-      table.setText(i + 1, 1, item.status);
-      table.setText(i + 1, 2, item.changedBy);
-      table.setText(i + 1, 3, item.version);
+    private void styleRow(int row,
+                          boolean selected) {
+        if ( row != -1 ) {
+            if ( selected ) table.getRowFormatter().addStyleName( row + 1,
+                                                                  "rule-SelectedRow" );
+            else table.getRowFormatter().removeStyleName( row + 1,
+                                                          "rule-SelectedRow" );
+        }
     }
+    
+    /**
+     * This will inject the data into the table, and refresh it.
+     * The data needs to match up with how this table was configured.
+     * (the table will ask the server what cols there are, and how many to a page).
+     * @param data A 2D array of tablular data.
+     */
+    public void setData(String[][] data) {
+        this.data = data;
+        update();
+    }
+    
 
-    // Clear any remaining slots.
-    for (; i < VISIBLE_ITEM_COUNT; ++i) {
-      table.setHTML(i + 1, 0, "&nbsp;");
-      table.setHTML(i + 1, 1, "&nbsp;");
-      table.setHTML(i + 1, 2, "&nbsp;");
-      table.setHTML(i + 1, 3, "&nbsp;");
+    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;
+        if ( max > count ) max = count;
+
+        prevButton.setVisible( startIndex != 0 );
+        nextButton.setVisible( startIndex + visibleItemCount < count );
+        countLabel.setText( "" + (startIndex + 1) + " - " + max + " of " + count );
+
+        // Show the selected emails.
+        int i = 0;
+        for ( ; i < visibleItemCount; ++i ) {
+            // Don't read past the end.
+            if ( startIndex + i >= count ) break;
+
+            String[] rowData = data[startIndex + i];
+            
+            //RuleListItem item = data.getMailItem( startIndex + i );
+
+            // Add a new row to the table, then set each of its columns value
+            
+            for ( int col = 0; col < rowData.length; col++ ) {
+                table.setText( i + 1, col, rowData[col] );
+            }
+            
+//            table.setText( i + 1,
+//                           0,
+//                           item.name );
+//            table.setText( i + 1,
+//                           1,
+//                           item.status );
+//            table.setText( i + 1,
+//                           2,
+//                           item.changedBy );
+//            table.setText( i + 1,
+//                           3,
+//                           item.version );
+        }
+
+        // Clear any remaining slots.
+        for ( ; i < visibleItemCount; ++i ) {
+            
+            for(int col = 0; col < numberOfColumns; col++) {
+                table.setHTML( i + 1,
+                               col,
+                               "&nbsp;" );
+            }
+            
+        }
+
+        // Select the first row if none is selected.
+        if ( selectedRow == -1 ) selectRow( 0 );
     }
-
-    // Select the first row if none is selected.
-    if (selectedRow == -1)
-      selectRow(0);
-  }
 }
-

Added: labs/jbossrules/trunk/drools-brms/src/org/drools/brms/client/rulenav/CategorySelectHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-brms/src/org/drools/brms/client/rulenav/CategorySelectHandler.java	2006-08-18 04:16:20 UTC (rev 5936)
+++ labs/jbossrules/trunk/drools-brms/src/org/drools/brms/client/rulenav/CategorySelectHandler.java	2006-08-18 10:53:46 UTC (rev 5937)
@@ -0,0 +1,15 @@
+package org.drools.brms.client.rulenav;
+
+/**
+ * This represents an event of a category being selected.
+ * @author Michael Neale
+ *
+ */
+public interface CategorySelectHandler {
+
+    /**
+     * When a category is selected.
+     */
+    public void selected(String selectedPath);
+    
+}

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 04:16:20 UTC (rev 5936)
+++ labs/jbossrules/trunk/drools-brms/src/org/drools/brms/client/rulenav/RulesNavigatorTree.java	2006-08-18 10:53:46 UTC (rev 5937)
@@ -34,17 +34,19 @@
   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() {
-
+  public RulesNavigatorTree(CategorySelectHandler handler) {    
+    this.categorySelectHandler = handler;
     service.loadChildCategories( "", new AsyncCallback() {
 
         public void onFailure(Throwable caught) {
@@ -66,10 +68,11 @@
   }
 
   public void onShow() {
+      //move along... these are not the droids you're looking for...
   }
 
-  public void onTreeItemSelected(TreeItem item) {
-      System.out.println("TODO: call rule list view");
+  public void onTreeItemSelected(TreeItem item) {      
+      this.categorySelectHandler.selected( getPath( item ) );
   }
   
 
@@ -79,13 +82,9 @@
     lastItemChanged = item;
     final TreeItem root = item;
     
-    String categoryPath = item.getText();
+    
     //walk back up to build a tree
-    TreeItem parent = item.getParentItem();
-    while (parent != null) {
-        categoryPath = parent.getText() + "/" + categoryPath;
-        parent = parent.getParentItem();
-    }
+    String categoryPath = getPath( item );
     
     service.loadChildCategories( categoryPath, new AsyncCallback() {
 
@@ -109,6 +108,16 @@
     
   }
 
+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 boolean notShowing(TreeItem item) {
     return !item.getState();
 }




More information about the jboss-svn-commits mailing list