Author: norman
Date: Wed Aug  5 17:25:34 2009
New Revision: 801323

URL: http://svn.apache.org/viewvc?rev=801323&view=rev
Log:
Add support for reply and reply all

Added:
    labs/hupa/src/main/java/org/apache/hupa/shared/events/ReplyMessageEvent.java
    
labs/hupa/src/main/java/org/apache/hupa/shared/events/ReplyMessageEventHandler.java
Modified:
    labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPMessagePresenter.java
    labs/hupa/src/main/java/org/apache/hupa/client/mvp/MainPresenter.java
    labs/hupa/src/main/java/org/apache/hupa/client/mvp/MessageSendPresenter.java
    
labs/hupa/src/main/java/org/apache/hupa/server/handler/AbstractSendMessageHandler.java
    
labs/hupa/src/main/java/org/apache/hupa/server/handler/ReplyMessageHandler.java
    
labs/hupa/src/main/java/org/apache/hupa/server/handler/SendMessageHandler.java
    labs/hupa/src/main/java/org/apache/hupa/shared/data/MessageHeader.java
    labs/hupa/src/main/java/org/apache/hupa/shared/events/NewMessageEvent.java
    
labs/hupa/src/main/java/org/apache/hupa/shared/events/NewMessageEventHandler.java

Modified: 
labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPMessagePresenter.java
URL: 
http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPMessagePresenter.java?rev=801323&r1=801322&r2=801323&view=diff
==============================================================================
--- 
labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPMessagePresenter.java 
(original)
+++ 
labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPMessagePresenter.java 
Wed Aug  5 17:25:34 2009
@@ -36,6 +36,7 @@
 import org.apache.hupa.shared.data.User;
 import org.apache.hupa.shared.events.ForwardMessageEvent;
 import org.apache.hupa.shared.events.LoadMessagesEvent;
+import org.apache.hupa.shared.events.ReplyMessageEvent;
 import org.apache.hupa.shared.rpc.DeleteMessage;
 import org.apache.hupa.shared.rpc.DeleteMessageResult;
 
@@ -139,6 +140,22 @@
                        
                });
                
+               display.getReplyButtonClick().addClickHandler(new 
ClickHandler() {
+
+                       public void onClick(ClickEvent event) {
+                               eventBus.fireEvent(new 
ReplyMessageEvent(user,folder,message,false));
+                       }
+                       
+               });
+               
+               display.getReplyAllButtonClick().addClickHandler(new 
ClickHandler() {
+
+                       public void onClick(ClickEvent event) {
+                               eventBus.fireEvent(new 
ReplyMessageEvent(user,folder,message,true));
+                       }
+                       
+               });
+               
        }
 
        @Override

Modified: labs/hupa/src/main/java/org/apache/hupa/client/mvp/MainPresenter.java
URL: 
http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/client/mvp/MainPresenter.java?rev=801323&r1=801322&r2=801323&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/client/mvp/MainPresenter.java 
(original)
+++ labs/hupa/src/main/java/org/apache/hupa/client/mvp/MainPresenter.java Wed 
Aug  5 17:25:34 2009
@@ -51,6 +51,8 @@
 import org.apache.hupa.shared.events.MessagesReceivedEventHandler;
 import org.apache.hupa.shared.events.NewMessageEvent;
 import org.apache.hupa.shared.events.NewMessageEventHandler;
+import org.apache.hupa.shared.events.ReplyMessageEvent;
+import org.apache.hupa.shared.events.ReplyMessageEventHandler;
 import org.apache.hupa.shared.events.SentMessageEvent;
 import org.apache.hupa.shared.events.SentMessageEventHandler;
 import org.apache.hupa.shared.rpc.ExposeMessage;
@@ -200,6 +202,16 @@
                
sendPresenter.bind(event.getUser(),event.getFolder(),event.getMessage(),Type.FORWARD);
                display.setCenter(sendPresenter.getDisplay().asWidget());
        }
