[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