Author: norman
Date: Sun Aug  9 17:44:58 2009
New Revision: 802565

URL: http://svn.apache.org/viewvc?rev=802565&view=rev
Log:
Fetch next rows after deletion to fillup the table again

Added:
    
labs/hupa/src/main/java/org/apache/hupa/client/widgets/RefetchPagingScrollTable.java
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=802565&r1=802564&r2=802565&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 17:44:58 2009
@@ -30,6 +30,7 @@
 import org.apache.hupa.client.HupaConstants;
 import org.apache.hupa.client.bundles.MyPagingOptionImages;
 import org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display;
+import org.apache.hupa.client.widgets.RefetchPagingScrollTable;
 import org.apache.hupa.shared.data.IMAPFolder;
 import org.apache.hupa.shared.data.IMAPMessage;
 import org.apache.hupa.shared.data.User;
@@ -56,7 +57,6 @@
 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.TableModelHelper;
 import com.google.gwt.gen2.table.client.AbstractScrollTable.ColumnResizePolicy;
@@ -94,7 +94,7 @@
        private IMAPFolder folder;
        private String searchValue;
        
-       private PagingScrollTable<IMAPMessage> mailTable;
+       private RefetchPagingScrollTable<IMAPMessage> mailTable;
        private CachedTableModel<IMAPMessage> cTableModel = new 
CachedTableModel<IMAPMessage>(new IMAPMessageTableModel());
 
        private EventBus bus;
@@ -116,7 +116,7 @@
                cTableModel.setPostCachedRowCount(50);
                cTableModel.setRowCount(MutableTableModel.UNKNOWN_ROW_COUNT);
                
-               mailTable = new PagingScrollTable<IMAPMessage>(
+               mailTable = new RefetchPagingScrollTable<IMAPMessage>(
                                cTableModel, dataTable,
                                createHeaderTable(),
                                createTableDefinitation());
@@ -494,7 +494,7 @@
                }
                // remove rows
                for (int i = 0; i < rows.size(); i++) {
-                       dataTable.removeRow(rows.get(i) -i);
+                       cTableModel.removeRow(rows.get(i) -i);
                }
        }
 

Added: 
labs/hupa/src/main/java/org/apache/hupa/client/widgets/RefetchPagingScrollTable.java
URL: 
http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/client/widgets/RefetchPagingScrollTable.java?rev=802565&view=auto
==============================================================================
--- 
labs/hupa/src/main/java/org/apache/hupa/client/widgets/RefetchPagingScrollTable.java
 (added)
+++ 
labs/hupa/src/main/java/org/apache/hupa/client/widgets/RefetchPagingScrollTable.java
 Sun Aug  9 17:44:58 2009
@@ -0,0 +1,93 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information        *
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the            *
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ *                                                              *
+ *   http://www.apache.org/licenses/LICENSE-2.0                 *
+ *                                                              *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
+ * KIND, either express or implied.  See the License for the    *
+ * specific language governing permissions and limitations      *
+ * under the License.                                           *
+ ****************************************************************/
+
+package org.apache.hupa.client.widgets;
+
+import java.util.HashSet;
+import java.util.Iterator;
+
+import com.google.gwt.gen2.table.client.FixedWidthFlexTable;
+import com.google.gwt.gen2.table.client.FixedWidthGrid;
+import com.google.gwt.gen2.table.client.MutableTableModel;
+import com.google.gwt.gen2.table.client.PagingScrollTable;
+import com.google.gwt.gen2.table.client.TableDefinition;
+import com.google.gwt.gen2.table.client.TableModel.Callback;
+import com.google.gwt.gen2.table.client.TableModelHelper.Request;
+import com.google.gwt.gen2.table.client.TableModelHelper.Response;
+import com.google.gwt.gen2.table.event.client.RowRemovalEvent;
+import com.google.gwt.gen2.table.event.client.RowRemovalHandler;
+
+/**
+ * PagingScrollTable which refetch a row after one is deleted. This ensure 
that always the configured page
+ * size is shown.
+ * 
+ *
+ * @param <RowType>
+ */
+public class RefetchPagingScrollTable<RowType> extends 
PagingScrollTable<RowType>{
+
+       public RefetchPagingScrollTable(MutableTableModel<RowType> tableModel,
+                       FixedWidthGrid dataTable, FixedWidthFlexTable 
headerTable,
+                       TableDefinition<RowType> tableDefinition) {
+               super(tableModel, dataTable, headerTable, tableDefinition);
+
+               tableModel.addRowRemovalHandler(new RowRemovalHandler() {
+
+                       public void onRowRemoval(RowRemovalEvent event) {
+                               final int rowIndex = event.getRowIndex();
+                               
+                               // remove the row value on deletion
+                               getRowValues().remove(rowIndex);
+                               // request one row
+                               Request r = new 
Request(getAbsoluteLastRowIndex(),1);
+                               
+                               getTableModel().requestRows(r, new 
Callback<RowType>() {
+
+                                       public void onFailure(Throwable caught) 
{
+                                               // Nothing todo
+                                       }
+
+                                       public void onRowsReady(Request request,
+                                                       Response<RowType> 
response) {
+                                               // Add the new row values
+                                               Iterator<RowType> it = 
response.getRowValues();
+                                               while (it.hasNext()) {
+                                                       
getRowValues().add(it.next());
+                                               }
+                                               
+                                               // copy the selected rows to 
reset it after reloading the data
+                                               Iterator<Integer> selected = 
new HashSet<Integer>(getDataTable().getSelectedRows()).iterator();
+                                               
+                                               // set the data
+                                               
setData(getAbsoluteFirstRowIndex(), getRowValues().iterator());
+                                               
+                                               // select the rows again
+                                               while (selected.hasNext()) {
+                                                       
getDataTable().selectRow(selected.next(), false);
+
+                                               }
+                                       }
+                                       
+                               });
+                       }
+                       
+               });
+       }
+
+}



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to