+       
+       private void showReplyMessage(ReplyMessageEvent event) {
+               if (event.getReplyAll()) {
+                       
sendPresenter.bind(event.getUser(),event.getFolder(),event.getMessage(),Type.REPLY_ALL);
+               } else {
+                       
sendPresenter.bind(event.getUser(),event.getFolder(),event.getMessage(),Type.REPLY);
+
+               }
+               display.setCenter(sendPresenter.getDisplay().asWidget());
+       }
        private void reset() {
                display.getSearchValue().setValue("");
                display.bindTreeItems(new ArrayList<IMAPTreeItem>());
@@ -289,6 +301,13 @@
                        }
                        
                });
+               eventBus.addHandler(ReplyMessageEvent.TYPE, new 
ReplyMessageEventHandler() {
+
+                       public void onReplyMessageEvent(ReplyMessageEvent 
event) {
+                               showReplyMessage(event);
+                       }
+                       
+               });
                
                Window.addWindowClosingHandler(new ClosingHandler() {
 

Modified: 
labs/hupa/src/main/java/org/apache/hupa/client/mvp/MessageSendPresenter.java
URL: 
http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/client/mvp/MessageSendPresenter.java?rev=801323&r1=801322&r2=801323&view=diff
==============================================================================
--- 
labs/hupa/src/main/java/org/apache/hupa/client/mvp/MessageSendPresenter.java 
(original)
+++ 
labs/hupa/src/main/java/org/apache/hupa/client/mvp/MessageSendPresenter.java 
Wed Aug  5 17:25:34 2009
@@ -46,6 +46,7 @@
 import org.apache.hupa.shared.events.SentMessageEvent;
 import org.apache.hupa.shared.rpc.EmptyResult;
 import org.apache.hupa.shared.rpc.ForwardMessage;
+import org.apache.hupa.shared.rpc.ReplyMessage;
 import org.apache.hupa.shared.rpc.SendMessage;
 
 import com.google.gwt.event.dom.client.ClickEvent;
@@ -63,7 +64,7 @@
        public static final Place PLACE = new Place("MessageSend");
        private ArrayList<MessageAttachment> aList = new 
ArrayList<MessageAttachment>();
        private UploaderValueChangeHandler handler = new 
UploaderValueChangeHandler();
-       private Type type = Type.FORWARD;
+       private Type type = Type.NEW;
        private IMAPFolder folder;
        private IMAPMessage oldmessage;
        
@@ -176,8 +177,19 @@
                                                        }
                                                
                                                });
-                                       }
+                                       } else if(type.equals(Type.REPLY) || 
type.equals(Type.REPLY_ALL)) {
                                        
+                                               boolean replyAll = 
type.equals(Type.REPLY_ALL);
+                                               dispatcher.execute(new 
ReplyMessage(user.getSessionId(),message,folder,oldmessage.getUid(),replyAll), 
new MyAsyncCallback<EmptyResult>(eventBus,user) {
+
+                                                       public void 
onSuccess(EmptyResult result) {
+                                                               reset();
+                                                               
eventBus.fireEvent(new SentMessageEvent());
+                                                       }
+                                               
+                                               });
+                                       
+                                       }
                                }
                
                        
