Author: dongxu
Date: Thu Sep 12 03:55:54 2013
New Revision: 1522274

URL: http://svn.apache.org/r1522274
Log:
make reload message content work, use the same place with folder list, while 
separated with slash, that looks like Gmail's

Modified:
    
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/IMAPMessageListActivity.java
    
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/LoginActivity.java
    
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/MessageContentActivity.java
    
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/MessageListActivity.java
    
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/TopBarActivity.java
    
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mapper/AppPlaceHistoryMapper.java
    
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mapper/CachingWestActivityMapper.java
    
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mapper/MessageContentActivityMapper.java
    
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/place/IMAPMessagePlace.java
    
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/place/MailFolderPlace.java
    
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/FoldersTreeViewModel.java
    
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessageListView.java

Modified: 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/IMAPMessageListActivity.java
URL: 
http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/IMAPMessageListActivity.java?rev=1522274&r1=1522273&r2=1522274&view=diff
==============================================================================
--- 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/IMAPMessageListActivity.java
 (original)
+++ 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/IMAPMessageListActivity.java
 Thu Sep 12 03:55:54 2013
@@ -869,7 +869,7 @@ public class IMAPMessageListActivity ext
     }
        public IMAPMessageListActivity with(MailFolderPlace place) {
                this.user = place.getUser();
-               this.folder = place.getFolder();
+//             this.folder = place.getFolder();
                this.searchValue = place.getSearchValue();
 <<<<<<< HEAD
 <<<<<<< HEAD

Modified: 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/LoginActivity.java
URL: 
http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/LoginActivity.java?rev=1522274&r1=1522273&r2=1522274&view=diff
==============================================================================
--- 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/LoginActivity.java
 (original)
+++ 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/LoginActivity.java
 Thu Sep 12 03:55:54 2013
@@ -487,7 +487,7 @@ public class LoginActivity extends Abstr
                        public void onSuccess(User response) {
                                RootLayoutPanel.get().clear();
                                RootLayoutPanel.get().add(hupaLayout.get());
-                               placeController.goTo(new MailFolderPlace());
+                               placeController.goTo(new 
MailFolderPlace(response.getSettings().getDraftsFolderName()));
                                eventBus.fireEvent(new LoginEvent(response));
                        }
                        @Override

Modified: 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/MessageContentActivity.java
URL: 
http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/MessageContentActivity.java?rev=1522274&r1=1522273&r2=1522274&view=diff
==============================================================================
--- 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/MessageContentActivity.java
 (original)
+++ 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/MessageContentActivity.java
 Thu Sep 12 03:55:54 2013
@@ -21,6 +21,7 @@ package org.apache.hupa.client.activity;
 
 <<<<<<< HEAD
 <<<<<<< HEAD
+<<<<<<< HEAD
 import java.util.List;
 import java.util.logging.Level;
 import java.util.logging.Logger;
@@ -165,35 +166,65 @@ public class MessageContentActivity exte
 =======
 import org.apache.hupa.client.place.IMAPMessagePlace;
 >>>>>>> make message content work as expected partly
+=======
+import org.apache.hupa.client.place.MailFolderPlace;
+import org.apache.hupa.client.rf.GetMessageDetailsRequest;
+>>>>>>> make reload message content work, use the same place with folder list, 
while separated with slash, that looks like Gmail's
 import org.apache.hupa.client.ui.WidgetDisplayable;
-import org.apache.hupa.shared.domain.MessageDetails;
+import org.apache.hupa.shared.domain.GetMessageDetailsAction;
+import org.apache.hupa.shared.domain.GetMessageDetailsResult;
+import org.apache.hupa.shared.domain.ImapFolder;
 
 import com.google.gwt.event.shared.EventBus;
 import com.google.gwt.user.client.ui.AcceptsOneWidget;
 import com.google.inject.Inject;
+import com.google.web.bindery.requestfactory.shared.Receiver;
 
 public class MessageContentActivity extends AppBaseActivity {
-       
-       MessageDetails messageDetails;
+
+       private String fullName;
+       private String uid;
 
        @Override
        public void start(AcceptsOneWidget container, EventBus eventBus) {
-               display.fillMessageContent(messageDetails.getText());
+               if (uid != null && uid.matches("\\d+")) {
+                       GetMessageDetailsRequest req = requestFactory
+                                       .messageDetailsRequest();
+                       GetMessageDetailsAction action = req
+                                       .create(GetMessageDetailsAction.class);
+                       final ImapFolder f = req.create(ImapFolder.class);
+                       f.setFullName(fullName);
+                       action.setFolder(f);
+                       action.setUid(Long.parseLong(uid));
+                       req.get(action).fire(new 
Receiver<GetMessageDetailsResult>() {
+                               @Override
+                               public void onSuccess(GetMessageDetailsResult 
response) {
+                                       
display.fillMessageContent(response.getMessageDetails()
+                                                       .getText());
+
+                               }
+                       });
+               }
                container.setWidget(display.asWidget());
        }
 
        @Inject private Displayable display;
+<<<<<<< HEAD
        
 <<<<<<< HEAD
        public interface Displayable extends WidgetDisplayable {}
 >>>>>>> integrate all of the views to their corresponding activities and 
 >>>>>>> mappers
 =======
+=======
+
+>>>>>>> make reload message content work, use the same place with folder list, 
while separated with slash, that looks like Gmail's
        public interface Displayable extends WidgetDisplayable {
                void fillMessageContent(String messageContent);
        }
-       
-       public MessageContentActivity with(IMAPMessagePlace 
messageContentPlace){
-               messageDetails = messageContentPlace.getMessageDetails();
+
+       public MessageContentActivity with(MailFolderPlace place) {
+               this.fullName = place.getFullName();
+               this.uid = place.getMessageId();
                return this;
        }
 >>>>>>> make message content work as expected partly

Modified: 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/MessageListActivity.java
URL: 
http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/MessageListActivity.java?rev=1522274&r1=1522273&r2=1522274&view=diff
==============================================================================
--- 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/MessageListActivity.java
 (original)
+++ 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/MessageListActivity.java
 Thu Sep 12 03:55:54 2013
@@ -21,6 +21,7 @@ package org.apache.hupa.client.activity;
 
 <<<<<<< HEAD
 <<<<<<< HEAD
+<<<<<<< HEAD
 import java.util.Collection;
 import java.util.List;
 import java.util.Set;
@@ -246,28 +247,20 @@ import org.apache.hupa.client.place.IMAP
 import org.apache.hupa.client.place.MailFolderPlace;
 import org.apache.hupa.client.rf.GetMessageDetailsRequest;
 >>>>>>> prepare for message content panel
+=======
+import org.apache.hupa.client.place.MailFolderPlace;
+>>>>>>> make reload message content work, use the same place with folder list, 
while separated with slash, that looks like Gmail's
 import org.apache.hupa.client.ui.WidgetDisplayable;
-import org.apache.hupa.shared.data.MessageImpl.IMAPFlag;
-import org.apache.hupa.shared.domain.GetMessageDetailsAction;
-import org.apache.hupa.shared.domain.GetMessageDetailsResult;
+import org.apache.hupa.shared.data.ImapFolderImpl;
 import org.apache.hupa.shared.domain.ImapFolder;
-import org.apache.hupa.shared.domain.Message;
-import org.apache.hupa.shared.domain.User;
-import org.apache.hupa.shared.events.ExpandMessageEvent;
-import org.apache.hupa.shared.events.ExpandMessageEventHandler;
-import org.apache.hupa.shared.events.LoginEvent;
-import org.apache.hupa.shared.events.LoginEventHandler;
 
 import com.google.gwt.event.shared.EventBus;
 import com.google.gwt.user.client.ui.AcceptsOneWidget;
 import com.google.inject.Inject;
-import com.google.web.bindery.requestfactory.shared.Receiver;
 
 public class MessageListActivity extends AppBaseActivity {
 
-       // @Inject private Provider<IMAPMessagePlace> messagePlaceProvider;
-       private User user;
-       private String searchValue;
+       @Inject private Displayable display;
 
        @Override
        public void start(AcceptsOneWidget container, EventBus eventBus) {
@@ -276,62 +269,15 @@ public class MessageListActivity extends
        }
 
        private void bindTo(EventBus eventBus) {
-               eventBus.addHandler(LoginEvent.TYPE, new LoginEventHandler() {
-                       public void onLogin(LoginEvent event) {
-                               user = event.getUser();
-                               searchValue = null;
-                       }
-               });
-               eventBus.addHandler(ExpandMessageEvent.TYPE, new 
ExpandMessageEventHandler() {
-                       public void onExpandMessage(ExpandMessageEvent event) {
-                               // final boolean decreaseUnseen;
-                               final Message message = event.getMessage();
-                               // check if the message was already seen in the 
past
-                               if 
(event.getMessage().getFlags().contains(IMAPFlag.SEEN) == false) {
-                                       // decreaseUnseen = true;//TODO 1209
-                               } else {
-                                       // decreaseUnseen = false;
-                               }
-
-                               GetMessageDetailsRequest req = 
requestFactory.messageDetailsRequest();
-                               GetMessageDetailsAction action = 
req.create(GetMessageDetailsAction.class);
-                               final ImapFolder f = 
req.create(ImapFolder.class);
-                               // event.getFolder().setFolderTo(f);
-                               cloneFolder(f, event.getFolder());
-                               action.setFolder(f);
-                               action.setUid(message.getUid());
-                               req.get(action).fire(new 
Receiver<GetMessageDetailsResult>() {
-                                       @Override
-                                       public void 
onSuccess(GetMessageDetailsResult response) {
-                                               /*
-                                                * TODO if (decreaseUnseen) { 
eventBus.fireEvent(new
-                                                * DecreaseUnseenEvent(user, 
folder)); }
-                                                */
-                                               placeController.goTo(new 
IMAPMessagePlace(String.valueOf(message.getUid())).with(user, f,
-                                                               message, 
response.getMessageDetails()));
-
-                                       }
-                               });
-                       }
-               });
-       }
-       
-       public MessageListActivity with(MailFolderPlace place){
-               display.setFolder(place.getFolder());
-               return this;
        }
 
-       private void cloneFolder(ImapFolder desc, ImapFolder src) {
-               desc.setChildren(src.getChildren());
-               desc.setDelimiter(src.getDelimiter());
-               desc.setFullName(src.getFullName());
-               desc.setMessageCount(src.getMessageCount());
-               desc.setName(src.getName());
-               desc.setSubscribed(src.getSubscribed());
-               desc.setUnseenMessageCount(src.getUnseenMessageCount());
+       public MessageListActivity with(MailFolderPlace place) {
+               display.setFolder(new ImapFolderImpl(place.getFullName()));
+               return this;
        }
 
 <<<<<<< HEAD
+<<<<<<< HEAD
        @Inject private Displayable display;
 <<<<<<< HEAD
        
@@ -343,6 +289,8 @@ public class MessageListActivity extends
        private Displayable display;
 >>>>>>> make message content work as expected partly
 
+=======
+>>>>>>> make reload message content work, use the same place with folder list, 
while separated with slash, that looks like Gmail's
        public interface Displayable extends WidgetDisplayable {
                void setFolder(ImapFolder folder);
        }

Modified: 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/TopBarActivity.java
URL: 
http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/TopBarActivity.java?rev=1522274&r1=1522273&r2=1522274&view=diff
==============================================================================
--- 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/TopBarActivity.java
 (original)
+++ 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/TopBarActivity.java
 Thu Sep 12 03:55:54 2013
@@ -165,7 +165,7 @@ public class TopBarActivity extends AppB
        @Override
        public void start(AcceptsOneWidget container, EventBus eventBus) {
                container.setWidget(display.asWidget());
-               bindTo(eventBus);
+               bindTo(this.eventBus);
        }
 
 <<<<<<< HEAD

Modified: 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mapper/AppPlaceHistoryMapper.java
URL: 
http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mapper/AppPlaceHistoryMapper.java?rev=1522274&r1=1522273&r2=1522274&view=diff
==============================================================================
--- 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mapper/AppPlaceHistoryMapper.java
 (original)
+++ 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mapper/AppPlaceHistoryMapper.java
 Thu Sep 12 03:55:54 2013
@@ -22,7 +22,6 @@ package org.apache.hupa.client.mapper;
 import org.apache.hupa.client.place.DefaultPlace;
 import org.apache.hupa.client.place.IMAPMessagePlace;
 import org.apache.hupa.client.place.MailFolderPlace;
-import org.apache.hupa.client.place.MessagePlace;
 import org.apache.hupa.client.place.MessageSendPlace;
 
 import com.google.gwt.place.shared.PlaceHistoryMapper;
@@ -30,7 +29,6 @@ import com.google.gwt.place.shared.WithT
 
 @WithTokenizers({
     DefaultPlace.Tokenizer.class,
-    MessagePlace.Tokenizer.class,
     MailFolderPlace.Tokenizer.class,
     MessageSendPlace.Tokenizer.class,
     IMAPMessagePlace.Tokenizer.class

Modified: 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mapper/CachingWestActivityMapper.java
URL: 
http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mapper/CachingWestActivityMapper.java?rev=1522274&r1=1522273&r2=1522274&view=diff
==============================================================================
--- 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mapper/CachingWestActivityMapper.java
 (original)
+++ 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mapper/CachingWestActivityMapper.java
 Thu Sep 12 03:55:54 2013
@@ -40,7 +40,7 @@ public class CachingWestActivityMapper i
                        @Override
                        public Place filter(Place place) {
                                return (place instanceof DefaultPlace || place 
instanceof MailFolderPlace) ? place
-                                               : new MailFolderPlace();
+                                               : new MailFolderPlace("");
                        }
                };
 

Modified: 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mapper/MessageContentActivityMapper.java
URL: 
http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mapper/MessageContentActivityMapper.java?rev=1522274&r1=1522273&r2=1522274&view=diff
==============================================================================
--- 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mapper/MessageContentActivityMapper.java
 (original)
+++ 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mapper/MessageContentActivityMapper.java
 Thu Sep 12 03:55:54 2013
@@ -30,14 +30,18 @@ import com.google.gwt.core.client.RunAsy
 =======
 =======
 import org.apache.hupa.client.place.DefaultPlace;
-import org.apache.hupa.client.place.IMAPMessagePlace;
 import org.apache.hupa.client.place.MailFolderPlace;
+<<<<<<< HEAD
 >>>>>>> prepare for message content panel
+=======
+import org.apache.hupa.client.rf.HupaRequestFactory;
+>>>>>>> make reload message content work, use the same place with folder list, 
while separated with slash, that looks like Gmail's
 
 import com.google.gwt.activity.shared.Activity;
 import com.google.gwt.activity.shared.ActivityMapper;
 >>>>>>> integrate all of the views to their corresponding activities and 
 >>>>>>> mappers
 import com.google.gwt.place.shared.Place;
+import com.google.gwt.place.shared.PlaceController;
 import com.google.inject.Inject;
 import com.google.inject.Provider;
 
@@ -68,10 +72,14 @@ public class MessageContentActivityMappe
                };
 =======
 public class MessageContentActivityMapper implements ActivityMapper {
+
+       @Inject protected PlaceController placeController;
+       @Inject protected HupaRequestFactory requestFactory;
        private final Provider<MessageContentActivity> 
messageContentActivityProvider;
 
        @Inject
-       public MessageContentActivityMapper(Provider<MessageContentActivity> 
messageContentActivityProvider) {
+       public MessageContentActivityMapper(
+                       Provider<MessageContentActivity> 
messageContentActivityProvider) {
                this.messageContentActivityProvider = 
messageContentActivityProvider;
        }
 
@@ -85,10 +93,9 @@ public class MessageContentActivityMappe
 =======
                if (place instanceof DefaultPlace)
                        return null;
-               else if (place instanceof MailFolderPlace)
-                       return null;
-               else if (place instanceof IMAPMessagePlace) {
-                       return 
messageContentActivityProvider.get().with((IMAPMessagePlace) place);
+               else if (place instanceof MailFolderPlace) {
+                       return messageContentActivityProvider.get().with(
+                                       (MailFolderPlace) place);
                }
                return null;
 >>>>>>> make message content work as expected partly

Modified: 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/place/IMAPMessagePlace.java
URL: 
http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/place/IMAPMessagePlace.java?rev=1522274&r1=1522273&r2=1522274&view=diff
==============================================================================
--- 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/place/IMAPMessagePlace.java
 (original)
+++ 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/place/IMAPMessagePlace.java
 Thu Sep 12 03:55:54 2013
@@ -108,6 +108,10 @@ public class IMAPMessagePlace extends Ab
        public IMAPMessagePlace(String token) {
                this.messageId = token;
        }
+       
+       public IMAPMessagePlace(MessageDetails messageDetails){
+               this.messageDetails = messageDetails;
+       }
 
        public Message getMessage() {
                return message;
@@ -199,10 +203,7 @@ public class IMAPMessagePlace extends Ab
 
                @Override
                public String getToken(IMAPMessagePlace place) {
-                       return place.getMessageId();
-//                     System.out.println(place);
-//                     System.out.println(place.getMessage());
-//                     return String.valueOf(place.getMessage().getUid());
+                       return place.getMessageDetails().getMessageId();
                }
        }
 
@@ -217,6 +218,7 @@ public class IMAPMessagePlace extends Ab
 
 <<<<<<< HEAD
 <<<<<<< HEAD
+<<<<<<< HEAD
 =======
 >>>>>>> 
 =======
@@ -227,4 +229,6 @@ public class IMAPMessagePlace extends Ab
        }
 
 >>>>>>> prepare for message content panel
+=======
+>>>>>>> make reload message content work, use the same place with folder list, 
while separated with slash, that looks like Gmail's
 }

Modified: 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/place/MailFolderPlace.java
URL: 
http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/place/MailFolderPlace.java?rev=1522274&r1=1522273&r2=1522274&view=diff
==============================================================================
--- 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/place/MailFolderPlace.java
 (original)
+++ 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/place/MailFolderPlace.java
 Thu Sep 12 03:55:54 2013
@@ -19,8 +19,8 @@
 
 package org.apache.hupa.client.place;
 
-import org.apache.hupa.shared.data.ImapFolderImpl;
 import org.apache.hupa.shared.domain.ImapFolder;
+import org.apache.hupa.shared.domain.MessageDetails;
 import org.apache.hupa.shared.domain.User;
 
 import com.google.gwt.place.shared.PlaceTokenizer;
@@ -28,74 +28,66 @@ import com.google.gwt.place.shared.Prefi
 
 public class MailFolderPlace extends AbstractPlace {
 
-       // this can remove the colon ":"
-       private static final String PREFIX = "folder";
        private User user;
-       private String folderName = "";
+       private String searchValue;
+       private String uid;
+       private MessageDetails messageDetails;
+       private String fullName;
+
+       public MailFolderPlace(String token) {
+               if (token.contains("/")
+                               && token.substring(token.lastIndexOf("/") + 
1).matches("\\d+")) {
+                       fullName = token.substring(0, token.lastIndexOf("/"));
+                       uid = token.substring(token.lastIndexOf("/") + 1);
+               } else {
+                       fullName = token;
+               }
+       }
+
+       public MessageDetails getMessageDetails() {
+               return messageDetails;
+       }
 
-       public String getFolderName() {
-               return folderName;
+       public String getMessageId() {
+               return uid;
        }
 
-       /**
-        * equality test based on Class type, to let different instance of this
-        * Place class to be equals for CachingActivityMapper test on Place 
equality
-        * 
-        * @param otherPlace
-        *            the place to compare with
-        * @return true if this place and otherPlace are of the same Class type
-        */
-       @Override
-       public boolean equals(Object otherPlace) {
-               return this == otherPlace;// || (otherPlace != null && 
getClass() ==
-                                                                       // 
otherPlace.getClass());
-       }
-
-       @Override
-       public int hashCode() {
-               return PREFIX.hashCode();
-       }
-
-       public MailFolderPlace with(String folderName) {
-               this.folderName = folderName;
-               this.folder = new ImapFolderImpl();
-               folder.setFullName(folderName);
-               return this;
-       }
-
-       public MailFolderPlace with(ImapFolder folder) {
-               this.folder = folder;
-               this.folderName = folder.getName();
-               return this;
+       public String getFullName() {
+               return fullName;
        }
 
        public User getUser() {
                return user;
        }
 
-       @Prefix(PREFIX)
+       public String getSearchValue() {
+               return searchValue;
+       }
+
+       // the main place use empty string such that colon'd disappear
+       @Prefix("")
        public static class Tokenizer implements 
PlaceTokenizer<MailFolderPlace> {
 
                @Override
                public MailFolderPlace getPlace(String token) {
-                       // TODO create place from token rather than with 
methods such that we can get place we want.
-                       return new MailFolderPlace().with(token);
+                       return new MailFolderPlace(token);
                }
 
                @Override
                public String getToken(MailFolderPlace place) {
-                       return place.getFolderName();
+                       String token = place.getFullName();
+                       if (place.getMessageId() != null
+                                       && place.getMessageId().length() > 0) {
+                               token += "/" + place.getMessageId();
+                       }
+                       return token;
                }
        }
 
-       private ImapFolder folder;
-       private String searchValue;
-
-       public ImapFolder getFolder() {
-               return folder;
-       }
-
-       public String getSearchValue() {
-               return searchValue;
+       public static void main(String[] args) {
+               System.out.println("123a".matches("\\d+"));
+               // String lll = "test/asdf/123";
+               // System.out.println(lll.substring(lll.lastIndexOf("/")+1));
+               // System.out.println(lll.substring(0, lll.lastIndexOf("/")));
        }
 }

Modified: 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/FoldersTreeViewModel.java
URL: 
http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/FoldersTreeViewModel.java?rev=1522274&r1=1522273&r2=1522274&view=diff
==============================================================================
--- 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/FoldersTreeViewModel.java
 (original)
+++ 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/FoldersTreeViewModel.java
 Thu Sep 12 03:55:54 2013
@@ -51,8 +51,9 @@ public class FoldersTreeViewModel implem
        @Inject private HupaRequestFactory rf;
        @Inject private EventBus eventBus;
        @Inject private PlaceController placeController;
-       @Inject private Provider<MailFolderPlace> folderPlaceProvider;
-       protected User user;
+       // @Inject private Provider<MailFolderPlace> folderPlaceProvider;
+       private User user;
+       private ImapFolder currentFolder;
 
        public FoldersTreeViewModel() {
 
@@ -63,10 +64,11 @@ public class FoldersTreeViewModel implem
                                        public void 
onSelectionChange(SelectionChangeEvent event) {
                                                
SingleSelectionModel<ImapFolder> selectionModel = 
(SingleSelectionModel<ImapFolder>) event
                                                                .getSource();
+                                               currentFolder = 
selectionModel.getSelectedObject();
                                                eventBus.fireEvent(new 
LoadMessagesEvent(user,
                                                                
selectionModel.getSelectedObject()));
-                                               
placeController.goTo(folderPlaceProvider.get().with(
-                                                               
selectionModel.getSelectedObject()));
+                                               placeController.goTo(new 
MailFolderPlace(selectionModel
+                                                               
.getSelectedObject().getFullName()));
                                        }
                                });
        }
@@ -97,13 +99,20 @@ public class FoldersTreeViewModel implem
                                }
                        }
 
+                       // TODO is this a click event?
                        @Override
                        public void onBrowserEvent(Context context, Element 
parent,
                                        ImapFolder value, NativeEvent event,
                                        ValueUpdater<ImapFolder> valueUpdater) {
-                               eventBus.fireEvent(new LoadMessagesEvent(user, 
value));
-                               
placeController.goTo(folderPlaceProvider.get().with(
-                                               value.getName()));
+                               if (clickSameFolder(value)) {
+                                       eventBus.fireEvent(new 
LoadMessagesEvent(user, value));
+                                       placeController.goTo(new 
MailFolderPlace(value
+                                                       .getFullName()));
+                               }
+                       }
+
+                       private boolean clickSameFolder(ImapFolder value) {
+                               return value == currentFolder;
                        }
                }, selectionModel, null);
        }

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=1522274&r1=1522273&r2=1522274&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 03:55:54 2013
@@ -27,6 +27,7 @@ import java.util.List;
 import java.util.Set;
 
 import org.apache.hupa.client.activity.MessageListActivity;
+<<<<<<< HEAD
 import org.apache.hupa.shared.domain.Message;
 
 import com.google.gwt.core.client.GWT;
@@ -59,15 +60,20 @@ import java.util.List;
 
 >>>>>>> add click handler to every message row
 import org.apache.hupa.client.activity.MessageListActivity;
+=======
+import org.apache.hupa.client.place.MailFolderPlace;
+>>>>>>> make reload message content work, use the same place with folder list, 
while separated with slash, that looks like Gmail's
 import org.apache.hupa.client.rf.FetchMessagesRequest;
+import org.apache.hupa.client.rf.GetMessageDetailsRequest;
 import org.apache.hupa.client.rf.HupaRequestFactory;
 import org.apache.hupa.shared.data.ImapFolderImpl;
 import org.apache.hupa.shared.domain.FetchMessagesAction;
 import org.apache.hupa.shared.domain.FetchMessagesResult;
+import org.apache.hupa.shared.domain.GetMessageDetailsAction;
+import org.apache.hupa.shared.domain.GetMessageDetailsResult;
 import org.apache.hupa.shared.domain.ImapFolder;
 import org.apache.hupa.shared.domain.Message;
 import org.apache.hupa.shared.domain.User;
-import org.apache.hupa.shared.events.ExpandMessageEvent;
 import org.apache.hupa.shared.events.LoadMessagesEvent;
 import org.apache.hupa.shared.events.LoadMessagesEventHandler;
 import org.apache.hupa.shared.events.LoginEvent;
@@ -78,6 +84,7 @@ import com.google.gwt.core.client.GWT;
 import com.google.gwt.core.client.Scheduler;
 import com.google.gwt.core.client.Scheduler.ScheduledCommand;
 import com.google.gwt.event.shared.EventBus;
+import com.google.gwt.place.shared.PlaceController;
 import com.google.gwt.uibinder.client.UiBinder;
 import com.google.gwt.uibinder.client.UiField;
 import com.google.gwt.user.cellview.client.DataGrid;
@@ -94,7 +101,6 @@ public class MessageListView extends Com
 
        @UiField(provided = true) DataGrid<Message> grid;
        private HupaRequestFactory requestFactory;
-       private EventBus eventBus;
        private ImapFolder folder;
        private String searchValue;
        private User user;
@@ -103,14 +109,13 @@ public class MessageListView extends Com
        @Inject
        public MessageListView(final EventBus eventBus,
                        final HupaRequestFactory requestFactory,
-                       final MessagesCellTable table) {
+                       final PlaceController placeController, final 
MessagesCellTable table) {
                this.requestFactory = requestFactory;
-               this.eventBus = eventBus;
                grid = table;
                initWidget(binder.createAndBindUi(this));
                grid.addCellPreviewHandler(new Handler<Message>() {
                        @Override
-                       public void onCellPreview(CellPreviewEvent<Message> 
event) {
+                       public void onCellPreview(final 
CellPreviewEvent<Message> event) {
                                if (hasClickedButFirstCol(event)) {
                                        List<Message> displayedItems = 
table.getVisibleItems();
                                        for (Message msg : displayedItems) {
@@ -118,9 +123,26 @@ public class MessageListView extends Com
                                        }
                                        
table.getSelectionModel().setSelected(event.getValue(),
                                                        true);
-                                       MessageListView.this.eventBus
-                                                       .fireEvent(new 
ExpandMessageEvent(user, folder,
-                                                                       
event.getValue()));
+                                       GetMessageDetailsRequest req = 
requestFactory
+                                                       
.messageDetailsRequest();
+                                       GetMessageDetailsAction action = req
+                                                       
.create(GetMessageDetailsAction.class);
+                                       final ImapFolder f = 
req.create(ImapFolder.class);
+                                       f.setFullName(folder.getFullName());
+                                       action.setFolder(f);
+                                       
action.setUid(event.getValue().getUid());
+                                       req.get(action).fire(
+                                                       new 
Receiver<GetMessageDetailsResult>() {
+                                                               @Override
+                                                               public void 
onSuccess(
+                                                                               
GetMessageDetailsResult response) {
+                                                                       
placeController.goTo(new MailFolderPlace(f
+                                                                               
        .getFullName()
+                                                                               
        + "/"
+                                                                               
        + event.getValue().getUid()));
+
+                                                               }
+                                                       });
                                }
                        }
 
@@ -172,39 +194,26 @@ public class MessageListView extends Com
                FetchMessagesRequest messagesRequest = 
requestFactory.messagesRequest();
                FetchMessagesAction action = messagesRequest
                                .create(FetchMessagesAction.class);
-               final ImapFolder folder1 = 
messagesRequest.create(ImapFolder.class);
-               // folder1.setChildren(folder.getChildren());
-               // folder1.setDelimiter(folder.getDelimiter());
-               folder1.setFullName(folder.getFullName());
-               // folder1.setMessageCount(folder.getMessageCount());
-               // folder1.setName(folder.getName());
-               // folder1.setSubscribed(folder.getSubscribed());
-               // 
folder1.setUnseenMessageCount(folder.getUnseenMessageCount());
-               action.setFolder(folder1);
+               final ImapFolder f = messagesRequest.create(ImapFolder.class);
+               f.setFullName(folder.getFullName());
+               action.setFolder(f);
                action.setOffset(grid.getPageSize());
                action.setSearchString(searchValue);
                action.setStart(start);
                messagesRequest.fetch(action).fire(new 
Receiver<FetchMessagesResult>() {
 
                        @Override
-                       public void onFailure(ServerFailure error) {
-                               if (error.isFatal()) {
-                                       throw new 
RuntimeException(error.getMessage());
-                               }
-                       }
-
-                       @Override
                        public void onSuccess(final FetchMessagesResult result) 
{
                                assert result != null;
-                               // 
folder.setMessageCount(result.getRealCount());// TODO if do
-                               // this, there will be auto bean has been 
frozen.
-                               // 
folder.setUnseenMessageCount(result.getRealUnreadCount());
                                grid.setRowCount(result.getRealCount());
                                grid.setRowData(start, result.getMessages());
+                       }
 
-                               // pager.setPageStart(start);
-                               // eventBus.fireEvent(new 
MessagesReceivedEvent(folder1,
-                               // result.getMessages()));
+                       @Override
+                       public void onFailure(ServerFailure error) {
+                               if (error.isFatal()) {
+                                       throw new 
RuntimeException(error.getMessage());
+                               }
                        }
                });
        }



---------------------------------------------------------------------
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