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]

Reply via email to