Author: dongxu
Date: Thu Sep 12 04:20:52 2013
New Revision: 1522334
URL: http://svn.apache.org/r1522334
Log:
let messages list activity make use of mvp
Modified:
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/ui/MessageListView.java
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=1522334&r1=1522333&r2=1522334&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 04:20:52 2013
@@ -22,6 +22,7 @@ package org.apache.hupa.client.activity;
<<<<<<< HEAD
<<<<<<< HEAD
<<<<<<< HEAD
+<<<<<<< HEAD
import java.util.Collection;
import java.util.List;
import java.util.Set;
@@ -250,29 +251,167 @@ import org.apache.hupa.client.rf.GetMess
=======
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 java.util.List;
+import java.util.logging.Level;
+
+import org.apache.hupa.client.place.DefaultPlace;
+import org.apache.hupa.client.place.MailFolderPlace;
+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.client.ui.MessagesCellTable;
+>>>>>>> let messages list activity make use of mvp
import org.apache.hupa.client.ui.WidgetDisplayable;
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;
+import org.apache.hupa.shared.events.LoginEventHandler;
+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.user.client.ui.AcceptsOneWidget;
+import com.google.gwt.view.client.CellPreviewEvent;
+import com.google.gwt.view.client.RangeChangeEvent;
+import com.google.gwt.view.client.CellPreviewEvent.Handler;
import com.google.inject.Inject;
+import com.google.web.bindery.requestfactory.shared.Receiver;
+import com.google.web.bindery.requestfactory.shared.ServerFailure;
public class MessageListActivity extends AppBaseActivity {
@Inject private Displayable display;
-
+ @Inject private HupaRequestFactory requestFactory;
+ @Inject private PlaceController placeController;
+ private ImapFolder folder;
+ private String searchValue;
+ private User user;
+ private boolean pending;
@Override
- public void start(AcceptsOneWidget container, EventBus eventBus) {
+ public void start(AcceptsOneWidget container, final EventBus eventBus) {
container.setWidget(display.asWidget());
bindTo(eventBus);
+ display.getGrid().addCellPreviewHandler(new Handler<Message>() {
+ @Override
+ public void onCellPreview(final
CellPreviewEvent<Message> event) {
+ if (hasClickedButFirstCol(event)) {
+ List<Message> displayedItems =
display.getGrid().getVisibleItems();
+ for (Message msg : displayedItems) {
+
display.getGrid().getSelectionModel().setSelected(msg, false);
+ }
+ 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) {
+ eventBus.fireEvent(new
ExpandMessageEvent(user, folder, event.getValue(),
response.getMessageDetails()));
+
placeController.goTo(new MailFolderPlace(f.getFullName() + "/" +
event.getValue().getUid()));
+ }
+
+ @Override
+ public void
onFailure(ServerFailure error) {
+ if (error.isFatal()) {
+//
log.log(Level.SEVERE, error.getMessage());
+ // TODO write
the error message to
+ // status bar.
+ throw new
RuntimeException(error.getMessage());
+ }
+ }
+ });
+ }
+ }
+
+ private boolean
hasClickedButFirstCol(CellPreviewEvent<Message> event) {
+ return
"click".equals(event.getNativeEvent().getType()) && 0 != event.getColumn();
+ }
+
+ });
+ display.getGrid().addRangeChangeHandler(new
RangeChangeEvent.Handler() {
+ @Override
+ public void onRangeChange(RangeChangeEvent event) {
+ fetch(event.getNewRange().getStart());
+ }
+ });
+ eventBus.addHandler(LoadMessagesEvent.TYPE, new
LoadMessagesEventHandler() {
+ public void onLoadMessagesEvent(LoadMessagesEvent
loadMessagesEvent) {
+ user = loadMessagesEvent.getUser();
+ folder = loadMessagesEvent.getFolder();
+ searchValue =
loadMessagesEvent.getSearchValue();
+ fetch(0);
+
+ }
+ });
+ eventBus.addHandler(LoginEvent.TYPE, new LoginEventHandler() {
+ public void onLogin(LoginEvent event) {
+ user = event.getUser();
+ folder = new
ImapFolderImpl(user.getSettings().getInboxFolderName());
+ searchValue = null;
+ if (!pending) {
+ pending = true;
+ Scheduler.get().scheduleFinally(new
ScheduledCommand() {
+ @Override
+ public void execute() {
+ pending = false;
+ fetch(0);
+ }
+ });
+ }
+ }
+ });
+
+ }
+
+ public void fetch(final int start) {
+ FetchMessagesRequest req = requestFactory.messagesRequest();
+ FetchMessagesAction action =
req.create(FetchMessagesAction.class);
+ final ImapFolder f = req.create(ImapFolder.class);
+ f.setFullName(folder.getFullName());
+ action.setFolder(f);
+ action.setOffset(display.getGrid().getPageSize());
+ action.setSearchString(searchValue);
+ action.setStart(start);
+ req.fetch(action).fire(new Receiver<FetchMessagesResult>() {
+
+ @Override
+ public void onSuccess(final FetchMessagesResult result)
{
+ assert result != null;
+
display.getGrid().setRowCount(result.getRealCount());
+ display.getGrid().setRowData(start,
result.getMessages());
+ }
+
+ @Override
+ public void onFailure(ServerFailure error) {
+ placeController.goTo(new DefaultPlace("@"));
+ if (error.isFatal()) {
+ // FIXME should goto login page
regarding the long time
+ // session expired.
+ throw new
RuntimeException(error.getMessage());
+ }
+ }
+ });
}
+
private void bindTo(EventBus eventBus) {
}
public MessageListActivity with(MailFolderPlace place) {
- display.setFolder(new ImapFolderImpl(place.getFullName()));
+ setFolder(new ImapFolderImpl(place.getFullName()));
return this;
}
@@ -292,7 +431,13 @@ public class MessageListActivity extends
=======
>>>>>>> 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);
+ MessagesCellTable getGrid();
+ }
+
+ public void setFolder(ImapFolder folder) {
+ this.folder = folder;
+ if (folder != null)
+ fetch(0);
}
>>>>>>> prepare for message content panel
}
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=1522334&r1=1522333&r2=1522334&view=diff
==============================================================================
---
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessageListView.java
(original)
+++
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessageListView.java
Thu Sep 12 04:20:52 2013
@@ -111,92 +111,15 @@ public class MessageListView extends Com
private static final Logger log =
Logger.getLogger(MessageListView.class.getName());
@UiField(provided = true) MessagesCellTable grid;
- private HupaRequestFactory requestFactory;
- private PlaceController placeController;
- private ImapFolder folder;
- private String searchValue;
- private User user;
- private boolean pending;
+
@Inject
public MessageListView(final EventBus eventBus, final
HupaRequestFactory requestFactory,
final PlaceController placeController, final
MessagesCellTable table) {
- this.requestFactory = requestFactory;
- this.placeController = placeController;
grid = table;
initWidget(binder.createAndBindUi(this));
- grid.addCellPreviewHandler(new Handler<Message>() {
- @Override
- public void onCellPreview(final
CellPreviewEvent<Message> event) {
- if (hasClickedButFirstCol(event)) {
- List<Message> displayedItems =
table.getVisibleItems();
- for (Message msg : displayedItems) {
-
table.getSelectionModel().setSelected(msg, false);
- }
- 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) {
- eventBus.fireEvent(new
ExpandMessageEvent(user, folder, event.getValue(),
response.getMessageDetails()));
-
placeController.goTo(new MailFolderPlace(f.getFullName() + "/" +
event.getValue().getUid()));
- }
-
- @Override
- public void
onFailure(ServerFailure error) {
- if (error.isFatal()) {
-
log.log(Level.SEVERE, error.getMessage());
- // TODO write
the error message to
- // status bar.
- throw new
RuntimeException(error.getMessage());
- }
- }
- });
- }
- }
-
- private boolean
hasClickedButFirstCol(CellPreviewEvent<Message> event) {
- return
"click".equals(event.getNativeEvent().getType()) && 0 != event.getColumn();
- }
-
- });
- grid.addRangeChangeHandler(new RangeChangeEvent.Handler() {
- @Override
- public void onRangeChange(RangeChangeEvent event) {
- fetch(event.getNewRange().getStart());
- }
- });
- eventBus.addHandler(LoadMessagesEvent.TYPE, new
LoadMessagesEventHandler() {
- public void onLoadMessagesEvent(LoadMessagesEvent
loadMessagesEvent) {
- user = loadMessagesEvent.getUser();
- folder = loadMessagesEvent.getFolder();
- searchValue =
loadMessagesEvent.getSearchValue();
- fetch(0);
-
- }
- });
- eventBus.addHandler(LoginEvent.TYPE, new LoginEventHandler() {
- public void onLogin(LoginEvent event) {
- user = event.getUser();
- folder = new
ImapFolderImpl(user.getSettings().getInboxFolderName());
- searchValue = null;
- if (!pending) {
- pending = true;
- Scheduler.get().scheduleFinally(new
ScheduledCommand() {
- @Override
- public void execute() {
- pending = false;
- fetch(0);
- }
- });
- }
- }
- });
}
+<<<<<<< HEAD
public void fetch(final int start) {
FetchMessagesRequest req = requestFactory.messagesRequest();
@@ -253,6 +176,8 @@ public class MessageListView extends Com
UiBinder<DataGrid<Message>, MessageListView> {
>>>>>>> prepare for place management and history controller
=======
+=======
+>>>>>>> let messages list activity make use of mvp
interface MessageListUiBinder extends UiBinder<DataGrid<Message>,
MessageListView> {
>>>>>>> coping with reply and forward sending message
}
@@ -261,6 +186,7 @@ public class MessageListView extends Com
<<<<<<< HEAD
<<<<<<< HEAD
+<<<<<<< HEAD
@Override
public MessagesCellTable getGrid() {
return grid;
@@ -305,12 +231,17 @@ public class MessageListView extends Com
=======
>>>>>>> make login page as one part of the overall layout & splite layout to
>>>>>>> little one
=======
+=======
+
+>>>>>>> let messages list activity make use of mvp
@Override
- public void setFolder(ImapFolder folder) {
- this.folder = folder;
- if (folder != null)
- fetch(0);
+ public MessagesCellTable getGrid() {
+ return grid;
}
+<<<<<<< HEAD
>>>>>>> prepare for place management and history controller
+=======
+
+>>>>>>> let messages list activity make use of mvp
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]