@@ -265,7 +277,23 @@
                if (type.equals(Type.FORWARD)) {
                        display.getSubjectText().setText("Fwd: " + 
oldmessage.getHeader().getSubject());
                        display.getMessageText().setText("\n\n-------- Original 
Message -------\n" );
-               } else {
+               } else if (type.equals(Type.REPLY) || 
type.equals(Type.REPLY_ALL)) {
+                       display.getSubjectText().setText("Re: " + 
oldmessage.getHeader().getSubject());
+                       
+                       // TODO: Set original message content
+                       display.getMessageText().setText("\n\n-------- Message 
-------\n" );
+
+                       if (type.equals(Type.REPLY)) {
+                               
display.getToText().setText(oldmessage.getHeader().getFrom());
+                       } else {
+                               
oldmessage.getHeader().getCc().remove(user.getName());
+                               
display.getCcText().setText(arrayToString(oldmessage.getHeader().getCc()));
+                               
oldmessage.getHeader().getTo().remove(user.getName());
+
+                               
display.getToText().setText(arrayToString(oldmessage.getHeader().getTo()));
+
+                       }
+               }else {
                        display.getSubjectText().setText("");
                        display.getMessageText().setText("");
                }
@@ -275,4 +303,17 @@
                bind(user,null,null,type);
        }
        
+
+       private String arrayToString(ArrayList<String> aList) {
+               StringBuffer sb = new StringBuffer();
+               for (int i = 0; i < aList.size(); i++) {
+                       sb.append(aList.get(i));
+                       if (i < aList.size()-1) {
+                               sb.append(", ");
+                       }
+               }
+               return sb.toString();
+       }
+
+       
 }

Modified: 
labs/hupa/src/main/java/org/apache/hupa/server/handler/AbstractSendMessageHandler.java
URL: 
http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/server/handler/AbstractSendMessageHandler.java?rev=801323&r1=801322&r2=801323&view=diff
==============================================================================
--- 
labs/hupa/src/main/java/org/apache/hupa/server/handler/AbstractSendMessageHandler.java
 (original)
+++ 
labs/hupa/src/main/java/org/apache/hupa/server/handler/AbstractSendMessageHandler.java
 Wed Aug  5 17:25:34 2009
@@ -28,6 +28,7 @@
 
 import javax.activation.DataHandler;
 import javax.activation.DataSource;
+import javax.mail.Address;
 import javax.mail.Folder;
 import javax.mail.Message;
 import javax.mail.MessagingException;
@@ -36,6 +37,7 @@
 import javax.mail.Transport;
 import javax.mail.Flags.Flag;
 import javax.mail.internet.AddressException;
+import javax.mail.internet.InternetAddress;
 import javax.mail.internet.MimeBodyPart;
 import javax.mail.internet.MimeMultipart;
 import javax.mail.internet.MimeMessage.RecipientType;
@@ -240,6 +242,17 @@
                return new EmptyResult();
        }
 
