Author: norman
Date: Sun Aug 9 12:17:17 2009
New Revision: 802531
URL: http://svn.apache.org/viewvc?rev=802531&view=rev
Log:
Use caching table model for increasing performance
Modified:
labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPMessageListView.java
Modified:
labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPMessageListView.java
URL:
http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPMessageListView.java?rev=802531&r1=802530&r2=802531&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPMessageListView.java
(original)
+++ labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPMessageListView.java
Sun Aug 9 12:17:17 2009
@@ -47,16 +47,17 @@
import com.google.gwt.event.logical.shared.ResizeEvent;
import com.google.gwt.event.logical.shared.ResizeHandler;
import com.google.gwt.gen2.table.client.AbstractColumnDefinition;
+import com.google.gwt.gen2.table.client.CachedTableModel;
import com.google.gwt.gen2.table.client.CellRenderer;
import com.google.gwt.gen2.table.client.ColumnDefinition;
import com.google.gwt.gen2.table.client.DefaultTableDefinition;
import com.google.gwt.gen2.table.client.FixedWidthFlexTable;
import com.google.gwt.gen2.table.client.FixedWidthGrid;
import com.google.gwt.gen2.table.client.FixedWidthGridBulkRenderer;
+import com.google.gwt.gen2.table.client.MutableTableModel;
import com.google.gwt.gen2.table.client.PagingOptions;
import com.google.gwt.gen2.table.client.PagingScrollTable;
import com.google.gwt.gen2.table.client.TableDefinition;
-import com.google.gwt.gen2.table.client.TableModel;
import com.google.gwt.gen2.table.client.TableModelHelper;
import com.google.gwt.gen2.table.client.AbstractScrollTable.ColumnResizePolicy;
import com.google.gwt.gen2.table.client.AbstractScrollTable.ResizePolicy;
@@ -94,6 +95,8 @@
private String searchValue;
private PagingScrollTable<IMAPMessage> mailTable;
+ private CachedTableModel<IMAPMessage> cTableModel = new
CachedTableModel<IMAPMessage>(new IMAPMessageTableModel());
+
private EventBus bus;
private FixedWidthGrid dataTable = createDataTable();
private Button deleteMailButton = new
Button(constants.deleteMailButton());
@@ -110,9 +113,11 @@
VerticalPanel vPanel = new VerticalPanel();
+ cTableModel.setPostCachedRowCount(50);
+ cTableModel.setRowCount(MutableTableModel.UNKNOWN_ROW_COUNT);
mailTable = new PagingScrollTable<IMAPMessage>(
- new IMAPMessageTableModel(), dataTable,
+ cTableModel, dataTable,
createHeaderTable(),
createTableDefinitation());
mailTable.setPageSize(20);
@@ -315,15 +320,14 @@
return cList;
}
- private final class IMAPMessageTableModel extends
TableModel<IMAPMessage> {
+ private final class IMAPMessageTableModel extends
MutableTableModel<IMAPMessage> {
@Override
public void requestRows(
final Request request,
final
com.google.gwt.gen2.table.client.TableModel.Callback<IMAPMessage> callback) {
-
if (user == null || folder == null) {
- setRowCount(0);
+ //setRowCount(UNKNOWN_ROW_COUNT);
callback.onRowsReady(request, new
TableModelHelper.Response<IMAPMessage>() {
@Override
@@ -337,7 +341,8 @@
dispatcher.execute(new
FetchMessages(user.getSessionId(),folder,request.getStartRow(),request.getNumRows(),searchValue),
new AsyncCallback<FetchMessagesResult>() {
public void onFailure(Throwable caught) {
- setRowCount(0);
+ GWT.log("E=", caught);
+ //setRowCount(UNKNOWN_ROW_COUNT);
callback.onFailure(caught);
}
@@ -351,12 +356,27 @@
}
};
- setRowCount(result.getRealCount());
+
cTableModel.setRowCount(result.getRealCount());
callback.onRowsReady(request,response);
}
});
}
+
+ @Override
+ protected boolean onRowInserted(int beforeRow) {
+ return true;
+ }
+
+ @Override
+ protected boolean onRowRemoved(int row) {
+ return true;
+ }
+
+ @Override
+ protected boolean onSetRowValue(int row, IMAPMessage rowValue) {
+ return true;
+ }
}
@@ -424,7 +444,8 @@
this.user = user;
this.folder = folder;
this.searchValue = searchValue;
- mailTable.getTableModel().setRowCount(0);
+ cTableModel.clearCache();
+
mailTable.getTableModel().setRowCount(MutableTableModel.UNKNOWN_ROW_COUNT);
mailTable.reloadPage();
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]