Author: dongxu Date: Thu Sep 12 03:30:31 2013 New Revision: 1522212 URL: http://svn.apache.org/r1522212 Log: fix the main part of issue 11 - delete selected messages.
Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/IMAPMessageListActivity.java james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/IMAPMessageListView.java Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/IMAPMessageListActivity.java URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/IMAPMessageListActivity.java?rev=1522212&r1=1522211&r2=1522212&view=diff ============================================================================== --- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/IMAPMessageListActivity.java (original) +++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/IMAPMessageListActivity.java Thu Sep 12 03:30:31 2013 @@ -27,6 +27,9 @@ package org.apache.hupa.client.activity; import java.util.ArrayList; import java.util.List; <<<<<<< HEAD +<<<<<<< HEAD +======= +>>>>>>> fix the main part of issue 11 - delete selected messages. import java.util.Set; import org.apache.hupa.client.activity.MessageSendActivity.Type; @@ -405,6 +408,7 @@ import org.apache.hupa.client.rf.DeleteM import org.apache.hupa.client.rf.DeleteMessageByUidRequest; import org.apache.hupa.client.rf.MoveMessageRequest; import org.apache.hupa.client.rf.SetFlagRequest; +import org.apache.hupa.client.ui.MessagesCellTable; import org.apache.hupa.client.ui.WidgetDisplayable; import org.apache.hupa.client.widgets.HasDialog; import org.apache.hupa.shared.data.MessageImpl.IMAPFlag; @@ -816,22 +820,33 @@ public class IMAPMessageListActivity ext } private void deleteMessages() { - List<Message> ml = display.getSelectedMessages(); + Set<Message> ml = display.getSelectedMessages(); final List<Message> selectedMessages = new ArrayList<Message>(ml); List<Long> uids = new ArrayList<Long>(); for (Message m : selectedMessages) { uids.add(m.getUid()); + display.getTable().getSelectionModel().setSelected(m, false); // FIXME should be deSelected, or remove? } // maybe its better to just remove the messages from the table and // expect the removal will work display.removeMessages(selectedMessages); DeleteMessageByUidRequest req = requestFactory.deleteMessageByUidRequest(); DeleteMessageByUidAction action = req.create(DeleteMessageByUidAction.class); + ImapFolder folder1 = req.create(ImapFolder.class); + folder1.setChildren(folder.getChildren()); + folder1.setDelimiter(folder.getDelimiter()); + folder1.setFullName(folder.getFullName()); + folder1.setMessageCount(folder.getMessageCount()); + folder1.setName(folder.getName()); + folder1.setSubscribed(folder.getSubscribed()); + folder1.setUnseenMessageCount(folder.getUnseenMessageCount()); action.setMessageUids(uids); - action.setFolder(folder); + action.setFolder(folder1); req.delete(action).fire(new Receiver<DeleteMessageResult>() { @Override public void onSuccess(DeleteMessageResult response) { + display.getTable().setVisibleRangeAndClearData(display.getTable().getVisibleRange(), true); + eventBus.fireEvent(new DecreaseUnseenEvent(user, folder, response.getCount())); } }); @@ -1247,7 +1262,7 @@ public class IMAPMessageListActivity ext public HasClickHandlers getDeleteClick(); public HasClickHandlers getDeleteAllClick(); public HasEnable getDeleteEnable(); - public List<Message> getSelectedMessages(); + public Set<Message> getSelectedMessages(); public HasDialog getConfirmDeleteDialog(); public HasDialog getConfirmDeleteAllDialog(); public HasClickHandlers getConfirmDeleteDialogClick(); @@ -1262,6 +1277,7 @@ public class IMAPMessageListActivity ext public HasChangeHandlers getRowsPerPageChange(); public HasClickHandlers getSearchClick(); public HasValue<String> getSearchValue(); + public MessagesCellTable getTable(); } <<<<<<< HEAD Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/IMAPMessageListView.java URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/IMAPMessageListView.java?rev=1522212&r1=1522211&r2=1522212&view=diff ============================================================================== --- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/IMAPMessageListView.java (original) +++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/IMAPMessageListView.java Thu Sep 12 03:30:31 2013 @@ -25,6 +25,7 @@ package org.apache.hupa.client.ui; <<<<<<< HEAD import java.util.List; import java.util.Set; +<<<<<<< HEAD ======= import java.util.ArrayList; import java.util.Date; @@ -39,6 +40,8 @@ import java.util.Date; >>>>>>> remove gwt-incubator dependency in Messages List Model; import java.util.List; >>>>>>> Change to new mvp framework - first step +======= +>>>>>>> fix the main part of issue 11 - delete selected messages. import org.apache.hupa.client.HupaCSS; import org.apache.hupa.client.HupaConstants; @@ -48,6 +51,7 @@ import org.apache.hupa.client.activity.I <<<<<<< HEAD <<<<<<< HEAD <<<<<<< HEAD +<<<<<<< HEAD import org.apache.hupa.client.rf.FetchMessagesRequest; import org.apache.hupa.client.rf.HupaRequestFactory; import org.apache.hupa.client.widgets.ConfirmDialogBox; @@ -87,6 +91,8 @@ import org.apache.hupa.client.bundles.Hu ======= import org.apache.hupa.client.bundles.HupaImageBundle; >>>>>>> fix issue 5,6,8: +======= +>>>>>>> fix the main part of issue 11 - delete selected messages. import org.apache.hupa.client.rf.FetchMessagesRequest; import org.apache.hupa.client.rf.HupaRequestFactory; import org.apache.hupa.client.widgets.ConfirmDialogBox; @@ -213,9 +219,14 @@ import com.google.gwt.view.client.Select ======= import com.google.gwt.view.client.CellPreviewEvent; import com.google.gwt.view.client.CellPreviewEvent.Handler; +import com.google.gwt.view.client.MultiSelectionModel; import com.google.gwt.view.client.ProvidesKey; import com.google.gwt.view.client.RangeChangeEvent; +<<<<<<< HEAD >>>>>>> make the messages list can be selected without bothering the checkbox >>>>>>> column's behavior of it. +======= +import com.google.gwt.view.client.SelectionChangeEvent; +>>>>>>> fix the main part of issue 11 - delete selected messages. import com.google.gwt.view.client.SelectionModel; import com.google.inject.Inject; import com.google.web.bindery.requestfactory.shared.Receiver; @@ -225,6 +236,7 @@ import com.google.web.bindery.requestfac public class IMAPMessageListView extends Composite implements IMAPMessageListActivity.Displayable { <<<<<<< HEAD +<<<<<<< HEAD @SuppressWarnings("unused") private HupaMessages messages; private EnableButton deleteMailButton; @@ -1664,6 +1676,9 @@ public class IMAPMessageListView extends @SuppressWarnings("unused") private HupaMessages messages; >>>>>>> make the messages list can be selected without bothering the checkbox >>>>>>> column's behavior of it. +======= + @SuppressWarnings("unused") private HupaMessages messages; +>>>>>>> fix the main part of issue 11 - delete selected messages. private EnableButton deleteMailButton; private Button newMailButton; @@ -1753,20 +1768,43 @@ public class IMAPMessageListView extends setExpandLoading(true); eventBus.fireEvent(new ExpandMessageEvent(user, folder, event.getValue())); } - } - private boolean hasClickedButFirstCol(CellPreviewEvent<Message> event) { return "click".equals(event.getNativeEvent().getType()) && 0 != event.getColumn(); } }); - table.getCheckboxCol().setFieldUpdater(new FieldUpdater<Message, Boolean>() { + selectionModel.addSelectionChangeHandler(new SelectionChangeEvent.Handler() { @Override - public void update(int index, Message object, Boolean value) { - selectionModel.setSelected(object, value); + public void onSelectionChange(SelectionChangeEvent event) { + if (selectedCount() == 0) { + toggleButtons(false); + } else { + toggleButtons(true); + } } }); +// table.getCheckboxCol().setFieldUpdater(new FieldUpdater<Message, Boolean>() { +// @Override +// public void update(int index, Message object, Boolean value) { +// selectionModel.setSelected(object, value); +// if (selectedCount() == 0) { +// toggleButtons(false); +// } else { +// toggleButtons(true); +// } +// } +// +// private int selectedCount() { +// return getSelectedMessages().size(); +// } +// +// private void toggleButtons(boolean b) { +// getDeleteEnable().setEnabled(b); +// getMarkSeenEnable().setEnabled(b); +// getMarkUnseenEnable().setEnabled(b); +// } +// }); table.addRangeChangeHandler(new RangeChangeEvent.Handler() { @Override @@ -1852,18 +1890,17 @@ public class IMAPMessageListView extends markButtonBar.add(markUnSeenButton); buttonBar.add(markButtonBar); // buttonBar.add(refreshLink); TODO - - pageBox.addItem("" + MessagesCellTable.PAGE_SIZE); - pageBox.addItem("" + (MessagesCellTable.PAGE_SIZE * 2)); - pageBox.addItem("" + (MessagesCellTable.PAGE_SIZE * 4)); - pageBox.addChangeHandler(new ChangeHandler() { - public void onChange(ChangeEvent event) { -// if (pageBox.getSelectedIndex() > 0) - table.setVisibleRange(0, Integer.parseInt(pageBox.getItemText(pageBox.getSelectedIndex()))); -// mailTable.setPageSize(Integer.parseInt(pageBox.getItemText(pageBox.getSelectedIndex()))); - } - }); + pageBox.addItem("" + MessagesCellTable.PAGE_SIZE); + pageBox.addItem("" + (MessagesCellTable.PAGE_SIZE * 2)); + pageBox.addItem("" + (MessagesCellTable.PAGE_SIZE * 4)); + pageBox.addChangeHandler(new ChangeHandler() { + public void onChange(ChangeEvent event) { + // if (pageBox.getSelectedIndex() > 0) + table.setVisibleRange(0, Integer.parseInt(pageBox.getItemText(pageBox.getSelectedIndex()))); + // mailTable.setPageSize(Integer.parseInt(pageBox.getItemText(pageBox.getSelectedIndex()))); + } + }); HorizontalPanel searchPanel = new HorizontalPanel(); searchPanel.addStyleName(HupaCSS.C_buttons); @@ -1888,7 +1925,7 @@ public class IMAPMessageListView extends hPanel.add(searchPanel); hPanel.setCellHorizontalAlignment(searchPanel, HorizontalPanel.ALIGN_RIGHT); - HorizontalPanel pagerBar = new HorizontalPanel(); + HorizontalPanel pagerBar = new HorizontalPanel(); pagerBar.add(pager); pagerBar.add(pageBox); @@ -1904,6 +1941,15 @@ public class IMAPMessageListView extends initWidget(solidCenterPanel); } + private int selectedCount() { + return getSelectedMessages().size(); + } + + private void toggleButtons(boolean b) { + getDeleteEnable().setEnabled(b); + getMarkSeenEnable().setEnabled(b); + getMarkUnseenEnable().setEnabled(b); + } public void reloadData() { } @@ -2045,8 +2091,9 @@ public class IMAPMessageListView extends * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display# * getSelectedMessages() */ - public List<Message> getSelectedMessages() { - return null; + @SuppressWarnings("unchecked") + public Set<Message> getSelectedMessages() { + return ((MultiSelectionModel<Message>) (table.getSelectionModel())).getSelectedSet(); } /* @@ -2243,5 +2290,13 @@ public class IMAPMessageListView extends loading.hide(); } } +<<<<<<< HEAD >>>>>>> fix some bugs related to RF, and try to use new CellView to replace >>>>>>> gwt-incubator +======= + + @Override + public MessagesCellTable getTable() { + return table; + } +>>>>>>> fix the main part of issue 11 - delete selected messages. } --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org