[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:;'>< prev</a>",true);
- private HTML nextButton = new HTML("<a href='javascript:;'>next ></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:;'>< prev</a>",
+ true );
+ private HTML nextButton = new HTML( "<a href='javascript:;'>next ></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, " ");
- table.setHTML(i + 1, 1, " ");
- table.setHTML(i + 1, 2, " ");
- table.setHTML(i + 1, 3, " ");
+ 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,
+ " " );
+ }
+
+ }
+
+ // 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