You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@labs.apache.org by no...@apache.org on 2009/09/13 17:05:15 UTC

svn commit: r814328 - in /labs/hupa/trunk: client/src/main/java/org/apache/hupa/client/ client/src/main/java/org/apache/hupa/client/mvp/ server/src/main/java/org/apache/hupa/server/handler/

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: commits-unsubscribe@labs.apache.org
For additional commands, e-mail: commits-help@labs.apache.org