Author: dongxu
Date: Thu Sep 12 04:39:59 2013
New Revision: 1522374

URL: http://svn.apache.org/r1522374
Log:
change message list view to make it not refresh the whole list when click one 
of the messages

Modified:
    
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/AppBaseActivity.java
    
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/ComposeActivity.java
    
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/LabelListActivity.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/MessageSendActivity.java
    
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/ToolBarActivity.java
    
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/TopActivity.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/activity/WestActivity.java
    
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ioc/AppGinModule.java
    
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mapper/CachingMessageListActivityMapper.java
    
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mapper/MessageListActivityMapper.java
    
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/place/FolderPlace.java
    
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/ContentSplitLayoutPanel.java
    
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/FolderListView.java
    
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/FolderListView.ui.xml
    
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
    
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessageListView.ui.xml
    
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessagesCellTable.java

Modified: 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/AppBaseActivity.java
URL: 
http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/AppBaseActivity.java?rev=1522374&r1=1522373&r2=1522374&view=diff
==============================================================================
--- 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/AppBaseActivity.java
 (original)
+++ 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/AppBaseActivity.java
 Thu Sep 12 04:39:59 2013
@@ -41,6 +41,7 @@ public abstract class AppBaseActivity ex
        @Inject protected EventBus eventBus;
        @Inject protected HupaController hc;
 <<<<<<< HEAD
+<<<<<<< HEAD
        @Inject protected PlaceController pc;
        @Inject protected HupaRequestFactory rf;
 
@@ -65,6 +66,10 @@ public abstract class AppBaseActivity ex
 >>>>>>> try to rearrange the places and history managment.
        @Inject protected PlaceController placeController;
        @Inject protected HupaRequestFactory requestFactory;
+=======
+       @Inject protected PlaceController pc;
+       @Inject protected HupaRequestFactory rf;
+>>>>>>> change message list view to make it not refresh the whole list when 
click one of the messages
 
 >>>>>>> scrub code
        protected List<HandlerRegistration> registrations = new 
ArrayList<HandlerRegistration>();

Modified: 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/ComposeActivity.java
URL: 
http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/ComposeActivity.java?rev=1522374&r1=1522373&r2=1522374&view=diff
==============================================================================
--- 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/ComposeActivity.java
 (original)
+++ 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/ComposeActivity.java
 Thu Sep 12 04:39:59 2013