+       protected Address[] getRecipients(ArrayList<String> recipients) throws 
AddressException {
+               if (recipients == null) {
+                       return new InternetAddress[]{};
+               }
+               Address[] array = new Address[recipients.size()];
+               for (int i = 0; i < recipients.size(); i++) {
+                       array[i] = new InternetAddress(recipients.get(i));
+               }
+               return array;
+
+       }
        public void rollback(A arg0, EmptyResult arg1, ExecutionContext arg2)
                        throws ActionException {
                // TODO Auto-generated method stub

Modified: 
labs/hupa/src/main/java/org/apache/hupa/server/handler/ReplyMessageHandler.java
URL: 
http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/server/handler/ReplyMessageHandler.java?rev=801323&r1=801322&r2=801323&view=diff
==============================================================================
--- 
labs/hupa/src/main/java/org/apache/hupa/server/handler/ReplyMessageHandler.java 
(original)
+++ 
labs/hupa/src/main/java/org/apache/hupa/server/handler/ReplyMessageHandler.java 
Wed Aug  5 17:25:34 2009
@@ -19,10 +19,13 @@
 
 package org.apache.hupa.server.handler;
 
+import javax.mail.Folder;
 import javax.mail.Message;
 import javax.mail.MessagingException;
 import javax.mail.Session;
 import javax.mail.internet.AddressException;
+import javax.mail.internet.InternetAddress;
+import javax.mail.internet.MimeMessage.RecipientType;
 import javax.servlet.http.HttpSession;
 
 import net.customware.gwt.dispatch.shared.ActionException;
@@ -54,8 +57,20 @@
                        throws AddressException, MessagingException, 
ActionException {
                IMAPStore store = cache.get(getUser(action.getSessionId()));
                IMAPFolder folder = (IMAPFolder) 
store.getFolder(action.getFolder().getFullName());
-               Message m = folder.getMessageByUID(action.getReplyMessageUid());
-               return m.reply(action.getReplyAll());
+               if (folder.isOpen() == false) {
+                       folder.open(Folder.READ_ONLY);
+               }
+               Message rMessage =  
folder.getMessageByUID(action.getReplyMessageUid()).reply(action.getReplyAll());
+               org.apache.hupa.shared.data.Message m = action.getMessage();
+               // Use the new recipient list, maybe it has changed
+               rMessage.setRecipients(RecipientType.TO, 
getRecipients(m.getHeader().getTo()));
+               rMessage.setRecipients(RecipientType.CC, 
getRecipients(m.getHeader().getCc()));
+               rMessage.setRecipients(RecipientType.BCC, 
getRecipients(m.getHeader().getBcc()));
+               rMessage.setFrom(new InternetAddress(m.getHeader().getFrom()));
+               // replace subject
+               rMessage.setSubject(m.getHeader().getSubject());
+               rMessage.saveChanges();
+               return rMessage;
        }
 
        /*

Modified: 
labs/hupa/src/main/java/org/apache/hupa/server/handler/SendMessageHandler.java
URL: 
http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/server/handler/SendMessageHandler.java?rev=801323&r1=801322&r2=801323&view=diff
==============================================================================
--- 
labs/hupa/src/main/java/org/apache/hupa/server/handler/SendMessageHandler.java 
(original)
+++ 
labs/hupa/src/main/java/org/apache/hupa/server/handler/SendMessageHandler.java 
Wed Aug  5 17:25:34 2009
@@ -19,8 +19,6 @@
 
 package org.apache.hupa.server.handler;
 
-import java.util.ArrayList;
-
 import javax.mail.Message;
 import javax.mail.MessagingException;
 import javax.mail.Session;
@@ -55,17 +53,9 @@
                MimeMessage message = new MimeMessage(session);
                org.apache.hupa.shared.data.Message m = action.getMessage();
                message.setFrom(new InternetAddress(m.getHeader().getFrom()));
-               ArrayList<String> to = m.getHeader().getTo();
-               for (int i = 0; i < to.size(); i++) {
-                       message.addRecipient(RecipientType.TO, new 
InternetAddress(to
-                                       .get(i)));
-               }
-
-               ArrayList<String> cc = m.getHeader().getCc();
-               for (int i = 0; i < cc.size(); i++) {
-                       message.addRecipient(RecipientType.CC, new 
InternetAddress(cc
-                                       .get(i)));
-               }
+               message.setRecipients(RecipientType.TO, 
getRecipients(m.getHeader().getTo()));
+               message.setRecipients(RecipientType.CC, 
getRecipients(m.getHeader().getCc()));
+               message.setRecipients(RecipientType.BCC, 
getRecipients(m.getHeader().getBcc()));
                message.setSubject(m.getHeader().getSubject());
                return message;
        }

Modified: labs/hupa/src/main/java/org/apache/hupa/shared/data/MessageHeader.java
URL: 
http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/shared/data/MessageHeader.java?rev=801323&r1=801322&r2=801323&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/shared/data/MessageHeader.java 
(original)
+++ labs/hupa/src/main/java/org/apache/hupa/shared/data/MessageHeader.java Wed 
Aug  5 17:25:34 2009
@@ -40,6 +40,7 @@
        private ArrayList<String> to;
        private ArrayList<String> cc;
        private Date rDate;
+       private ArrayList<String> bcc;
 
        /**
         * Set a raw String representation of the header
@@ -130,4 +131,13 @@
                return raw;
        }
 
+       public ArrayList<String> getBcc() {
+               return bcc;
+       }
+       public void setBcc( ArrayList<String> bcc) {
+               this.bcc = bcc;
+       }
+
+
+
 }

Modified: 
labs/hupa/src/main/java/org/apache/hupa/shared/events/NewMessageEvent.java
URL: 
http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/shared/events/NewMessageEvent.java?rev=801323&r1=801322&r2=801323&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/shared/events/NewMessageEvent.java 
(original)
+++ labs/hupa/src/main/java/org/apache/hupa/shared/events/NewMessageEvent.java 
Wed Aug  5 17:25:34 2009
@@ -1,3 +1,22 @@
+/****************************************************************
+ * 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.shared.events;
 
 import com.google.gwt.event.shared.GwtEvent;

Modified: 
labs/hupa/src/main/java/org/apache/hupa/shared/events/NewMessageEventHandler.java
URL: 
http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/shared/events/NewMessageEventHandler.java?rev=801323&r1=801322&r2=801323&view=diff
==============================================================================
--- 
labs/hupa/src/main/java/org/apache/hupa/shared/events/NewMessageEventHandler.java
 (original)
+++ 
labs/hupa/src/main/java/org/apache/hupa/shared/events/NewMessageEventHandler.java
 Wed Aug  5 17:25:34 2009
@@ -1,3 +1,22 @@
+/****************************************************************
+ * 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.shared.events;
 
 import com.google.gwt.event.shared.EventHandler;

Added: 
labs/hupa/src/main/java/org/apache/hupa/shared/events/ReplyMessageEvent.java
URL: 
http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/shared/events/ReplyMessageEvent.java?rev=801323&view=auto
==============================================================================
--- 
labs/hupa/src/main/java/org/apache/hupa/shared/events/ReplyMessageEvent.java 
(added)
+++ 
labs/hupa/src/main/java/org/apache/hupa/shared/events/ReplyMessageEvent.java 
Wed Aug  5 17:25:34 2009
@@ -0,0 +1,68 @@
+/****************************************************************
+ * 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.shared.events;
+
+import org.apache.hupa.shared.data.IMAPFolder;
+import org.apache.hupa.shared.data.IMAPMessage;
+import org.apache.hupa.shared.data.User;
+
+import com.google.gwt.event.shared.GwtEvent;
+
+public class ReplyMessageEvent extends GwtEvent<ReplyMessageEventHandler>{
+
+       public final static Type<ReplyMessageEventHandler> TYPE = new 
Type<ReplyMessageEventHandler>();
+       private User user;
+       private IMAPFolder folder;
+       private IMAPMessage message;
+       private boolean replyAll;
+       @Override
+       protected void dispatch(ReplyMessageEventHandler handler) {
+               handler.onReplyMessageEvent(this);
+       }
+
+       @Override
+       public 
com.google.gwt.event.shared.GwtEvent.Type<ReplyMessageEventHandler> 
getAssociatedType() {
+               return TYPE;
+       }
+       
+       public ReplyMessageEvent(User user, IMAPFolder folder, IMAPMessage 
message, boolean replyAll) {
+               this.user = user;
+               this.folder = folder;
+               this.message = message;
+               this.replyAll = replyAll;
+       }
+       
+       public User getUser() {
+               return user;
+       }
+       
+       public IMAPFolder getFolder() {
+               return folder;
+       }
+       
+       public IMAPMessage getMessage() {
+               return message;
+       }
+       
+       public boolean getReplyAll() {
+               return replyAll;
+       }
+
+}

Added: 
labs/hupa/src/main/java/org/apache/hupa/shared/events/ReplyMessageEventHandler.java
URL: 
http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/shared/events/ReplyMessageEventHandler.java?rev=801323&view=auto
==============================================================================
--- 
labs/hupa/src/main/java/org/apache/hupa/shared/events/ReplyMessageEventHandler.java
 (added)
+++ 
labs/hupa/src/main/java/org/apache/hupa/shared/events/ReplyMessageEventHandler.java
 Wed Aug  5 17:25:34 2009
@@ -0,0 +1,27 @@
+/****************************************************************
+ * 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.shared.events;
+
+import com.google.gwt.event.shared.EventHandler;
+
+public interface ReplyMessageEventHandler extends EventHandler{
+
+       public void onReplyMessageEvent(ReplyMessageEvent event);
+}



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

Reply via email to