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

Reply via email to