@@ -699,6 +699,7 @@ public class ComposeActivity extends App
 
                        if ("new".equals(place.getToken())) {
                                SendMessageRequest sendReq = 
rf.sendMessageRequest();
+<<<<<<< HEAD
                                SendMessageAction sendAction = 
sendReq.create(SendMessageAction.class);
                                sendAction.setMessage(parseMessage(sendReq));
 =======
@@ -727,6 +728,8 @@ public class ComposeActivity extends App
 
                        if ("new".equals(place.getToken())) {
                                SendMessageRequest sendReq = 
requestFactory.sendMessageRequest();
+=======
+>>>>>>> change message list view to make it not refresh the whole list when 
click one of the messages
                                SendMessageAction sendAction = 
sendReq.create(SendMessageAction.class);
 <<<<<<< HEAD
 <<<<<<< HEAD
@@ -753,6 +756,7 @@ public class ComposeActivity extends App
                                // FIXME will get a NullPointerException given 
accessing
                                // directly from some URL like #/compose:forward
 <<<<<<< HEAD
+<<<<<<< HEAD
                                SendForwardMessageRequest req = 
rf.sendForwardMessageRequest();
                                SendForwardMessageAction action = 
req.create(SendForwardMessageAction.class);
                                action.setMessage(parseMessage(req));
@@ -783,6 +787,9 @@ public class ComposeActivity extends App
 =======
 >>>>>>> scrub code
                                SendForwardMessageRequest req = 
requestFactory.sendForwardMessageRequest();
+=======
+                               SendForwardMessageRequest req = 
rf.sendForwardMessageRequest();
+>>>>>>> change message list view to make it not refresh the whole list when 
click one of the messages
                                SendForwardMessageAction action = 
req.create(SendForwardMessageAction.class);
                                action.setMessage(parseMessage(req));
                                ImapFolder f = req.create(ImapFolder.class);
@@ -849,7 +856,7 @@ public class ComposeActivity extends App
 =======
 >>>>>>> coping with java.lang.IllegalArgumentException: uid
                        } else {
-                               SendReplyMessageRequest replyReq = 
requestFactory.sendReplyMessageRequest();
+                               SendReplyMessageRequest replyReq = 
rf.sendReplyMessageRequest();
                                SendReplyMessageAction action = 
replyReq.create(SendReplyMessageAction.class);
                                action.setMessage(parseMessage(replyReq));
                                ImapFolder folder = 
replyReq.create(ImapFolder.class);

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=1522374&r1=1522373&r2=1522374&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 04:39:59 2013
@@ -113,6 +113,7 @@ public class IMAPMessageListActivity ext
                        public void onMoveMessageHandler(MoveMessageEvent 
event) {
                                final Message message = event.getMessage();
                                MoveMessageRequest req = 
rf.moveMessageRequest();
+<<<<<<< HEAD
                                MoveMessageAction action = 
req.create(MoveMessageAction.class);
                                ImapFolder newOne = 
req.create(ImapFolder.class);
                                ImapFolder oldOne = 
req.create(ImapFolder.class);
@@ -670,6 +671,8 @@ public class IMAPMessageListActivity ext
                        public void onMoveMessageHandler(MoveMessageEvent 
event) {
                                final Message message = event.getMessage();
                                MoveMessageRequest req = 
requestFactory.moveMessageRequest();
+=======
+>>>>>>> change message list view to make it not refresh the whole list when 
click one of the messages
                                MoveMessageAction action = 
req.create(MoveMessageAction.class);
                                ImapFolder newOne = 
req.create(ImapFolder.class);
                                ImapFolder oldOne = 
req.create(ImapFolder.class);
@@ -716,7 +719,7 @@ public class IMAPMessageListActivity ext
                registrations.add(display.getNewClick().addClickHandler(new 
com.google.gwt.event.dom.client.ClickHandler() {
                        public void 
onClick(com.google.gwt.event.dom.client.ClickEvent event) {
                                // eventBus.fireEvent(new NewMessageEvent());
-                               
placeController.goTo(messageSendPlaceProvider.get().with(user, null, null, 
null, Type.NEW));
+                               
pc.goTo(messageSendPlaceProvider.get().with(user, null, null, null, Type.NEW));
                        }
                }));
                
registrations.add(display.getDeleteAllClick().addClickHandler(new 
ClickHandler() {
@@ -726,7 +729,7 @@ public class IMAPMessageListActivity ext
                }));
                
registrations.add(display.getConfirmDeleteAllDialogClick().addClickHandler(new 
ClickHandler() {
                        public void onClick(ClickEvent event) {
-                               DeleteMessageAllRequest req = 
requestFactory.deleteMessageAllRequest();
+                               DeleteMessageAllRequest req = 
rf.deleteMessageAllRequest();
                                DeleteMessageAllAction action = 
req.create(DeleteMessageAllAction.class);
                                ImapFolder f = req.create(ImapFolder.class);
                                folder.setFolderTo(f);
@@ -751,7 +754,7 @@ public class IMAPMessageListActivity ext
                                                selectedMessages.remove(m);
                                        }
                                }
-                               SetFlagRequest req = 
requestFactory.setFlagRequest();
+                               SetFlagRequest req = rf.setFlagRequest();
                                SetFlagAction action = 
req.create(SetFlagAction.class);
                                ImapFolder f = req.create(ImapFolder.class);
                                folder.setFolderTo(f);
@@ -784,7 +787,7 @@ public class IMAPMessageListActivity ext
                                                selectedMessages.remove(m);
                                        }
                                }
-                               SetFlagRequest req = 
requestFactory.setFlagRequest();
+                               SetFlagRequest req = rf.setFlagRequest();
                                SetFlagAction action = 
req.create(SetFlagAction.class);
                                ImapFolder f = req.create(ImapFolder.class);
                                folder.setFolderTo(f);
@@ -842,7 +845,7 @@ public class IMAPMessageListActivity ext
                // maybe its better to just remove the messages from the table 
and
                // expect the removal will work
                display.removeMessages(selectedMessages);
-               DeleteMessageByUidRequest req = 
requestFactory.deleteMessageByUidRequest();
+               DeleteMessageByUidRequest req = rf.deleteMessageByUidRequest();
                DeleteMessageByUidAction action = 
req.create(DeleteMessageByUidAction.class);
                ImapFolder f = req.create(ImapFolder.class);
 //             folder.setFolderTo(f); FIXME cannot use any more, for it's 
already a requestContext assigned.

Modified: 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/LabelListActivity.java
URL: 
http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/LabelListActivity.java?rev=1522374&r1=1522373&r2=1522374&view=diff
==============================================================================
--- 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/LabelListActivity.java
 (original)
+++ 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/LabelListActivity.java
 Thu Sep 12 04:39:59 2013
@@ -195,7 +195,7 @@ public class LabelListActivity extends A
                hupaController.showTopLoading("Deleting...");
                SingleSelectionModel<LabelNode> selectionModel = 
display.getSelectionModel();
                LabelNode labelNode = selectionModel.getSelectedObject();
-               DeleteFolderRequest req = requestFactory.deleteFolderRequest();
+               DeleteFolderRequest req = rf.deleteFolderRequest();
                DeleteFolderAction action = 
req.create(DeleteFolderAction.class);
                final ImapFolder f = req.create(ImapFolder.class);
                f.setFullName(labelNode.getFolder().getFullName());

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=1522374&r1=1522373&r2=1522374&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 04:39:59 2013
@@ -353,6 +353,7 @@ public class LoginActivity extends Abstr
                        return;
                display.setLoading(true);
                LoginUserRequest loginRequest = rf.loginRequest();
+<<<<<<< HEAD
                loginRequest.login(user, pass).fire(new Receiver<User>() {
                        @Override
                        public void onSuccess(User response) {
@@ -484,12 +485,14 @@ public class LoginActivity extends Abstr
 =======
 >>>>>>> scrub code
                LoginUserRequest loginRequest = requestFactory.loginRequest();
+=======
+>>>>>>> change message list view to make it not refresh the whole list when 
click one of the messages
                loginRequest.login(user, pass).fire(new Receiver<User>() {
                        @Override
                        public void onSuccess(User response) {
                                RootLayoutPanel.get().clear();
                                RootLayoutPanel.get().add(hupaLayout.get());
-                               placeController.goTo(new 
FolderPlace(response.getSettings().getInboxFolderName()));
+                               pc.goTo(new 
FolderPlace(response.getSettings().getInboxFolderName()));
                                eventBus.fireEvent(new LoginEvent(response));
                                display.setLoading(false);
                        }

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=1522374&r1=1522373&r2=1522374&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 04:39:59 2013
@@ -204,7 +204,7 @@ public class MessageContentActivity exte
        @Override
        public void start(AcceptsOneWidget container, EventBus eventBus) {
                if (isUidSet()) {
-                       GetMessageDetailsRequest req = requestFactory
+                       GetMessageDetailsRequest req = rf
                                        .messageDetailsRequest();
                        GetMessageDetailsAction action = req
                                        .create(GetMessageDetailsAction.class);

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=1522374&r1=1522373&r2=1522374&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:39:59 2013
@@ -320,107 +320,48 @@ public class MessageListActivity extends
        public void start(AcceptsOneWidget container, final EventBus eventBus) {
                container.setWidget(display.asWidget());
                bindTo(eventBus);
-               
this.registerHandler(display.getGrid().addCellPreviewHandler(new 
Handler<Message>() {
-                       @Override
-                       public void onCellPreview(final 
CellPreviewEvent<Message> event) {
-                               if (hasClickedButFirstCol(event)) {
-                                       
antiSelectMessages(display.getGrid().getVisibleItems());
-                                       GetMessageDetailsRequest req = 
requestFactory.messageDetailsRequest();
-                                       GetMessageDetailsAction action = 
req.create(GetMessageDetailsAction.class);
-                                       final ImapFolder f = 
req.create(ImapFolder.class);
-                                       f.setFullName(folderName);
-                                       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, new ImapFolderImpl(folderName), event
-                                                                       
.getValue(), response.getMessageDetails()));
-                                                       
display.getGrid().getSelectionModel().setSelected(event.getValue(), true);
-                                                       
toolBar.enableAllTools(true);
-                                                       ToolBarView.Parameters 
p = new ToolBarView.Parameters(user, folderName, event.getValue(),
-                                                                       
response.getMessageDetails());
-                                                       
toolBar.setParameters(p);
-                                                       MessagePlace place = 
new MessagePlace(folderName+AbstractPlace.SPLITTER+event.getValue().getUid());
-                                                       
placeController.goTo(place);
-                                               }
-
-                                               @Override
-                                               public void 
onFailure(ServerFailure error) {
-                                                       if (error.isFatal()) {
-                                                               // 
log.log(Level.SEVERE, error.getMessage());
-                                                               // TODO write 
the error message to
-                                                               // status bar.
-                                                               
toolBar.enableAllTools(false);
-                                                               throw new 
RuntimeException(error.getMessage());
-                                                       }
-                                               }
-                                       });
-                               }
-                       }
-
-               }));
-               dataProvider = new MessageListDataProvider();
-               dataProvider.addDataDisplay(display.getGrid());
-       }
-       
-       public void refresh(){
-               dataProvider.refresh();
-       }
-
-       private MessageListDataProvider dataProvider;
-       public class MessageListDataProvider extends AsyncDataProvider<Message> 
implements HasRefresh{
-
-               HasData<Message> display;
-               
-               @Override
-               public void addDataDisplay(HasData<Message> display) {
-                       super.addDataDisplay(display);
-                       this.display = display;
-               }
-               
-
-               @Override
-               public void refresh() {
-                       this.onRangeChanged(display);
-               }
-
-               @Override
-               protected void onRangeChanged(HasData<Message> display) {
-                       FetchMessagesRequest req = 
requestFactory.messagesRequest();
-                       FetchMessagesAction action = 
req.create(FetchMessagesAction.class);
-                       final ImapFolder f = req.create(ImapFolder.class);
-                       f.setFullName(folderName);
-                       action.setFolder(f);
-                       action.setOffset(display.getVisibleRange().getLength());
-                       action.setSearchString(searchValue);
-                       action.setStart(display.getVisibleRange().getStart());
-                       req.fetch(action).fire(new 
Receiver<FetchMessagesResult>() {
-                               @Override
-                               public void onSuccess(final FetchMessagesResult 
response) {
-                                       if (response == null || 
response.getRealCount()== 0) {
-                                               updateRowCount(-1, true);
-                                       } else {
-                                               updateRowData(0, 
response.getMessages());
-                                       }
-                                       hc.hideTopLoading();
-                               }
-
-                               @Override
-                               public void onFailure(ServerFailure error) {
-                                       if (error.isFatal()) {
-                                               throw new 
RuntimeException(error.getMessage());
-                                       }
-                                       hc.hideTopLoading();
-                               }
-                       });
-
-               }
-               
-       }
-
-       private boolean hasClickedButFirstCol(CellPreviewEvent<Message> event) {
-               return "click".equals(event.getNativeEvent().getType()) && 0 != 
event.getColumn();
+//             
this.registerHandler(display.getGrid().addCellPreviewHandler(new 
Handler<Message>() {
+//                     @Override
+//                     public void onCellPreview(final 
CellPreviewEvent<Message> event) {
+//                             if (hasClickedButFirstCol(event)) {
+//                                     
antiSelectMessages(display.getGrid().getVisibleItems());
+//                                     GetMessageDetailsRequest req = 
rf.messageDetailsRequest();
+//                                     GetMessageDetailsAction action = 
req.create(GetMessageDetailsAction.class);
+//                                     final ImapFolder f = 
req.create(ImapFolder.class);
+//                                     f.setFullName(folderName);
+//                                     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, new ImapFolderImpl(folderName), event
+//                                                                     
.getValue(), response.getMessageDetails()));
+////                                                   
display.getGrid().getSelectionModel().setSelected(event.getValue(), true);
+//                                                     
display.getGrid().noSelectionModel.setSelected(event.getValue(), true);
+//                                                     
toolBar.enableAllTools(true);
+//                                                     ToolBarView.Parameters 
p = new ToolBarView.Parameters(user, folderName, event.getValue(),
+//                                                                     
response.getMessageDetails());
+//                                                     
toolBar.setParameters(p);
+//                                                     MessagePlace place = 
new MessagePlace(folderName + AbstractPlace.SPLITTER
+//                                                                     + 
event.getValue().getUid());
+//                                                     pc.goTo(place);
+//                                             }
+//
+//                                             @Override
+//                                             public void 
onFailure(ServerFailure error) {
+//                                                     if (error.isFatal()) {
+//                                                             // 
log.log(Level.SEVERE, error.getMessage());
+//                                                             // TODO write 
the error message to
+//                                                             // status bar.
+//                                                             
toolBar.enableAllTools(false);
+//                                                             throw new 
RuntimeException(error.getMessage());
+//                                                     }
+//                                             }
+//                                     });
+//                             }
+//                     }
+//
+//             }));
        }
 
        private void bindTo(EventBus eventBus) {
@@ -455,11 +396,11 @@ 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 {
                MessagesCellTable getGrid();
+               
+               void refresh();
 
                List<Long> getSelectedMessagesIds();
 
-               void refresh();
-
                Set<Message> getSelectedMessages();
        }
 
@@ -472,14 +413,14 @@ public class MessageListActivity extends
                }
        }
        private void deleteSelectedMessages() {
-               String fullName= null;
-               if(placeController.getWhere() instanceof FolderPlace){
-                       fullName=((FolderPlace) 
placeController.getWhere()).getToken();
-               }else{
-                       fullName=((MessagePlace) 
placeController.getWhere()).getTokenWrapper().getFolder();
+               String fullName = null;
+               if (pc.getWhere() instanceof FolderPlace) {
+                       fullName = ((FolderPlace) pc.getWhere()).getToken();
+               } else {
+                       fullName = ((MessagePlace) 
pc.getWhere()).getTokenWrapper().getFolder();
                }
                final List<Long> uids = display.getSelectedMessagesIds();
-               DeleteMessageByUidRequest req = 
requestFactory.deleteMessageByUidRequest();
+               DeleteMessageByUidRequest req = rf.deleteMessageByUidRequest();
                DeleteMessageByUidAction action = 
req.create(DeleteMessageByUidAction.class);
                ImapFolder f = req.create(ImapFolder.class);
                f.setFullName(fullName);
@@ -489,7 +430,7 @@ public class MessageListActivity extends
                        @Override
                        public void onSuccess(DeleteMessageResult response) {
                                
antiSelectMessages(display.getSelectedMessages());
-                               refresh();
+//                             refresh();
                        }
                });
        }

Modified: 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/MessageSendActivity.java
URL: 
http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/MessageSendActivity.java?rev=1522374&r1=1522373&r2=1522374&view=diff
==============================================================================
--- 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/MessageSendActivity.java
 (original)
+++ 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/MessageSendActivity.java
 Thu Sep 12 04:39:59 2013
@@ -645,7 +645,7 @@ public class MessageSendActivity extends
        protected ClickHandler sendClickHandler = new ClickHandler() {
                public void onClick(ClickEvent event) {
                        if (validate()) {
-                               sendReq = requestFactory.sendMessageRequest();
+                               sendReq = rf.sendMessageRequest();
                                message = sendReq.create(SmtpMessage.class);
                                List<MessageAttachment> attaches = new 
ArrayList<MessageAttachment>();
                                for(MessageAttachment attach : attachments){// 
we must use this, else console will complain a NullPointerException
@@ -675,7 +675,7 @@ public class MessageSendActivity extends
                                                }
                                        });
                                } else if (type == Type.FORWARD) {
-                                       SendForwardMessageRequest forwardReq = 
requestFactory.sendForwardMessageRequest();
+                                       SendForwardMessageRequest forwardReq = 
rf.sendForwardMessageRequest();
                                        SendForwardMessageAction forwardAction 
= forwardReq.create(SendForwardMessageAction.class);
                                        forwardAction.setMessage(message);
                                        forwardAction.setFolder(folder);
@@ -687,7 +687,7 @@ public class MessageSendActivity extends
                                                }
                                        });
                                } else {
-                                       SendReplyMessageRequest replyReq = 
requestFactory.sendReplyMessageRequest();
+                                       SendReplyMessageRequest replyReq = 
rf.sendReplyMessageRequest();
                                        SendReplyMessageAction replyAction = 
replyReq.create(SendReplyMessageAction.class);
                                        replyAction.setMessage(message);
                                        replyAction.setFolder(folder);

Modified: 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/ToolBarActivity.java
URL: 
http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/ToolBarActivity.java?rev=1522374&r1=1522373&r2=1522374&view=diff
==============================================================================
--- 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/ToolBarActivity.java
 (original)
+++ 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/ToolBarActivity.java
 Thu Sep 12 04:39:59 2013
@@ -199,21 +199,14 @@ public class ToolBarActivity extends App
 
        @Inject private Displayable display;
        @Inject private MessagesCellTable table;
-       @Inject private MessageListActivity messagesDisplay;
+       @Inject private MessageListActivity.Displayable messagesDisplay;
        @Inject private FolderListActivity.Displayable folderListDisplay;
        @Inject private HupaController hupaController;
-       // FIXME messagesDisplay can not be injected into ToolBarView, why?
        private String folderName;
 
-//     @Override
-//     public void onStop() {
-//             // for tool bar work as expected, not to unbind event handlers
-//     }
-
        @Override
        public void start(AcceptsOneWidget container, EventBus eventBus) {
                container.setWidget(display.asWidget());
-//             display.enableAllTools(false);
                bindTo(eventBus);
        }
 
@@ -233,7 +226,6 @@ public class ToolBarActivity extends App
 >>>>>>> integrate all of the views to their corresponding activities and 
 >>>>>>> mappers
 =======
        private void bindTo(EventBus eventBus) {
-
                registerHandler(display.getMarkRead().addClickHandler(new 
ClickHandler() {
                        @Override
                        public void onClick(ClickEvent event) {
@@ -250,7 +242,6 @@ public class ToolBarActivity extends App
                                display.getPopup().hide();
                        }
                }));
-
                registerHandler(display.getDeleteReg());
                registerHandler(display.getMarkReg());
                registerHandler(display.getReplyReg());
@@ -266,7 +257,7 @@ public class ToolBarActivity extends App
                                table.markRead(msg, read);
                        }
                }
-               SetFlagRequest req = this.requestFactory.setFlagRequest();
+               SetFlagRequest req = this.rf.setFlagRequest();
                SetFlagAction action = req.create(SetFlagAction.class);
                ImapFolder f = req.create(ImapFolder.class);
                f.setFullName(folderName);
@@ -277,18 +268,14 @@ public class ToolBarActivity extends App
                req.set(action).fire(new Receiver<GenericResult>() {
                        @Override
                        public void onSuccess(GenericResult response) {
-                               table.refresh();
-//                             table.setStyleBaseOnTag();
                                folderListDisplay.refresh();
                                messagesDisplay.refresh();
                                hupaController.hideTopLoading();
                        }
                });
-
        }
 
        public interface Displayable extends WidgetDisplayable {
-
                void enableSendingTools(boolean is);
                HandlerRegistration getForwardReg();
                HandlerRegistration getReplyAllReg();
@@ -297,23 +284,15 @@ public class ToolBarActivity extends App
                HandlerRegistration getDeleteReg();
                void enableDealingTools(boolean is);
                void enableAllTools(boolean is);
-
                HasClickHandlers getReply();
-
                HasClickHandlers getReplyAll();
-
                HasClickHandlers getForward();
-
                void setParameters(Parameters parameters);
                Parameters getParameters();
-
                HasClickHandlers getMarkUnread();
-
                HasClickHandlers getMarkRead();
-
                HasClickHandlers getMark();
                HasClickHandlers getDelete();
-
                PopupPanel getPopup();
                HasClickHandlers getCompose();
        }

Modified: 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/TopActivity.java
URL: 
http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/TopActivity.java?rev=1522374&r1=1522373&r2=1522374&view=diff
==============================================================================
--- 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/TopActivity.java
 (original)
+++ 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/TopActivity.java
 Thu Sep 12 04:39:59 2013
@@ -309,6 +309,7 @@ public class TopActivity extends AppBase
        private void doLogout() {
                if (user != null) {
                        LogoutUserRequest req = rf.logoutRequest();
+<<<<<<< HEAD
                        req.logout().fire(new Receiver<LogoutUserResult>() {
                                @Override
                                public void onSuccess(LogoutUserResult 
response) {
@@ -353,6 +354,8 @@ public class TopActivity extends AppBase
 =======
                if (user != null) {
                        LogoutUserRequest req = requestFactory.logoutRequest();
+=======
+>>>>>>> change message list view to make it not refresh the whole list when 
click one of the messages
                        req.logout().fire(new Receiver<LogoutUserResult>() {
                                @Override
                                public void onSuccess(LogoutUserResult 
response) {
@@ -475,6 +478,7 @@ public class TopActivity extends AppBase
                        if (!running) {
                                running = true;
                                IdleRequest req = rf.idleRequest();
+<<<<<<< HEAD
                                IdleAction action = 
req.create(IdleAction.class);
                                req.idle(action).fire(new 
Receiver<IdleResult>() {
 
@@ -528,6 +532,8 @@ public class TopActivity extends AppBase
 >>>>>>> introduce the top activity
 =======
                                IdleRequest req = requestFactory.idleRequest();
+=======
+>>>>>>> change message list view to make it not refresh the whole list when 
click one of the messages
                                IdleAction action = 
req.create(IdleAction.class);
                                req.idle(action).fire(new 
Receiver<IdleResult>() {
 

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=1522374&r1=1522373&r2=1522374&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 04:39:59 2013
@@ -189,7 +189,7 @@ public class TopBarActivity extends AppB
 =======
 =======
        private void checkSessionUser() {
-               CheckSessionRequest checkSession = 
requestFactory.sessionRequest();
+               CheckSessionRequest checkSession = rf.sessionRequest();
                checkSession.getUser().fire(new Receiver<User>() {
                        @Override
                        public void onSuccess(User user) {
@@ -216,21 +216,21 @@ public class TopBarActivity extends AppB
 
        private void doLogout() {
                if (user != null) {
-                       LogoutUserRequest req = requestFactory.logoutRequest();
+                       LogoutUserRequest req = rf.logoutRequest();
                        req.logout().fire(new Receiver<LogoutUserResult>() {
                                @Override
                                public void onSuccess(LogoutUserResult 
response) {
                                        eventBus.fireEvent(new 
LogoutEvent(response.getUser()));
                                        RootLayoutPanel.get().clear();
                                        
RootLayoutPanel.get().add(loginLayout.get());
-                                       
TopBarActivity.this.placeController.goTo(new DefaultPlace("@"));
+                                       TopBarActivity.this.pc.goTo(new 
DefaultPlace("@"));
                                }
 
                                @Override
                                public void onFailure(ServerFailure error) {
                                        RootLayoutPanel.get().clear();
                                        
RootLayoutPanel.get().add(loginLayout.get());
-                                       
TopBarActivity.this.placeController.goTo(new DefaultPlace("@"));
+                                       TopBarActivity.this.pc.goTo(new 
DefaultPlace("@"));
                                }
                        });
                }

Modified: 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/WestActivity.java
URL: 
http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/WestActivity.java?rev=1522374&r1=1522373&r2=1522374&view=diff
==============================================================================
--- 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/WestActivity.java
 (original)
+++ 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/WestActivity.java
 Thu Sep 12 04:39:59 2013
@@ -116,6 +116,7 @@ public class WestActivity extends AppBas
                                }
 
                                GetMessageDetailsRequest req = 
rf.messageDetailsRequest();
+<<<<<<< HEAD
                                GetMessageDetailsAction action = 
req.create(GetMessageDetailsAction.class);
                                final ImapFolder f = 
req.create(ImapFolder.class);
 //                             event.getFolder().setFolderTo(f);
@@ -940,6 +941,8 @@ System.out.println("1111111"+response);
                                }
 
                                GetMessageDetailsRequest req = 
requestFactory.messageDetailsRequest();
+=======
+>>>>>>> change message list view to make it not refresh the whole list when 
click one of the messages
                                GetMessageDetailsAction action = 
req.create(GetMessageDetailsAction.class);
                                final ImapFolder f = 
req.create(ImapFolder.class);
 //                             event.getFolder().setFolderTo(f);
@@ -1367,16 +1370,16 @@ System.out.println("1111111"+response);
 =======
 >>>>>>> refactoring.
        private void showNewMessage() {
-               
placeController.goTo(this.messageSendPlaceProvider.get().with(user, null, null, 
null, Type.NEW));
+               pc.goTo(this.messageSendPlaceProvider.get().with(user, null, 
null, null, Type.NEW));
        }
 
        private void showForwardMessage(ForwardMessageEvent event) {
-               
placeController.goTo(this.messageSendPlaceProvider.get().with(event.getUser(), 
event.getFolder(),
+               
pc.goTo(this.messageSendPlaceProvider.get().with(event.getUser(), 
event.getFolder(),
                        event.getMessage(), event.getMessageDetails(), 
Type.FORWARD));
        }
 
        private void showReplyMessage(ReplyMessageEvent event) {
-               
placeController.goTo(this.messageSendPlaceProvider.get().with(event.getUser(), 
event.getFolder(),
+               
pc.goTo(this.messageSendPlaceProvider.get().with(event.getUser(), 
event.getFolder(),
                        event.getMessage(), event.getMessageDetails(), 
event.getReplyAll() ? Type.REPLY_ALL : Type.REPLY));
        }
 

Modified: 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ioc/AppGinModule.java
URL: 
http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ioc/AppGinModule.java?rev=1522374&r1=1522373&r2=1522374&view=diff
==============================================================================
--- 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ioc/AppGinModule.java
 (original)
+++ 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ioc/AppGinModule.java
 Thu Sep 12 04:39:59 2013
@@ -169,6 +169,7 @@ import org.apache.hupa.client.mapper.App
 <<<<<<< HEAD
 <<<<<<< HEAD
 <<<<<<< HEAD
+<<<<<<< HEAD
 import org.apache.hupa.client.mapper.CachingTopActivityMapper;
 <<<<<<< HEAD
 <<<<<<< HEAD
@@ -221,6 +222,9 @@ import org.apache.hupa.client.mapper.Com
 =======
 =======
 =======
+=======
+import org.apache.hupa.client.mapper.CachingMessageListActivityMapper;
+>>>>>>> change message list view to make it not refresh the whole list when 
click one of the messages
 import org.apache.hupa.client.mapper.CachingTopBarActivityMapper;
 >>>>>>> fixed issue#46 and issue#32
 import org.apache.hupa.client.mapper.ComposeActivityMapper;

Modified: 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mapper/CachingMessageListActivityMapper.java
URL: 
http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mapper/CachingMessageListActivityMapper.java?rev=1522374&r1=1522373&r2=1522374&view=diff
==============================================================================
--- 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mapper/CachingMessageListActivityMapper.java
 (original)
+++ 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mapper/CachingMessageListActivityMapper.java
 Thu Sep 12 04:39:59 2013
@@ -20,9 +20,13 @@
 package org.apache.hupa.client.mapper;
 
 <<<<<<< HEAD
+<<<<<<< HEAD
 import org.apache.hupa.client.place.FolderPlace;
 =======
 >>>>>>> change place management and make refresh folder and message list more 
 >>>>>>> gentle
+=======
+import org.apache.hupa.client.place.FolderPlace;
+>>>>>>> change message list view to make it not refresh the whole list when 
click one of the messages
 import org.apache.hupa.client.place.MessagePlace;
 
 import com.google.gwt.activity.shared.Activity;
@@ -43,6 +47,7 @@ public class CachingMessageListActivityM
                        @Override
                        public Place filter(Place place) {
 <<<<<<< HEAD
+<<<<<<< HEAD
                                return place instanceof MessagePlace ? new 
FolderPlace(((MessagePlace) place).getTokenWrapper()
                                                .getFolder()) : place;
                        }
@@ -57,6 +62,15 @@ public class CachingMessageListActivityM
 
                filteredActivityMapper = new FilteredActivityMapper(filter, new 
CachingActivityMapper(messageListActivityMapper));
 >>>>>>> change place management and make refresh folder and message list more 
 >>>>>>> gentle
+=======
+                               return place instanceof MessagePlace ? new 
FolderPlace(((MessagePlace) place).getTokenWrapper()
+                                               .getFolder()) : place;
+                       }
+               };
+
+               filteredActivityMapper = new FilteredActivityMapper(filter,
+                               new 
CachingActivityMapper(messageListActivityMapper));
+>>>>>>> change message list view to make it not refresh the whole list when 
click one of the messages
        }
 
        @Override

Modified: 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mapper/MessageListActivityMapper.java
URL: 
http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mapper/MessageListActivityMapper.java?rev=1522374&r1=1522373&r2=1522374&view=diff
==============================================================================
--- 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mapper/MessageListActivityMapper.java
 (original)
+++ 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mapper/MessageListActivityMapper.java
 Thu Sep 12 04:39:59 2013
@@ -124,7 +124,15 @@ public class MessageListActivityMapper e
                        return null;
 =======
        protected Activity lazyLoadActivity(final Place place) {
+<<<<<<< HEAD
 >>>>>>> change place management and make refresh folder and message list more 
 >>>>>>> gentle
+=======
+               if (place instanceof FolderPlace) {
+                       return 
messageListActivityProvider.get().with(((FolderPlace) place).getToken());
+               } else if(place instanceof MessagePlace){
+                       return 
messageListActivityProvider.get().with(((MessagePlace) 
place).getTokenWrapper().getFolder());
+               }
+>>>>>>> change message list view to make it not refresh the whole list when 
click one of the messages
                return new ActivityAsyncProxy() {
                        @Override
                        protected void doAsync(RunAsyncCallback callback) {

Modified: 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/place/FolderPlace.java
URL: 
http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/place/FolderPlace.java?rev=1522374&r1=1522373&r2=1522374&view=diff
==============================================================================
--- 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/place/FolderPlace.java
 (original)
+++ 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/place/FolderPlace.java
 Thu Sep 12 04:39:59 2013
@@ -232,6 +232,7 @@ public class FolderPlace extends HupaPla
                        return place.getToken();
                }
        }
+<<<<<<< HEAD
 <<<<<<< 
HEAD:client/src/main/java/org/apache/hupa/client/place/IMAPMessagePlace.java
 
 <<<<<<< HEAD
@@ -265,4 +266,26 @@ public class FolderPlace extends HupaPla
 >>>>>>> make reload message content work, use the same place with folder list, 
 >>>>>>> while separated with slash, that looks like Gmail's
 =======
 >>>>>>> change place management and make refresh folder and message list more 
 >>>>>>> gentle:client/src/main/java/org/apache/hupa/client/place/FolderPlace.java
+=======
+//
+//     @Override
+//     public boolean equals(Object o) {
+//             if (o == null)
+//                     return false;
+//             if (o == this)
+//                     return true;
+//             if (o.getClass() != getClass())
+//                     return false;
+//             FolderPlace place = (FolderPlace) o;
+//             return (token == place.token || (token != null && 
token.equals(place.token)));
+//     }
+//
+//     @Override
+//     public int hashCode() {
+//             final int prime = 31;
+//             int result = 1;
+//             result = prime * result + ((token == null) ? 0 : 
token.hashCode());
+//             return result;
+//     }
+>>>>>>> change message list view to make it not refresh the whole list when 
click one of the messages
 }

Modified: 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/ContentSplitLayoutPanel.java
URL: 
http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/ContentSplitLayoutPanel.java?rev=1522374&r1=1522373&r2=1522374&view=diff
==============================================================================
--- 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/ContentSplitLayoutPanel.java
 (original)
+++ 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/ContentSplitLayoutPanel.java
 Thu Sep 12 04:39:59 2013
@@ -1,6 +1,5 @@
 package org.apache.hupa.client.ui;
 
-import com.google.gwt.core.client.Scheduler;
 import com.google.gwt.user.client.ui.SplitLayoutPanel;
 import com.google.inject.Inject;
 
@@ -14,15 +13,4 @@ public class ContentSplitLayoutPanel ext
        public ContentSplitLayoutPanel(int splitterSize){
                super(splitterSize);
        }
-
-       @Override
-       public void onResize() {
-               super.onResize();
-               Scheduler.get().scheduleDeferred(new 
Scheduler.ScheduledCommand() {
-                       @Override
-                       public void execute() {
-                               table.refresh();
-                       }
-               });
-       }
 }

Modified: 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/FolderListView.java
URL: 
http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/FolderListView.java?rev=1522374&r1=1522373&r2=1522374&view=diff
==============================================================================
--- 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/FolderListView.java
 (original)
+++ 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/FolderListView.java
 Thu Sep 12 04:39:59 2013
@@ -271,8 +271,12 @@ public class FolderListView extends Comp
 =======
                this.viewModel = viewModel;
                cellTree = new CellTree(viewModel,null,Resources.INSTANCE);
+<<<<<<< HEAD
 >>>>>>> try to rearrange the places and history managment.
                cellTree.setAnimationEnabled(true);
+=======
+//             cellTree.setAnimationEnabled(true);
+>>>>>>> change message list view to make it not refresh the whole list when 
click one of the messages
                thisView.add(cellTree);
 >>>>>>> fixed issue#45, issue#47, issue#51. change the layout of composite, 
 >>>>>>> don't use contact instead of folders list
        }

Modified: 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/FolderListView.ui.xml
URL: 
http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/FolderListView.ui.xml?rev=1522374&r1=1522373&r2=1522374&view=diff
==============================================================================
--- 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/FolderListView.ui.xml
 (original)
+++ 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/FolderListView.ui.xml
 Thu Sep 12 04:39:59 2013
@@ -12,6 +12,7 @@
 <ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
 <<<<<<< HEAD
 <<<<<<< HEAD
+<<<<<<< HEAD
        xmlns:g='urn:import:com.google.gwt.user.client.ui'>
 <<<<<<< HEAD
        <g:SimplePanel ui:field="thisView" />
@@ -34,6 +35,9 @@
        </g:SimplePanel>
 >>>>>>> make login page as one part of the overall layout & splite layout to 
 >>>>>>> little one
 =======
+=======
+       xmlns:g='urn:import:com.google.gwt.user.client.ui'>
+>>>>>>> change message list view to make it not refresh the whole list when 
click one of the messages
        <g:SimplePanel ui:field="thisView" />
 >>>>>>> make compose panel left another widget rather than cell tree
 </ui:UiBinder>
\ No newline at end of file

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=1522374&r1=1522373&r2=1522374&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 04:39:59 2013
@@ -22,6 +22,7 @@ package org.apache.hupa.client.ui;
 import java.util.List;
 
 import org.apache.hupa.client.HupaController;
+import org.apache.hupa.client.activity.MessageListActivity;
 import org.apache.hupa.client.activity.NotificationActivity;
 import org.apache.hupa.client.activity.ToolBarActivity;
 import org.apache.hupa.client.place.FolderPlace;
@@ -52,6 +53,7 @@ public class FoldersTreeViewModel implem
        @Inject private PlaceController placeController;
        @Inject private NotificationActivity.Displayable notice;
        @Inject private ToolBarActivity.Displayable toolBar;
+       @Inject private MessageListActivity.Displayable msgListDisplay;
 
        @Inject
        public FoldersTreeViewModel() {
@@ -63,6 +65,7 @@ public class FoldersTreeViewModel implem
                                SingleSelectionModel<ImapFolder> selectionModel 
= (SingleSelectionModel<ImapFolder>) event.getSource();
                                toolBar.enableAllTools(false);
                                placeController.goTo(new 
FolderPlace(selectionModel.getSelectedObject().getFullName()));
+                               msgListDisplay.refresh();
                        }
                });
        }
@@ -109,13 +112,13 @@ 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) {
-                       super.onBrowserEvent(context, parent, value, event, 
valueUpdater);
-                               placeController.goTo(new 
FolderPlace(value.getFullName()));
-
-               }
+//             @Override
+//             public void onBrowserEvent(Context context, Element parent, 
ImapFolder value, NativeEvent event,
+//                             ValueUpdater<ImapFolder> valueUpdater) {
+//                     super.onBrowserEvent(context, parent, value, event, 
valueUpdater);
+//                             placeController.goTo(new 
FolderPlace(value.getFullName()));
+//
+//             }
 
        }
 

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=1522374&r1=1522373&r2=1522374&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:39:59 2013
@@ -36,6 +36,7 @@ import java.util.logging.Logger;
 import org.apache.hupa.client.activity.MessageListActivity;
 <<<<<<< HEAD
 <<<<<<< HEAD
+<<<<<<< HEAD
 import org.apache.hupa.shared.domain.Message;
 
 import com.google.gwt.core.client.GWT;
@@ -86,28 +87,32 @@ import java.util.Set;
 import org.apache.hupa.client.activity.MessageListActivity;
 >>>>>>> scrub code
 import org.apache.hupa.client.rf.HupaRequestFactory;
+=======
+>>>>>>> change message list view to make it not refresh the whole list when 
click one of the messages
 import org.apache.hupa.shared.domain.Message;
 
 >>>>>>> integrate all of the views to their corresponding activities and 
 >>>>>>> mappers
 import com.google.gwt.core.client.GWT;
 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;
 import com.google.gwt.user.client.ui.Composite;
+import com.google.gwt.user.client.ui.SimpleLayoutPanel;
+import com.google.gwt.user.client.ui.SimplePanel;
 import com.google.gwt.view.client.MultiSelectionModel;
 import com.google.inject.Inject;
 
 public class MessageListView extends Composite implements 
MessageListActivity.Displayable {
 
-       @UiField(provided = true) MessagesCellTable grid;
+       @UiField SimplePanel thisView;
+       private MessagesCellTable grid;
 
        @Inject
-       public MessageListView(final EventBus eventBus, final 
HupaRequestFactory requestFactory,
-                       final PlaceController placeController, final 
MessagesCellTable table) {
-               grid = table;
+       public MessageListView(final EventBus eventBus, final MessagesCellTable 
table) {
                initWidget(binder.createAndBindUi(this));
+               grid = table;
+               thisView.add(grid);
        }
 <<<<<<< HEAD
 <<<<<<< HEAD
@@ -171,9 +176,13 @@ public class MessageListView extends Com
 >>>>>>> let messages list activity make use of mvp
 =======
 
+<<<<<<< HEAD
 >>>>>>> fixed issue#59, coupled with fixing some UI refreshment issues in 
 >>>>>>> toolsbar
        interface MessageListUiBinder extends UiBinder<DataGrid<Message>, 
MessageListView> {
 >>>>>>> coping with reply and forward sending message
+=======
+       interface MessageListUiBinder extends UiBinder<SimpleLayoutPanel, 
MessageListView> {
+>>>>>>> change message list view to make it not refresh the whole list when 
click one of the messages
        }
 
        private static MessageListUiBinder binder = 
GWT.create(MessageListUiBinder.class);
@@ -235,6 +244,11 @@ public class MessageListView extends Com
        public MessagesCellTable getGrid() {
                return grid;
        }
+       
+       @Override
+       public void refresh(){
+               grid.refresh();
+       }
 
 <<<<<<< HEAD
 <<<<<<< HEAD
@@ -253,11 +267,6 @@ public class MessageListView extends Com
                return selecteds;
        }
 
-       @Override
-       public void refresh() {
-               grid.refresh();
-       }
-
        @SuppressWarnings("unchecked")
        @Override
        public Set<Message> getSelectedMessages() {

Modified: 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessageListView.ui.xml
URL: 
http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessageListView.ui.xml?rev=1522374&r1=1522373&r2=1522374&view=diff
==============================================================================
--- 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessageListView.ui.xml
 (original)
+++ 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessageListView.ui.xml
 Thu Sep 12 04:39:59 2013
@@ -14,6 +14,7 @@
 <<<<<<< HEAD
 <<<<<<< HEAD
 <<<<<<< HEAD
+<<<<<<< HEAD
     xmlns:g='urn:import:com.google.gwt.user.client.ui'>
        <g:SimpleLayoutPanel ui:field="thisView" />
 =======
@@ -52,4 +53,8 @@
 =======
        <hupa:MessagesCellTable ui:field="grid" />
 >>>>>>> try to link the mark actions to rf services
+=======
+    xmlns:g='urn:import:com.google.gwt.user.client.ui'>
+       <g:SimpleLayoutPanel ui:field="thisView" />
+>>>>>>> change message list view to make it not refresh the whole list when 
click one of the messages
 </ui:UiBinder>
\ No newline at end of file

Modified: 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessagesCellTable.java
URL: 
http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessagesCellTable.java?rev=1522374&r1=1522373&r2=1522374&view=diff
==============================================================================
--- 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessagesCellTable.java
 (original)
+++ 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessagesCellTable.java
 Thu Sep 12 04:39:59 2013
@@ -503,9 +503,21 @@ import java.util.Date;
 import java.util.List;
 
 import org.apache.hupa.client.HupaConstants;
+import org.apache.hupa.client.HupaController;
 import org.apache.hupa.client.activity.ToolBarActivity;
 import org.apache.hupa.client.bundles.HupaImageBundle;
+import org.apache.hupa.client.place.AbstractPlace;
+import org.apache.hupa.client.place.FolderPlace;
+import org.apache.hupa.client.place.MessagePlace;
+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.MessageImpl.IMAPFlag;
+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 com.google.gwt.cell.client.CheckboxCell;
@@ -517,15 +529,23 @@ import com.google.gwt.cell.client.ValueU
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.dom.client.Style.Unit;
 import com.google.gwt.i18n.client.DateTimeFormat;
+import com.google.gwt.place.shared.Place;
+import com.google.gwt.place.shared.PlaceController;
 import com.google.gwt.resources.client.ImageResource;
 import com.google.gwt.user.cellview.client.Column;
 import com.google.gwt.user.cellview.client.DataGrid;
 import com.google.gwt.user.cellview.client.Header;
 import com.google.gwt.user.cellview.client.RowStyles;
+import com.google.gwt.view.client.AsyncDataProvider;
 import com.google.gwt.view.client.DefaultSelectionEventManager;
+import com.google.gwt.view.client.HasData;
 import com.google.gwt.view.client.MultiSelectionModel;
+import com.google.gwt.view.client.NoSelectionModel;
 import com.google.gwt.view.client.ProvidesKey;
+import com.google.gwt.view.client.SelectionChangeEvent;
 import com.google.inject.Inject;
+import com.google.web.bindery.requestfactory.shared.Receiver;
+import com.google.web.bindery.requestfactory.shared.ServerFailure;
 
 public class MessagesCellTable extends DataGrid<Message> {
 
@@ -563,13 +583,75 @@ public class MessagesCellTable extends D
                }
        };
        private final MultiSelectionModel<? super Message> selectionModel = new 
MultiSelectionModel<Message>(KEY_PROVIDER);
+       public final NoSelectionModel<Message> noSelectionModel = new 
NoSelectionModel<Message>(KEY_PROVIDER);
 
+       PlaceController pc;
+       HupaRequestFactory rf;
+
+       private MessageListDataProvider dataProvider;
+
+       public class MessageListDataProvider extends AsyncDataProvider<Message> 
implements HasRefresh {
+
+               HasData<Message> display;
+
+               @Override
+               public void addDataDisplay(HasData<Message> display) {
+                       super.addDataDisplay(display);
+                       this.display = display;
+               }
+
+               @Override
+               public void refresh() {
+                       this.onRangeChanged(display);
+               }
+
+               @Override
+               protected void onRangeChanged(HasData<Message> display) {
+                       FetchMessagesRequest req = rf.messagesRequest();
+                       FetchMessagesAction action = 
req.create(FetchMessagesAction.class);
+                       final ImapFolder f = req.create(ImapFolder.class);
+                       f.setFullName(parseFolderName(pc));
+                       action.setFolder(f);
+                       action.setOffset(display.getVisibleRange().getLength());
+                       action.setSearchString(searchValue);
+                       action.setStart(display.getVisibleRange().getStart());
+                       req.fetch(action).fire(new 
Receiver<FetchMessagesResult>() {
+                               @Override
+                               public void onSuccess(final FetchMessagesResult 
response) {
+                                       if (response == null || 
response.getRealCount() == 0) {
+                                               updateRowCount(-1, true);
+                                       } else {
+                                               updateRowData(0, 
response.getMessages());
+                                       }
+                                       hc.hideTopLoading();
+                               }
+
+                               @Override
+                               public void onFailure(ServerFailure error) {
+                                       if (error.isFatal()) {
+                                               throw new 
RuntimeException(error.getMessage());
+                                       }
+                                       hc.hideTopLoading();
+                               }
+                       });
+
+               }
+
+       }
+
+       @Inject private ToolBarActivity.Displayable toolBar;
+       private String folderName;
+       private String searchValue;
+       @Inject protected HupaController hc;
        @Inject
-       public MessagesCellTable(final HupaImageBundle imageBundle, final 
HupaConstants constants) {
+       public MessagesCellTable(final HupaImageBundle imageBundle, final 
HupaConstants constants, 
+                       final PlaceController pc,
+                       final HupaRequestFactory rf) {
                super(PAGE_SIZE, Resources.INSTANCE);
-
+               this.pc = pc;
+               this.rf = rf;
                this.imageBundle = imageBundle;
-
+               
                CheckboxCell headerCheckbox = new CheckboxCell();
                ImageResourceCell headerAttached = new ImageResourceCell();
                Header<Boolean> header = new Header<Boolean>(headerCheckbox) {
@@ -609,8 +691,66 @@ public class MessagesCellTable extends D
                // redraw();
                setKeyboardSelectionPolicy(KeyboardSelectionPolicy.DISABLED);
                setAutoHeaderRefreshDisabled(true);
-               setSelectionModel(selectionModel, 
DefaultSelectionEventManager.<Message> createCheckboxManager(0));
+//             setSelectionModel(selectionModel, 
DefaultSelectionEventManager.<Message> createCheckboxManager(0));
+
+               setSelectionModel(noSelectionModel, 
DefaultSelectionEventManager.<Message> createBlacklistManager(0));
+
+               noSelectionModel.addSelectionChangeHandler(new 
SelectionChangeEvent.Handler() {
+                       @Override
+                       public void onSelectionChange(SelectionChangeEvent 
event) {
+                               message = 
noSelectionModel.getLastSelectedObject();
+                               GetMessageDetailsRequest req = 
rf.messageDetailsRequest();
+                               GetMessageDetailsAction action = 
req.create(GetMessageDetailsAction.class);
+                               final ImapFolder f = 
req.create(ImapFolder.class);
+
+                               f.setFullName(parseFolderName(pc));
+                               action.setFolder(f);
+                               action.setUid(message.getUid());
+                               req.get(action).fire(new 
Receiver<GetMessageDetailsResult>() {
+                                       @Override
+                                       public void 
onSuccess(GetMessageDetailsResult response) {
+                                               // 
display.getGrid().getSelectionModel().setSelected(event.getValue(),
+                                               // true);
+//                                             
noSelectionModel.setSelected(message, true);
+                                               toolBar.enableAllTools(true);
+                                               MessagePlace place = new 
MessagePlace(folderName + AbstractPlace.SPLITTER + message.getUid());
+                                               refresh();
+                                               pc.goTo(place);
+                                       }
+
+                                       @Override
+                                       public void onFailure(ServerFailure 
error) {
+                                               if (error.isFatal()) {
+                                                       // 
log.log(Level.SEVERE, error.getMessage());
+                                                       // TODO write the error 
message to
+                                                       // status bar.
+                                                       // 
toolBar.enableAllTools(false);
+                                                       throw new 
RuntimeException(error.getMessage());
+                                               }
+                                       }
+                               });
+                       }
+
+               });
+
+               if (dataProvider == null) {
+                       dataProvider = new MessageListDataProvider();
+                       dataProvider.addDataDisplay(this);
+               }
+               refresh();
+       }
+
+
+       private String parseFolderName(final PlaceController pc) {
+               Place place = pc.getWhere();
+               if(place instanceof FolderPlace){
+                       folderName= ((FolderPlace)place).getToken();
+               }else if (place instanceof MessagePlace){
+                       folderName = 
((MessagePlace)place).getTokenWrapper().getFolder();
+               }
+               return folderName;
        }
+       Message message; // the object selected by selectionModel
 
        public String getMessageStyle(Message row) {
                return haveRead(row) ? getReadStyle() : getUnreadStyle();
@@ -700,17 +840,6 @@ public class MessagesCellTable extends D
                        return object.getReceivedDate();
                }
        }
-       
-       @Override
-       public void onResize(){
-               super.onResize();
-               refresh();
-       }
-
-       public void refresh() {
-//             redraw();
-//             flush();
-       }
 
        public void setStyleBaseOnTag() {
                setRowStyles(new RowStyles<Message>() {
@@ -720,6 +849,9 @@ public class MessagesCellTable extends D
                        }
                });
        }
+       public void refresh() {
+               dataProvider.refresh();
+       }
 
 }
 >>>>>>> fix some bugs related to RF, and try to use new CellView to replace 
 >>>>>>> gwt-incubator 



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