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]