[jboss-svn-commits] JBL Code SVN: r5932 - 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
Thu Aug 17 07:16:35 EDT 2006
Author: michael.neale at jboss.com
Date: 2006-08-17 07:16:26 -0400 (Thu, 17 Aug 2006)
New Revision: 5932
Added:
labs/jbossrules/trunk/drools-brms/src/org/drools/brms/client/rpc/
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/RepositoryServiceFactory.java
labs/jbossrules/trunk/drools-brms/src/org/drools/brms/client/rpc/mock/
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/package.html
Modified:
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 the navigator working with a mock service
Added: 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-17 10:35:56 UTC (rev 5931)
+++ labs/jbossrules/trunk/drools-brms/src/org/drools/brms/client/rpc/RepositoryService.java 2006-08-17 11:16:26 UTC (rev 5932)
@@ -0,0 +1,13 @@
+package org.drools.brms.client.rpc;
+
+import com.google.gwt.user.client.rpc.RemoteService;
+
+/**
+ * This is what the remote service will implement, as a servlet.
+ * (in hosted/debug mode, you could also use an implementation that was in-process).
+ */
+public interface RepositoryService extends RemoteService {
+
+ public String myMethod(String blah);
+
+}
Added: 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-17 10:35:56 UTC (rev 5931)
+++ labs/jbossrules/trunk/drools-brms/src/org/drools/brms/client/rpc/RepositoryServiceAsync.java 2006-08-17 11:16:26 UTC (rev 5932)
@@ -0,0 +1,21 @@
+package org.drools.brms.client.rpc;
+
+import com.google.gwt.user.client.rpc.AsyncCallback;
+
+/**
+ * This is the interface that the front end talks to.
+ *
+ * As per the GWT standard, this follows the signatures of <code>RespositoryService</code>
+ * with the AsyncCallback banged on the end of the method sigs (rather then return a value).
+ *
+ * @author Michael Neale
+ */
+public interface RepositoryServiceAsync {
+
+ /**
+ * @param categoryPath A "/" delimited
+ * @param callback
+ */
+ public void loadChildCategories(String categoryPath, AsyncCallback callback);
+
+}
Added: labs/jbossrules/trunk/drools-brms/src/org/drools/brms/client/rpc/RepositoryServiceFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-brms/src/org/drools/brms/client/rpc/RepositoryServiceFactory.java 2006-08-17 10:35:56 UTC (rev 5931)
+++ labs/jbossrules/trunk/drools-brms/src/org/drools/brms/client/rpc/RepositoryServiceFactory.java 2006-08-17 11:16:26 UTC (rev 5932)
@@ -0,0 +1,40 @@
+package org.drools.brms.client.rpc;
+
+import org.drools.brms.client.rpc.mock.MockRepositoryServiceAsync;
+
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.user.client.rpc.ServiceDefTarget;
+
+/**
+ * Creates instances of the repository service for the client code to use.
+ * @author Michael Neale
+ */
+public class RepositoryServiceFactory {
+
+ /**
+ * Change this to switch between debug/mock mode (ie web front end only)
+ * versus full RPC (which requires the back end be running).
+ */
+ public static boolean DEBUG = true;
+
+ public static RepositoryServiceAsync getService() {
+ if (DEBUG)
+ return getMockService();
+ return getRealService();
+
+ }
+
+ private static RepositoryServiceAsync getMockService() {
+ return new MockRepositoryServiceAsync();
+ }
+
+ private static RepositoryServiceAsync getRealService() {
+ // define the service you want to call
+ RepositoryServiceAsync svc =
+ (RepositoryServiceAsync) GWT.create(RepositoryService.class);
+ ServiceDefTarget endpoint = (ServiceDefTarget) svc;
+ endpoint.setServiceEntryPoint("/jbrmsService");
+ return svc;
+ }
+
+}
Added: 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-17 10:35:56 UTC (rev 5931)
+++ labs/jbossrules/trunk/drools-brms/src/org/drools/brms/client/rpc/mock/MockRepositoryServiceAsync.java 2006-08-17 11:16:26 UTC (rev 5932)
@@ -0,0 +1,40 @@
+package org.drools.brms.client.rpc.mock;
+
+import org.drools.brms.client.rpc.RepositoryServiceAsync;
+
+import com.google.gwt.user.client.Timer;
+import com.google.gwt.user.client.rpc.AsyncCallback;
+
+/**
+ * This is a repository back end simulator.
+ */
+public class MockRepositoryServiceAsync
+ implements
+ RepositoryServiceAsync {
+
+
+ public void loadChildCategories(String categoryPath,
+ AsyncCallback callback) {
+
+ final AsyncCallback cb = callback;
+ final String cat = categoryPath;
+ Timer t = new Timer() {
+ public void run() {
+ log("loadChildCategories", "loading cat path: " + cat);
+ String[] result = new String[] { "Cat 1", "Cat 2", "Cat 3"};
+ cb.onSuccess( result );
+ }
+ };
+ t.schedule( 1000 );
+
+ }
+
+
+
+ private void log(String serviceName,
+ String message) {
+ System.out.println("[" + serviceName + "] " + message);
+
+ }
+
+}
Added: labs/jbossrules/trunk/drools-brms/src/org/drools/brms/client/rpc/package.html
===================================================================
--- labs/jbossrules/trunk/drools-brms/src/org/drools/brms/client/rpc/package.html 2006-08-17 10:35:56 UTC (rev 5931)
+++ labs/jbossrules/trunk/drools-brms/src/org/drools/brms/client/rpc/package.html 2006-08-17 11:16:26 UTC (rev 5932)
@@ -0,0 +1,3 @@
+<body>
+This contains classes used for remote communication with the repository server.
+</body>
\ No newline at end of file
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-17 10:35:56 UTC (rev 5931)
+++ labs/jbossrules/trunk/drools-brms/src/org/drools/brms/client/rulelist/RuleListView.java 2006-08-17 11:16:26 UTC (rev 5932)
@@ -1,6 +1,9 @@
package org.drools.brms.client.rulelist;
+import org.drools.brms.client.rpc.RepositoryServiceFactory;
+
+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;
@@ -97,7 +100,7 @@
}
}
- private void changeTabToEdit() {
+ private void changeTabToEdit() {
tabPanel.selectTab(EDITOR_TAB);
}
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-17 10:35:56 UTC (rev 5931)
+++ labs/jbossrules/trunk/drools-brms/src/org/drools/brms/client/rulenav/RulesNavigatorTree.java 2006-08-17 11:16:26 UTC (rev 5932)
@@ -15,89 +15,53 @@
*/
package org.drools.brms.client.rulenav;
+import org.drools.brms.client.rpc.RepositoryServiceAsync;
+import org.drools.brms.client.rpc.RepositoryServiceFactory;
+
+import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Tree;
import com.google.gwt.user.client.ui.TreeItem;
import com.google.gwt.user.client.ui.TreeListener;
/**
- * Demonstrates the {@link com.google.gwt.user.client.ui.Tree} widget.
+ * This is a rule/resource navigator that uses the server side categories to
+ * navigate the repository.
+ * Uses the the {@link com.google.gwt.user.client.ui.Tree} widget.
*/
public class RulesNavigatorTree implements TreeListener {
- private static class PendingItem extends TreeItem {
- public PendingItem() {
- super("Please wait...");
- }
- }
- private static class Proto {
- public Proto[] children;
- public TreeItem item;
- public String text;
-
- public Proto(String text) {
- this.text = text;
- }
-
- public Proto(String text, Proto[] children) {
- this(text);
- this.children = children;
- }
- }
-
- private static Proto[] fProto = new Proto[]{
- new Proto("Pricing", new Proto[]{
- new Proto("Correspondent", new Proto[]{
- new Proto("Closed End seconds"), new Proto("No. 2 - B-Flat Major"),
- new Proto("Government"), new Proto("No. 4 - G Major"),
- new Proto("NGOs"),}),
- new Proto("Wholesale", new Proto[]{}),
- new Proto("Retail", new Proto[]{}),
- new Proto("Symphonies", new Proto[]{
- new Proto("No. 1 - C Major"), new Proto("No. 2 - D Major"),
- new Proto("No. 3 - E-Flat Major"), new Proto("No. 4 - B-Flat Major"),
- new Proto("No. 5 - C Minor"), new Proto("No. 6 - F Major"),
- new Proto("No. 7 - A Major"), new Proto("No. 8 - F Major"),
- new Proto("No. 9 - D Minor"),}),}),
- new Proto("Eligibility", new Proto[]{
- new Proto("Concertos", new Proto[]{
- new Proto("Violin Concerto"), new Proto("Double Concerto - A Minor"),
- new Proto("Piano Concerto No. 1 - D Minor"),
- new Proto("Piano Concerto No. 2 - B-Flat Major"),}),
- new Proto("Quartets", new Proto[]{
- new Proto("Piano Quartet No. 1 - G Minor"),
- new Proto("Piano Quartet No. 2 - A Major"),
- new Proto("Piano Quartet No. 3 - C Minor"),
- new Proto("String Quartet No. 3 - B-Flat Minor"),}),
- new Proto("Sonatas", new Proto[]{
- new Proto("Two Sonatas for Clarinet - F Minor"),
- new Proto("Two Sonatas for Clarinet - E-Flat Major"),}),
- new Proto("Symphonies", new Proto[]{
- new Proto("No. 1 - C Minor"), new Proto("No. 2 - D Minor"),
- new Proto("No. 3 - F Major"), new Proto("No. 4 - E Minor"),}),}),
- new Proto("Rate Adjustments", new Proto[]{new Proto("Concertos", new Proto[]{
- new Proto("Piano Concerto No. 12"), new Proto("Piano Concerto No. 17"),
- new Proto("Clarinet Concerto"), new Proto("Violin Concerto No. 5"),
- new Proto("Violin Concerto No. 4"),}),}),};
-
-
- private Tree fTree = new Tree();
-
+ private Tree navTreeWidget = new Tree();
+ private RepositoryServiceAsync service = RepositoryServiceFactory.getService();
+ private TreeItem lastItemChanged = null;
+
public void setTreeSize(String width) {
- fTree.setWidth(width);
+ navTreeWidget.setWidth(width);
}
public Tree getTree() {
- return fTree;
+ return navTreeWidget;
}
public RulesNavigatorTree() {
- for (int i = 0; i < fProto.length; ++i) {
- createItem(fProto[i]);
- fTree.addItem(fProto[i].item);
- }
- fTree.addTreeListener(this);
+ service.loadChildCategories( "", new AsyncCallback() {
+
+ public void onFailure(Throwable caught) {
+ //TODO: work out how to handle it.
+ }
+
+ 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);
}
@@ -105,25 +69,61 @@
}
public void onTreeItemSelected(TreeItem item) {
+ System.out.println("TODO: call rule list view");
}
+
public void onTreeItemStateChanged(TreeItem item) {
- TreeItem child = item.getChild(0);
- if (child instanceof PendingItem) {
- item.removeItem(child);
+ if (notShowing( item )) return;
+ if (item == lastItemChanged) return;
+ 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();
+ }
+
+ service.loadChildCategories( categoryPath, new AsyncCallback() {
- Proto proto = (Proto) item.getUserObject();
- for (int i = 0; i < proto.children.length; ++i) {
- createItem(proto.children[i]);
- item.addItem(proto.children[i].item);
- }
- }
+ 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 void createItem(Proto proto) {
- proto.item = new TreeItem(proto.text);
- proto.item.setUserObject(proto);
- if (proto.children != null)
- proto.item.addItem(new PendingItem());
- }
+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