Author: dongxu
Date: Thu Sep 12 04:13:49 2013
New Revision: 1522313
URL: http://svn.apache.org/r1522313
Log:
fill the empty compose view with the old message when the composing type are
reply, replyAll, forward and preparing for about & deleting operation
Modified:
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/ComposeActivity.java
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/ToolBarActivity.java
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessageListView.java
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/ToolBarView.java
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/TopBarView.java
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/TopBarView.ui.xml
james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/events/ExpandMessageEvent.java
Modified:
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/ComposeActivity.java
URL:
http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/ComposeActivity.java?rev=1522313&r1=1522312&r2=1522313&view=diff
==============================================================================
---
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/ComposeActivity.java
(original)
+++
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/ComposeActivity.java
Thu Sep 12 04:13:49 2013
@@ -72,10 +72,13 @@ import org.apache.hupa.client.rf.SendMes
import org.apache.hupa.client.rf.SendReplyMessageRequest;
import org.apache.hupa.client.ui.WidgetDisplayable;
import org.apache.hupa.client.validation.EmailListValidator;
+import org.apache.hupa.shared.Util;
import org.apache.hupa.shared.data.MessageAttachmentImpl;
import org.apache.hupa.shared.domain.GenericResult;
import org.apache.hupa.shared.domain.ImapFolder;
+import org.apache.hupa.shared.domain.Message;
import org.apache.hupa.shared.domain.MessageAttachment;
+import org.apache.hupa.shared.domain.MessageDetails;
import org.apache.hupa.shared.domain.SendForwardMessageAction;
import org.apache.hupa.shared.domain.SendMessageAction;
import org.apache.hupa.shared.domain.SendReplyMessageAction;
@@ -407,10 +410,96 @@ public class ComposeActivity extends App
=======
>>>>>>> add user label, yet issue46 occur
bindTo(eventBus);
+ fillHeader();
+ }
+
+ private void fillHeader() {
+ if (place == null)
+ return;
+ Message oldMessage = place.getParameters().getOldmessage();
if (user != null)
display.getFromList().addItem(user.getName());
+ display.getMessageHTML().setHTML(
+ wrapMessage(oldMessage,
place.getParameters().getOldDetails(), place.getToken()));
+ if ("forward".equals(place.getToken())) {
+ String subject = oldMessage.getSubject() != null ?
oldMessage.getSubject().trim() : "";
+ if (!subject.toLowerCase().startsWith("fwd:")) {
+ subject = "Fwd: " + subject;
+ }
+ display.getSubject().setText(subject);
+ } else if ("reply".equals(place.getToken()) ||
"replyAll".equals(place.getToken())) {
+
+ String subject = oldMessage.getSubject() != null ?
oldMessage.getSubject().trim() : "";
+ if (!subject.toLowerCase().startsWith("re:")) {
+ subject = "Re: " + subject;
+ }
+ if ("reply".equals(place.getToken())) {
+ display.getSubject().setText(subject);
+ if (oldMessage.getReplyto() != null &&
!oldMessage.getFrom().contains(oldMessage.getReplyto())) {
+
display.getTo().setText(oldMessage.getReplyto());
+ } else {
+
display.getTo().setText(oldMessage.getFrom());
+ }
+ } else if ("replyAll".equals(place.getToken())) {
+ ArrayList<String> list = new
ArrayList<String>();
+ if (oldMessage.getReplyto() != null &&
!oldMessage.getFrom().contains(oldMessage.getReplyto()))
+ list.add(oldMessage.getReplyto());
+ if (oldMessage.getTo() != null)
+ list.addAll(oldMessage.getTo());
+ if (oldMessage.getCc() != null)
+ list.addAll(oldMessage.getCc());
+ list = removeEmailFromList(list,
user.getName());
+
display.getCc().setText(Util.listToString(list));
+ if (oldMessage.getTo() != null) {
+
oldMessage.getTo().remove(user.getName());
+ }
+ display.getTo().setText(oldMessage.getFrom());
+ }
+ }
}
+ protected ArrayList<String> removeEmailFromList(List<String> list,
String email) {
+ ArrayList<String> ret = new ArrayList<String>();
+ String regex = ".*<?\\s*" + email.trim() + "\\s*>?\\s*";
+ for (String e : list) {
+ if (!e.matches(regex)) {
+ ret.add(e);
+ }
+ }
+ return ret;
+ }
+ private static String generateHeader(Message message, String type) {
+ String ret = "<br>";
+ if (message != null) {
+ if (type.equals("forward")) {
+ ret += "--------- Forwarded message ---------
<br>";
+ ret += "From: " +
message.getFrom().replaceAll("<", "<").replaceAll(">", ">") + "<br>";
+ ret += "Date: " + message.getReceivedDate() +
"<br>";
+ ret += "Subject: " + message.getSubject() +
"<br>";
+ ArrayList<String> to = new ArrayList<String>();
+ to.addAll(message.getTo());
+ to.addAll(message.getCc());
+ ret += "To: " +
Util.listToString(to).replaceAll("<", "<").replaceAll(">", ">") + "<br>";
+ } else if (type.equals("reply") ||
type.equals("replyAll")) {
+ ret += "On " + message.getReceivedDate();
+ ret += ", " + message.getFrom().replaceAll("<",
"<").replaceAll(">", ">");
+ ret += ". wrote:<br>";
+ }
+ }
+ return ret + "<br>";
+ }
+ public static String wrapMessage(Message message, MessageDetails
details, String type) {
+ String ret = "";
+ if (message != null) {
+ ret += generateHeader(message, type);
+ }
+ if (details != null && details.getText() != null &&
details.getText().length() > 0) {
+ ret += "<blockquote style='border-left: 1px solid
rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;'>";
+ ret += details.getText();
+ ret += "</blockquote>";
+ }
+ return ret;
+ }
private void bindTo(EventBus eventBus) {
eventBus.addHandler(LoginEvent.TYPE, new LoginEventHandler() {
@Override
Modified:
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/ToolBarActivity.java
URL:
http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/ToolBarActivity.java?rev=1522313&r1=1522312&r2=1522313&view=diff
==============================================================================
---
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/ToolBarActivity.java
(original)
+++
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/ToolBarActivity.java
Thu Sep 12 04:13:49 2013
@@ -197,7 +197,7 @@ public class ToolBarActivity extends App
eventBus.addHandler(ExpandMessageEvent.TYPE, new
ExpandMessageEventHandler() {
public void onExpandMessage(ExpandMessageEvent event) {
display.enableMessageTools();
- display.setParameters(new
Parameters(event.getUser(), event.getFolder(), event.getMessage(), null));
+ display.setParameters(new
Parameters(event.getUser(), event.getFolder(), event.getMessage(),
event.getMessageDetails()));
}
});
}
Modified:
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessageListView.java
URL:
http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessageListView.java?rev=1522313&r1=1522312&r2=1522313&view=diff
==============================================================================
---
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessageListView.java
(original)
+++
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessageListView.java
Thu Sep 12 04:13:49 2013
@@ -137,7 +137,7 @@ public class MessageListView extends Com
req.get(action).fire(new
Receiver<GetMessageDetailsResult>() {
@Override
public void
onSuccess(GetMessageDetailsResult response) {
- eventBus.fireEvent(new
ExpandMessageEvent(user, folder, event.getValue()));
+ eventBus.fireEvent(new
ExpandMessageEvent(user, folder, event.getValue(),
response.getMessageDetails()));
placeController.goTo(new MailFolderPlace(f.getFullName() + "/" +
event.getValue().getUid()));
}
Modified:
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/ToolBarView.java
URL:
http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/ToolBarView.java?rev=1522313&r1=1522312&r2=1522313&view=diff
==============================================================================
---
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/ToolBarView.java
(original)
+++
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/ToolBarView.java
Thu Sep 12 04:13:49 2013
@@ -21,6 +21,7 @@ package org.apache.hupa.client.ui;
<<<<<<< HEAD
<<<<<<< HEAD
+<<<<<<< HEAD
import org.apache.hupa.client.activity.ToolBarActivity;
import org.apache.hupa.client.place.ComposePlace;
<<<<<<< HEAD
@@ -31,6 +32,16 @@ import org.apache.hupa.shared.domain.Mes
import org.apache.hupa.shared.domain.User;
import org.apache.hupa.shared.events.DeleteClickEvent;
=======
+=======
+import java.util.ArrayList;
+
+import org.apache.hupa.client.activity.ToolBarActivity;
+import org.apache.hupa.client.place.ComposePlace;
+import org.apache.hupa.client.rf.DeleteMessageByUidRequest;
+import org.apache.hupa.client.rf.HupaRequestFactory;
+import org.apache.hupa.shared.domain.DeleteMessageByUidAction;
+import org.apache.hupa.shared.domain.DeleteMessageResult;
+>>>>>>> fill the empty compose view with the old message when the composing
type are reply, replyAll, forward and preparing for about & deleting operation
import org.apache.hupa.shared.domain.ImapFolder;
import org.apache.hupa.shared.domain.Message;
import org.apache.hupa.shared.domain.MessageDetails;
@@ -356,10 +367,12 @@ import com.google.gwt.user.client.ui.Com
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.HTMLPanel;
import com.google.inject.Inject;
+import com.google.web.bindery.requestfactory.shared.Receiver;
public class ToolBarView extends Composite implements
ToolBarActivity.Displayable {
@Inject PlaceController placeController;
+ @Inject protected HupaRequestFactory requestFactory;
@UiField Anchor refresh;
@UiField Anchor compose;
@@ -445,11 +458,37 @@ public class ToolBarView extends Composi
placeController.goTo(new
ComposePlace("reply").with(parameters));
}
+ @UiHandler("replyAll")
+ void handleReplyAllClick(ClickEvent e) {
+ placeController.goTo(new
ComposePlace("replyAll").with(parameters));
+ }
+
@UiHandler("forward")
void handleForwardClick(ClickEvent e) {
placeController.goTo(new
ComposePlace("forward").with(parameters));
}
+ @UiHandler("delete")
+ void handleDeleteClick(ClickEvent e) {
+ if (null == parameters)
+ return;
+ ArrayList<Long> uidList = new ArrayList<Long>();
+ uidList.add(parameters.getOldmessage().getUid());
+ DeleteMessageByUidRequest req =
requestFactory.deleteMessageByUidRequest();
+ DeleteMessageByUidAction action =
req.create(DeleteMessageByUidAction.class);
+ ImapFolder f = req.create(ImapFolder.class);
+ f.setFullName(parameters.getFolder().getFullName());
+ action.setMessageUids(uidList);
+ action.setFolder(f);
+ req.delete(action).fire(new Receiver<DeleteMessageResult>() {
+ @Override
+ public void onSuccess(DeleteMessageResult response) {
+ // TODO how to refresh the message list
+
placeController.goTo(placeController.getWhere());
+ }
+ });
+ }
+
public ToolBarView() {
initWidget(binder.createAndBindUi(this));
<<<<<<< HEAD
Modified:
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/TopBarView.java
URL:
http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/TopBarView.java?rev=1522313&r1=1522312&r2=1522313&view=diff
==============================================================================
---
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/TopBarView.java
(original)
+++
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/TopBarView.java
Thu Sep 12 04:13:49 2013
@@ -25,6 +25,9 @@ import org.apache.hupa.client.activity.T
import com.google.gwt.core.client.GWT;
<<<<<<< HEAD
+<<<<<<< HEAD
+=======
+>>>>>>> fill the empty compose view with the old message when the composing
type are reply, replyAll, forward and preparing for about & deleting operation
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.HasClickHandlers;
import com.google.gwt.resources.client.CssResource;
@@ -87,11 +90,15 @@ public class TopBarView extends Composit
initWidget(binder.createAndBindUi(this));
}
<<<<<<< HEAD
+<<<<<<< HEAD
+=======
+>>>>>>> fill the empty compose view with the old message when the composing
type are reply, replyAll, forward and preparing for about & deleting operation
@UiHandler("about")
void handleAboutClick(ClickEvent e){
Window.alert("// TODO show about model view");
}
+<<<<<<< HEAD
@Override
public void showLoading(String message){
@@ -122,6 +129,8 @@ public class TopBarView extends Composit
}
=======
>>>>>>> make login page as one part of the overall layout & splite layout to
>>>>>>> little one
+=======
+>>>>>>> fill the empty compose view with the old message when the composing
type are reply, replyAll, forward and preparing for about & deleting operation
@Override
public HasClickHandlers getLogoutClick() {
Modified:
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/TopBarView.ui.xml
URL:
http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/TopBarView.ui.xml?rev=1522313&r1=1522312&r2=1522313&view=diff
==============================================================================
---
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/TopBarView.ui.xml
(original)
+++
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/TopBarView.ui.xml
Thu Sep 12 04:13:49 2013
@@ -119,7 +119,7 @@
addStyleNames="{style.self}">
<g:west size="60">
<g:SimplePanel addStyleNames="{style.left}">
- <g:Anchor
styleName="{style.about}">About</g:Anchor>
+ <g:Anchor ui:field="about"
styleName="{style.about}">About</g:Anchor>
</g:SimplePanel>
</g:west>
<g:center>
Modified:
james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/events/ExpandMessageEvent.java
URL:
http://svn.apache.org/viewvc/james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/events/ExpandMessageEvent.java?rev=1522313&r1=1522312&r2=1522313&view=diff
==============================================================================
---
james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/events/ExpandMessageEvent.java
(original)
+++
james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/events/ExpandMessageEvent.java
Thu Sep 12 04:13:49 2013
@@ -113,6 +113,9 @@ public class ExpandMessageEvent extends
<<<<<<< HEAD
<<<<<<< HEAD
+<<<<<<< HEAD
+=======
+>>>>>>> fill the empty compose view with the old message when the composing
type are reply, replyAll, forward and preparing for about & deleting operation
public ExpandMessageEvent(User user, ImapFolder folder, Message message,
MessageDetails messageDetails) {
this.message = message;
this.folder = folder;
@@ -121,12 +124,15 @@ public class ExpandMessageEvent extends
}
public Message getMessage() {
+<<<<<<< HEAD
=======
public Message getMessage() {
>>>>>>> first commit
=======
public Message getMessage() {
>>>>>>> first commit
+=======
+>>>>>>> fill the empty compose view with the old message when the composing
type are reply, replyAll, forward and preparing for about & deleting operation
return message;
}
@@ -167,7 +173,14 @@ public class ExpandMessageEvent extends
return folder;
}
+<<<<<<< HEAD
>>>>>>> first commit
+=======
+ public MessageDetails getMessageDetails(){
+ return messageDetails;
+ }
+
+>>>>>>> fill the empty compose view with the old message when the composing
type are reply, replyAll, forward and preparing for about & deleting operation
@Override
protected void dispatch(ExpandMessageEventHandler handler) {
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]