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: server-dev-unsubscr...@james.apache.org
For additional commands, e-mail: server-dev-h...@james.apache.org

Reply via email to