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