[jbpm-commits] JBoss JBPM SVN: r2875 - in projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client: widgets and 1 other directory.

do-not-reply at jboss.org do-not-reply at jboss.org
Tue Nov 11 04:44:06 EST 2008


Author: heiko.braun at jboss.com
Date: 2008-11-11 04:44:06 -0500 (Tue, 11 Nov 2008)
New Revision: 2875

Modified:
   projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/task/TaskList.java
   projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/widgets/RemoteListView.java
Log:
Use GroupingStore for task list 

Modified: projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/task/TaskList.java
===================================================================
--- projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/task/TaskList.java	2008-11-10 22:18:39 UTC (rev 2874)
+++ projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/task/TaskList.java	2008-11-11 09:44:06 UTC (rev 2875)
@@ -24,20 +24,22 @@
 import com.allen_sauer.gwt.log.client.Log;
 import com.google.gwt.core.client.JavaScriptObject;
 import com.google.gwt.json.client.JSONObject;
+import com.gwtext.client.core.SortDir;
 import com.gwtext.client.data.*;
+import com.gwtext.client.data.event.StoreListenerAdapter;
 import com.gwtext.client.widgets.ComponentMgr;
 import com.gwtext.client.widgets.Panel;
+import com.gwtext.client.widgets.Component;
+import com.gwtext.client.widgets.event.PanelListenerAdapter;
 import com.gwtext.client.widgets.form.FormPanel;
 import com.gwtext.client.widgets.grid.ColumnConfig;
 import com.gwtext.client.widgets.grid.ColumnModel;
+import com.gwtext.client.widgets.grid.GridPanel;
 import com.gwtext.client.widgets.grid.GroupingView;
-import com.gwtext.client.widgets.grid.GridPanel;
-import com.gwtext.client.core.SortDir;
 import org.jboss.bpm.console.client.MainView;
 import org.jboss.bpm.console.client.UIConstants;
 import org.jboss.bpm.console.client.model.DTOParser;
 import org.jboss.bpm.console.client.model.TaskReference;
-import org.jboss.bpm.console.client.widgets.RemoteListView;
 
 import java.util.HashMap;
 import java.util.Map;
@@ -47,54 +49,48 @@
  *
  * @author Heiko.Braun <heiko.braun at jboss.com>
  */
-public class TaskList extends RemoteListView
+public class TaskList extends Panel
 {
    private Map<Integer,TaskReference> row2taskref = new HashMap<Integer,TaskReference>();
+   private MainView mainView;
+   private GridPanel grid;
+   private GroupingStore store;
+   private String title;
 
    public TaskList(String titleName, final MainView view)
    {
-      super(titleName, view,
-            view.getUrlBuilder().getTaskListByActorURL(view.getUsername())
-      );
+      this.mainView = view;
+      this.title = titleName;
 
-      final JsonReader reader = createReader();
+      this.setPaddings(10);
+      this.setHeader(false);
+      this.setBorder(false);
+      this.setFrame(false);
+
+      String resourceUrl = view.getUrlBuilder().getTaskListByActorURL(view.getUsername());
       DataProxy dataProxy = new ScriptTagProxy(resourceUrl, 1000*10);
 
-      GroupingStore groupingStore = new GroupingStore(dataProxy, reader, false);
-      groupingStore.addStoreListener( new ListViewStoreListener(this) );
-      groupingStore.setGroupField("currentState");
-      groupingStore.setSortInfo(new SortState("actor", SortDir.ASC));  
+      final Reader reader = createReader();
 
-      // replace default store
-      super.store = groupingStore;
-      
-      enableAddBtn(false);
-      enableDeleteBtn(false);
-   }
+      store = new GroupingStore();
+      store.setReader(reader);
+      store.setDataProxy(dataProxy);
+      store.setSortInfo(new SortState("id", SortDir.ASC));
+      store.setGroupField("currentState");
+      store.addStoreListener( new ListViewStoreListener(this) );
 
-
-   protected GridPanel createGridPanel(String titleName)
-   {
-      GroupingView gridView = new GroupingView();
-      gridView.setForceFit(true);
-      //gridView.setGroupTextTpl(
-      //      "{text} ({[values.rs.length]} {[values.rs.length > 1 ? \"Items\" : \"Item\"]})");
-
-      GridPanel grid = new GridPanel();      
-      grid.setView(gridView);
-      
-      grid.setTitle(titleName);
-      grid.setFrame(true);
-      grid.setWidth(UIConstants.EDITOR_PANEL_WIDTH);
-      grid.stripeRows(true);
-      grid.setLoadMask(true);
-
-      grid.setCollapsible(true);
-      grid.setAnimCollapse(false);  
-
-      grid.addGridCellListener( new ListViewCellListener() );
-      
-      return grid;
+      // PanelListener will lazy load store data.
+      // Store.onLoad() callback will populate the grid
+      // and add it to the container panel.
+      this.addListener( new PanelListenerAdapter()
+      {
+         public boolean doBeforeRender(Component component)
+         {
+            reloadStore();
+            return true;
+         }
+      }
+      );
    }
 
    protected void onAdd()
@@ -217,7 +213,7 @@
       Log.debug("Loaded " + row2taskref.size() + " tasks");
    }
 
