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("<", "&lt;").replaceAll(">", "&gt;") + "<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("<", "&lt;").replaceAll(">", "&gt;") + "<br>";
+                       } else if (type.equals("reply") || 
type.equals("replyAll")) {
+                               ret += "On " + message.getReceivedDate();
+                               ret += ", " + message.getFrom().replaceAll("<", 
"&lt;").replaceAll(">", "&gt;");
+                               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

Reply via email to