You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by do...@apache.org on 2013/09/12 05:55:55 UTC
svn commit: r1522274 - in
/james/hupa/trunk/client/src/main/java/org/apache/hupa/client: activity/
mapper/ place/ ui/
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-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org