Author: norman
Date: Sun Sep 13 15:05:14 2009
New Revision: 814328

URL: http://svn.apache.org/viewvc?rev=814328&view=rev
Log:
add a delete all messages button (LABS-431)

Modified:
    
labs/hupa/trunk/client/src/main/java/org/apache/hupa/client/HupaConstants.java
    
labs/hupa/trunk/client/src/main/java/org/apache/hupa/client/HupaConstants.properties
    
labs/hupa/trunk/client/src/main/java/org/apache/hupa/client/HupaMessages.java
    
labs/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/IMAPMessageListPresenter.java
    
labs/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/IMAPMessageListView.java
    
labs/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/AbstractDeleteMessageHandler.java
    
labs/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/DeleteAllMessagesHandler.java

Modified: 
labs/hupa/trunk/client/src/main/java/org/apache/hupa/client/HupaConstants.java
URL: 
http://svn.apache.org/viewvc/labs/hupa/trunk/client/src/main/java/org/apache/hupa/client/HupaConstants.java?rev=814328&r1=814327&r2=814328&view=diff
==============================================================================
--- 
labs/hupa/trunk/client/src/main/java/org/apache/hupa/client/HupaConstants.java 
(original)
+++ 
labs/hupa/trunk/client/src/main/java/org/apache/hupa/client/HupaConstants.java 
Sun Sep 13 15:05:14 2009
@@ -104,4 +104,6 @@
        
        public String sessionTimedOut();
        public String rawTitle();
+       
+       public String deleteAll();
 }

Modified: 
labs/hupa/trunk/client/src/main/java/org/apache/hupa/client/HupaConstants.properties
URL: 
http://svn.apache.org/viewvc/labs/hupa/trunk/client/src/main/java/org/apache/hupa/client/HupaConstants.properties?rev=814328&r1=814327&r2=814328&view=diff
==============================================================================
--- 
labs/hupa/trunk/client/src/main/java/org/apache/hupa/client/HupaConstants.properties
 (original)
+++ 
labs/hupa/trunk/client/src/main/java/org/apache/hupa/client/HupaConstants.properties
 Sun Sep 13 15:05:14 2009
@@ -41,4 +41,5 @@
 backButton=Back
 rawButton=Show raw message
 rawTitle=Raw message view
+deleteAll=Delete all messages
 sessionTimedOut=Your session is timed out. Please login again!

Modified: 
labs/hupa/trunk/client/src/main/java/org/apache/hupa/client/HupaMessages.java
URL: 
http://svn.apache.org/viewvc/labs/hupa/trunk/client/src/main/java/org/apache/hupa/client/HupaMessages.java?rev=814328&r1=814327&r2=814328&view=diff
==============================================================================
--- 
labs/hupa/trunk/client/src/main/java/org/apache/hupa/client/HupaMessages.java 
(original)
+++ 
labs/hupa/trunk/client/src/main/java/org/apache/hupa/client/HupaMessages.java 
Sun Sep 13 15:05:14 2009
@@ -26,6 +26,9 @@
        @DefaultMessage("Are you sure you want to delete the selected 
messages?")
        public String confirmDeleteMessages();
        
+       @DefaultMessage("Are you sure you want to delete all messages in the 
selected folder?")
+       public String confirmDeleteAllMessages();
+       
        @DefaultMessage("Moving message")
        public String moveMessage();
        

Modified: 
labs/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/IMAPMessageListPresenter.java
URL: 
http://svn.apache.org/viewvc/labs/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/IMAPMessageListPresenter.java?rev=814328&r1=814327&r2=814328&view=diff
==============================================================================
--- 
labs/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/IMAPMessageListPresenter.java
 (original)
+++ 
labs/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/IMAPMessageListPresenter.java
 Sun Sep 13 15:05:14 2009
@@ -38,6 +38,7 @@
 import org.apache.hupa.shared.events.MoveMessageEvent;
 import org.apache.hupa.shared.events.MoveMessageEventHandler;
 import org.apache.hupa.shared.events.NewMessageEvent;
+import org.apache.hupa.shared.rpc.DeleteAllMessages;
 import org.apache.hupa.shared.rpc.DeleteMessageByUid;
 import org.apache.hupa.shared.rpc.DeleteMessageResult;
 import org.apache.hupa.shared.rpc.MoveMessage;
@@ -66,12 +67,17 @@
                public HasClickHandlers getNewClick();
                public Message getData(int rowIndex);
                public HasClickHandlers getDeleteClick();
+               public HasClickHandlers getDeleteAllClick();
                public void reloadData(User user, IMAPFolder folder,String 
searchValue);
                public void removeMessages(ArrayList<Message> messages);
                public ArrayList<Message> getSelectedMessages();
                public void reset();
-               public HasDialog getConfirmDialog();
-               public HasClickHandlers getConfirmDialogClick();
+               public HasDialog getConfirmDeleteDialog();
+               public HasDialog getConfirmDeleteAllDialog();
+
+               public HasClickHandlers getConfirmDeleteDialogClick();
+               public HasClickHandlers getConfirmDeleteAllDialogClick();
+
                public void selectAllMessages();
                public void deselectAllMessages();
                public HasClickHandlers getSelectAllClick();
@@ -144,7 +150,7 @@
 
                        public void 
onClick(com.google.gwt.event.dom.client.ClickEvent event) {
                                if 
(folder.getFullName().equals(user.getSettings().getTrashFolderName())) {
-                                       display.getConfirmDialog().show();
+                                       display.getConfirmDeleteDialog().show();
                                } else {
                                        deleteMessages();
                                }
@@ -152,7 +158,7 @@
                        }
                        
                }));
