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: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org