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]