-               
registerHandler(display.getConfirmDialogClick().addClickHandler(new 
ClickHandler() {
+               
registerHandler(display.getConfirmDeleteDialogClick().addClickHandler(new 
ClickHandler() {
 
                        public void onClick(ClickEvent event) {
                                deleteMessages();
@@ -168,6 +174,32 @@
                        
                }));
                
+               registerHandler(display.getDeleteAllClick().addClickHandler(new 
ClickHandler() {
+
+                       public void onClick(ClickEvent event) {
+                               display.getConfirmDeleteAllDialog().center();
+                       }
+                       
+               }));
+               
+               
registerHandler(display.getConfirmDeleteAllDialogClick().addClickHandler(new 
ClickHandler() {
+
+                       public void onClick(ClickEvent event) {
+                               dispatcher.execute(new 
DeleteAllMessages(user.getSessionId(),folder), new 
SessionAsyncCallback<DeleteMessageResult>(new 
AsyncCallback<DeleteMessageResult>() {
+
+                                       public void onFailure(Throwable caught) 
{
+                                               GWT.log("E=", caught);
+                                       }
+
+                                       public void 
onSuccess(DeleteMessageResult result) {
+                                               display.reset();
+                                               eventBus.fireEvent(new 
DecreaseUnseenEvent(user,folder,result.getCount()));
+                                       }
+                               }, eventBus,user));
+                       }
+                       
+               }));
+               
                display.addTableListener(tableListener);
                isBound = true;
        }

Modified: 
labs/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/IMAPMessageListView.java
URL: 
http://svn.apache.org/viewvc/labs/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/IMAPMessageListView.java?rev=814328&r1=814327&r2=814328&view=diff
==============================================================================
--- 
labs/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/IMAPMessageListView.java
 (original)
+++ 
labs/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/IMAPMessageListView.java
 Sun Sep 13 15:05:14 2009
@@ -108,7 +108,10 @@
        private FixedWidthGrid dataTable = createDataTable();
        private Button deleteMailButton = new 
Button(constants.deleteMailButton());
        private Button newMailButton = new Button(constants.newMailButton());
+       private Button deleteAllMailButton = new Button(constants.deleteAll());
        private ConfirmDialogBox confirmBox = new ConfirmDialogBox();
+       private ConfirmDialogBox confirmDeleteAllBox = new ConfirmDialogBox();
+
        private ListBox pageBox = new ListBox();
        private Hyperlink allLink = new Hyperlink(constants.all(),"");  
        private Hyperlink noneLink = new Hyperlink(constants.none(),"");
@@ -192,11 +195,16 @@
                mailTable.fillWidth();
                
                options = new PagingOptions(mailTable);
+               
+               HorizontalPanel buttonBar = new HorizontalPanel();
+               buttonBar.setSpacing(5);
+               
                ButtonBar navigatorBar = new ButtonBar();
                navigatorBar.add(newMailButton);
                deleteMailButton.setEnabled(false);
                navigatorBar.add(deleteMailButton);
-               
+               buttonBar.add(navigatorBar);
+               buttonBar.add(deleteAllMailButton);
                
 
                pageBox.addItem("20");
@@ -212,8 +220,7 @@
                HorizontalPanel hPanel = new HorizontalPanel();
                hPanel.setStyleName("hupa-MailTableControl");
                hPanel.setSpacing(10);
-               hPanel.add(navigatorBar);
-               //hPanel.add(options);
+               hPanel.add(buttonBar);
                hPanel.add(pageBox);
                hPanel.setCellHorizontalAlignment(pageBox, 
HorizontalPanel.ALIGN_RIGHT);
                
@@ -239,6 +246,7 @@
                //vPanel.add(bar);
                vPanel.add(mailTable);
                confirmBox.setText(messages.confirmDeleteMessages());
+               
confirmDeleteAllBox.setText(messages.confirmDeleteAllMessages());
                initWidget(vPanel);
        }
        
@@ -609,20 +617,38 @@
         * (non-Javadoc)
         * @see 
org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getConfirmDialog()
         */
-       public HasDialog getConfirmDialog() {
+       public HasDialog getConfirmDeleteDialog() {
                return confirmBox;
        }
 
+
        /*
         * (non-Javadoc)
-        * @see 
org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getConfirmDialogClick()
+        * @see 
org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getConfirmDeleteDialogClick()
         */
-       public HasClickHandlers getConfirmDialogClick() {
+       public HasClickHandlers getConfirmDeleteDialogClick() {
                return confirmBox;
        }
 
        /*
         * (non-Javadoc)
+        * @see 
org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getConfirmDeleteAllDialog()
+        */
+       public HasDialog getConfirmDeleteAllDialog() {
+               return confirmDeleteAllBox;
+       }
+
+
+       /*
+        * (non-Javadoc)
+        * @see 
org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getConfirmDeleteAllDialogClick()
+        */
+       public HasClickHandlers getConfirmDeleteAllDialogClick() {
+               return confirmDeleteAllBox;
+       }
+
+       /*
+        * (non-Javadoc)
         * @see 
org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#deselectAllMessages()
         */
        public void deselectAllMessages() {
@@ -700,4 +726,12 @@
        public void redraw() {
                mailTable.reloadPage();
        }
+
+       /*
+        * (non-Javadoc)
+        * @see 
org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getDeleteAllClick()
+        */
+       public HasClickHandlers getDeleteAllClick() {
+               return deleteAllMailButton;
+       }
 }

Modified: 
labs/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/AbstractDeleteMessageHandler.java
URL: 
http://svn.apache.org/viewvc/labs/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/AbstractDeleteMessageHandler.java?rev=814328&r1=814327&r2=814328&view=diff
==============================================================================
--- 
labs/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/AbstractDeleteMessageHandler.java
 (original)
+++ 
labs/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/AbstractDeleteMessageHandler.java
 Sun Sep 13 15:05:14 2009
@@ -37,6 +37,11 @@
 import com.google.inject.Provider;
 import com.sun.mail.imap.IMAPStore;
 
+/**
+ * Abstract class which should get extended by all handlers which needs to 
handle message deletion
+ *
+ * @param <Action>
+ */
 public abstract class AbstractDeleteMessageHandler<Action extends 
DeleteMessage>
                extends AbstractSessionHandler<Action, DeleteMessageResult> {
 
@@ -46,6 +51,10 @@
                super(cache, logger, sessionProvider);
        }
 
+       /*
+        * (non-Javadoc)
+        * @see 
org.apache.hupa.server.handler.AbstractSessionHandler#executeInternal(org.apache.hupa.shared.rpc.Session,
 net.customware.gwt.dispatch.server.ExecutionContext)
+        */
        public DeleteMessageResult executeInternal(Action action,
                        ExecutionContext context) throws ActionException {
                org.apache.hupa.shared.data.IMAPFolder folder = 
action.getFolder();
@@ -103,5 +112,12 @@
                }
        }
 
+       /**
+        * Return an array holding all messages which should get deleted by the 
given action
+        * 
+        * @param action
+        * @return messages
+        * @throws ActionException
+        */
        protected abstract Message[] getMessagesToDelete(Action action) throws 
ActionException;
 }

Modified: 
labs/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/DeleteAllMessagesHandler.java
URL: 
http://svn.apache.org/viewvc/labs/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/DeleteAllMessagesHandler.java?rev=814328&r1=814327&r2=814328&view=diff
==============================================================================
--- 
labs/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/DeleteAllMessagesHandler.java
 (original)
+++ 
labs/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/DeleteAllMessagesHandler.java
 Sun Sep 13 15:05:14 2009
@@ -19,6 +19,7 @@
 
 package org.apache.hupa.server.handler;
 
+import javax.mail.Folder;
 import javax.mail.Message;
 import javax.mail.MessagingException;
 import javax.servlet.http.HttpSession;
@@ -43,7 +44,10 @@
                super(cache, logger, sessionProvider);
        }
 
-       @Override
+       /*
+        * (non-Javadoc)
+        * @see 
org.apache.hupa.server.handler.AbstractDeleteMessageHandler#getMessagesToDelete(org.apache.hupa.shared.rpc.DeleteMessage)
+        */
        protected Message[] getMessagesToDelete(DeleteAllMessages action)
                        throws ActionException {
                User user = getUser(action.getSessionId());
@@ -51,7 +55,9 @@
                        logger.info("Delete all messages in folder " + 
action.getFolder() + " for user " + user);
                        IMAPStore store =cache.get(user);
                        IMAPFolder folder = (IMAPFolder) 
store.getFolder(action.getFolder().getFullName());
-                       
+                       if (folder.isOpen() == false) {
+                               folder.open(Folder.READ_WRITE);
+                       }
                        return folder.getMessages();
                } catch (MessagingException e) {
                        String errorMsg = "Error while deleting all messages in 
folder " + action.getFolder() + " for user " + user;
@@ -62,6 +68,10 @@
                
        }
 
+       /*
+        * (non-Javadoc)
+        * @see net.customware.gwt.dispatch.server.ActionHandler#getActionType()
+        */
        public Class<DeleteAllMessages> getActionType() {
                return DeleteAllMessages.class;
        }



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

Reply via email to