-   protected ColumnModel createColumnModel()
+   private ColumnModel createColumnModel()
    {
       final ColumnModel columnModel = new ColumnModel(
             new ColumnConfig[]
@@ -231,7 +227,7 @@
       return columnModel;
    }
 
-   protected JsonReader createReader()
+   private JsonReader createReader()
    {
       final RecordDef recordDef = new RecordDef(
             new FieldDef[]{
@@ -248,4 +244,72 @@
       reader.setId("id");
       return reader;
    }
+
+   private class ListViewStoreListener extends StoreListenerAdapter
+   {
+
+      Panel containerPanel;
+
+      public ListViewStoreListener(Panel containerPanel)
+      {
+         this.containerPanel = containerPanel;
+      }
+
+      /**
+       * load callback will push records to implementation
+       * and (!) add the grid to the container panel.
+       */
+      public void onLoad(Store store, Record[] records)
+      {
+
+         onRecordsLoaded(records);
+
+         grid = assembleGrid();
+
+         containerPanel.clear();
+         containerPanel.add(grid);
+         containerPanel.doLayout();
+      }
+
+      public void onLoadException(Throwable throwable)
+      {
+         Log.error("Failed to load remote data", throwable);
+      }
+
+   }
+
+   private GridPanel assembleGrid()
+   {
+      final ColumnModel columnModel = createColumnModel();
+
+      GridPanel grid = new GridPanel();
+      grid.setStore(store);
+      grid.setColumnModel(columnModel);
+      grid.setFrame(true);
+      grid.setStripeRows(true);
+      grid.setAutoExpandColumn("name");
+      grid.setTitle(title);
+
+      GroupingView gridView = new GroupingView();
+      gridView.setForceFit(true);
+      gridView.setGroupTextTpl("{text} ({[values.rs.length]} {[values.rs.length > 1 ?  \"Items\" : \"Item\"]})");
+
+      grid.setView(gridView);
+      grid.setFrame(true);
+      grid.setWidth(UIConstants.EDITOR_PANEL_WIDTH);
+      grid.setHeight(250);
+      grid.setEnableHdMenu(false);
+      return grid;
+   }
+
+   public void reloadStore()
+   {
+      Log.debug("Reload " + this.getId());
+      store.load(0, 15);
+   }
+
+   public GridPanel getGrid()
+   {
+      return grid;
+   }
 }

Modified: projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/widgets/RemoteListView.java
===================================================================
--- projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/widgets/RemoteListView.java	2008-11-10 22:18:39 UTC (rev 2874)
+++ projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/widgets/RemoteListView.java	2008-11-11 09:44:06 UTC (rev 2875)
@@ -49,7 +49,7 @@
 {
    protected int selectedRowIndex = -1;
    protected MainView view;
-   protected static final int PAGE_SIZE = 25;
+   public static final int PAGE_SIZE = 25;
    private GridPanel grid;
    protected String title;
 
@@ -203,10 +203,10 @@
 
    protected abstract JsonReader createReader();
 
-   protected class ListViewStoreListener extends StoreListenerAdapter
+   private class ListViewStoreListener extends StoreListenerAdapter
    {
 
-      Panel containerPanel;      
+      Panel containerPanel;
 
       public ListViewStoreListener(Panel containerPanel)
       {




More information about the jbpm-commits mailing list