Author: dongxu
Date: Thu Sep 12 03:47:13 2013
New Revision: 1522248

URL: http://svn.apache.org/r1522248
Log:
make message list view panel work as expected partly

Modified:
    
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/ioc/AppGinModule.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/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/HupaLayout.java
    
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/HupaLayout.ui.xml
    
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessageListFooterView.java
    
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessageListFooterView.ui.xml
    
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

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=1522248&r1=1522247&r2=1522248&view=diff
==============================================================================
--- 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/LoginActivity.java
 (original)
+++ 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/LoginActivity.java
 Thu Sep 12 03:47:13 2013
@@ -489,7 +489,7 @@ public class LoginActivity extends Abstr
                                RootLayoutPanel.get().add(hupaLayout.get());
                                placeController.goTo(new MailFolderPlace());
 //                             placeController.goTo(new 
MailFolderPlace().with(response, useDefaultInboxFolder(response), null));
-//                             eventBus.fireEvent(new LoginEvent(response));
+                               eventBus.fireEvent(new LoginEvent(response));
                        }
                        @Override
                        public void onFailure(ServerFailure error) {

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=1522248&r1=1522247&r2=1522248&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 03:47:13 2013
@@ -145,6 +145,7 @@ import org.apache.hupa.client.activity.T
 import org.apache.hupa.client.activity.TopBarActivity;
 import org.apache.hupa.client.activity.WestActivity;
 import org.apache.hupa.client.mapper.AppPlaceHistoryMapper;
+<<<<<<< HEAD
 import org.apache.hupa.client.mapper.CachingTopActivityMapper;
 <<<<<<< HEAD
 <<<<<<< HEAD
@@ -186,10 +187,11 @@ import org.apache.hupa.client.mapper.Mai
 >>>>>>> Make the evo more clear.
 =======
 =======
+=======
+>>>>>>> make message list view panel work as expected partly
 import org.apache.hupa.client.mapper.FolderListActivityMapper;
 import org.apache.hupa.client.mapper.LoginActivityMapper;
 import org.apache.hupa.client.mapper.LogoActivityMapper;
-import org.apache.hupa.client.mapper.MainContentActivityMapper;
 import org.apache.hupa.client.mapper.MessageContentActivityMapper;
 import org.apache.hupa.client.mapper.MessageListActivityMapper;
 import org.apache.hupa.client.mapper.MessageListFooterActivityMapper;
@@ -197,9 +199,12 @@ import org.apache.hupa.client.mapper.Nav
 import org.apache.hupa.client.mapper.StatusActivityMapper;
 import org.apache.hupa.client.mapper.ToolBarActivityMapper;
 import org.apache.hupa.client.mapper.TopBarActivityMapper;
+<<<<<<< HEAD
 >>>>>>> integrate all of the views to their corresponding activities and 
 >>>>>>> mappers
 import org.apache.hupa.client.mapper.WestActivityMapper;
 >>>>>>> delete messages, make WestActivity Singleton
+=======
+>>>>>>> make message list view panel work as expected partly
 import org.apache.hupa.client.place.DefaultPlace;
 import org.apache.hupa.client.rf.HupaRequestFactory;
 import org.apache.hupa.client.ui.FolderListView;

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=1522248&r1=1522247&r2=1522248&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 03:47:13 2013
@@ -21,6 +21,7 @@ package org.apache.hupa.client.mapper;
 
 import org.apache.hupa.client.activity.MessageListActivity;
 <<<<<<< HEAD
+<<<<<<< HEAD
 import org.apache.hupa.client.place.FolderPlace;
 import org.apache.hupa.client.place.MessagePlace;
 
@@ -28,6 +29,10 @@ import com.google.gwt.activity.shared.Ac
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.core.client.RunAsyncCallback;
 =======
+=======
+import org.apache.hupa.client.place.DefaultPlace;
+import org.apache.hupa.client.place.MailFolderPlace;
+>>>>>>> make message list view panel work as expected partly
 
 import com.google.gwt.activity.shared.Activity;
 import com.google.gwt.activity.shared.ActivityMapper;
@@ -74,6 +79,8 @@ public class MessageListActivityMapper i
                };
 =======
        public Activity getActivity(Place place) {
+               if(place instanceof DefaultPlace)return null;
+               else if (place instanceof MailFolderPlace) 
messageListActivityProvider.get();
                return messageListActivityProvider.get();
 >>>>>>> integrate all of the views to their corresponding activities and 
 >>>>>>> mappers
        }

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=1522248&r1=1522247&r2=1522248&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 03:47:13 2013
@@ -11,6 +11,7 @@
 
 <ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
 <<<<<<< HEAD
+<<<<<<< HEAD
        xmlns:g='urn:import:com.google.gwt.user.client.ui'>
 <<<<<<< HEAD
        <g:SimplePanel ui:field="thisView" />
@@ -24,8 +25,11 @@
        xmlns:hupa='urn:import:org.apache.hupa.client.ui'
     xmlns:c='urn:import:com.google.gwt.user.cellview.client'>
 >>>>>>> track the folder list tree model issue of invalid session, TODO how to 
 >>>>>>> retrieve folders data using GIN
+=======
+       xmlns:g='urn:import:com.google.gwt.user.client.ui' 
xmlns:c='urn:import:com.google.gwt.user.cellview.client'>
+>>>>>>> make message list view panel work as expected partly
        <g:SimplePanel ui:field="FolderListView">
-               <c:CellTree ui:field="cellTree"/>
+               <c:CellTree ui:field="cellTree" />
        </g:SimplePanel>
 >>>>>>> make login page as one part of the overall layout & splite layout to 
 >>>>>>> little one
 </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=1522248&r1=1522247&r2=1522248&view=diff
==============================================================================
--- 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/FoldersTreeViewModel.java
 (original)
+++ 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/FoldersTreeViewModel.java
 Thu Sep 12 03:47:13 2013
@@ -30,13 +30,7 @@ import org.apache.hupa.shared.events.Loa
 import com.google.gwt.cell.client.AbstractCell;
 import com.google.gwt.core.shared.GWT;
 import com.google.gwt.event.shared.EventBus;
-import com.google.gwt.resources.client.ClientBundle;
-import com.google.gwt.resources.client.ImageResource;
-import com.google.gwt.resources.client.ClientBundle.Source;
 import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
-import com.google.gwt.user.client.ui.AbstractImagePrototype;
-import com.google.gwt.user.client.ui.Image;
-import com.google.gwt.user.client.ui.impl.ClippedImagePrototype;
 import com.google.gwt.view.client.AsyncDataProvider;
 import com.google.gwt.view.client.HasData;
 import com.google.gwt.view.client.ProvidesKey;
@@ -87,7 +81,7 @@ public class FoldersTreeViewModel implem
        @Override
        public <T> NodeInfo<?> getNodeInfo(T value) {
                return new DefaultNodeInfo<ImapFolder>(new 
ImapFolderListDataProvider(
-                               (ImapFolder) value), new 
AbstractCell<ImapFolder>() {
+                               (ImapFolder) value), new 
AbstractCell<ImapFolder>() {//TODO subfolders style and different image for 
each folder
                        @Override
                        public void render(Context context, ImapFolder value,
                                        SafeHtmlBuilder sb) {
@@ -97,36 +91,6 @@ public class FoldersTreeViewModel implem
                        }
                }, selectionModel, null);
        }
-//     @Override
-//     public <T> NodeInfo<?> getNodeInfo(T value) {
-//             return new DefaultNodeInfo<ImapFolder>(new 
ImapFolderListDataProvider(
-//                             (ImapFolder) value), new 
ImapFolderCell(images.listicons()),
-//                             selectionModel, null);
-//     }
-
-       /**
-        * The cell used to render categories.
-        */
-       private static class ImapFolderCell extends AbstractCell<ImapFolder> {
-               private final ImageResource image;
-
-               public ImapFolderCell(ImageResource image) {
-                       this.image = image;
-               }
-
-               @Override
-               public void render(com.google.gwt.cell.client.Cell.Context 
context,
-                               ImapFolder value, SafeHtmlBuilder sb) {
-                       if (value != null) {
-                               AbstractImagePrototype imagePrototype = new 
ClippedImagePrototype(
-                                               image.getSafeUri(), -6, 213, 
24, 24);
-                               
sb.appendHtmlConstant(imagePrototype.getHTML()).appendEscaped(
-                                               " ");
-                               sb.appendEscaped(value.getName());
-                       }
-
-               }
-       }
 
        private class ImapFolderListDataProvider extends
                        AsyncDataProvider<ImapFolder> {
@@ -148,7 +112,6 @@ public class FoldersTreeViewModel implem
                                        .fire(new Receiver<List<ImapFolder>>() {
                                                @Override
                                                public void 
onSuccess(List<ImapFolder> response) {
-                                                       
System.out.println("list of folders-" + response);
                                                        if (response == null || 
response.size() == 0) {
                                                                
updateRowCount(-1, true);
                                                        } else {

Modified: 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/HupaLayout.java
URL: 
http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/HupaLayout.java?rev=1522248&r1=1522247&r2=1522248&view=diff
==============================================================================
--- 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/HupaLayout.java 
(original)
+++ 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/HupaLayout.java 
Thu Sep 12 03:47:13 2013
@@ -253,7 +253,7 @@ public class HupaLayout implements HupaL
                                                                                
                
        @UiField SimplePanel toolBarContainer;
        @UiField SimplePanel folderListContainer;
-       @UiField SimplePanel messageListContainer;
+       @UiField LayoutPanel messageListContainer;
        @UiField SimplePanel messageListFooterContainer;
        @UiField SimplePanel messageContentContainer;
        @UiField SimplePanel statusContainer;
@@ -334,7 +334,11 @@ public class HupaLayout implements HupaL
                return new AcceptsOneWidget() {
                        @Override
                        public void setWidget(IsWidget w) {
-                               
messageListContainer.setWidget(Widget.asWidgetOrNull(w));
+                               Widget widget = Widget.asWidgetOrNull(w);
+                               if (messageListContainer.getWidgetCount() > 0)
+                                       messageListContainer.remove(0);
+                               if (widget != null)
+                                       messageListContainer.add(widget);
                        }
                };
        }

Modified: 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/HupaLayout.ui.xml
URL: 
http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/HupaLayout.ui.xml?rev=1522248&r1=1522247&r2=1522248&view=diff
==============================================================================
--- 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/HupaLayout.ui.xml
 (original)
+++ 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/HupaLayout.ui.xml
 Thu Sep 12 03:47:13 2013
@@ -38,7 +38,7 @@
                        top: 0;
                        left: 0;
                        width: 100%;
-            min-width: 144px;
+                       min-width: 144px;
                        bottom: 0;
                        overflow-x: hidden;
                        overflow-y: auto;
@@ -86,6 +86,7 @@
 <<<<<<< HEAD
 <<<<<<< HEAD
 <<<<<<< HEAD
+<<<<<<< HEAD
                                        <hupa:TopBarView />
 >>>>>>> make login page as one part of the overall layout & splite layout to 
 >>>>>>> little one
 =======
@@ -99,6 +100,9 @@
 =======
                                        <g:SimplePanel 
ui:field="topBarContainer"/>
 >>>>>>> integrate all of the views to their corresponding activities and 
 >>>>>>> mappers
+=======
+                                       <g:SimplePanel 
ui:field="topBarContainer" />
+>>>>>>> make message list view panel work as expected partly
                                </g:north>
                                <g:center>
                                        <g:LayoutPanel 
addStyleNames="{style.feature}"
@@ -115,7 +119,7 @@
                                                        <g:SimpleLayoutPanel 
ui:field="navigationContainer" />
 =======
                                                <g:layer width="177px" 
left="10px">
-                                                       <g:SimplePanel 
ui:field="logoContainer"/>
+                                                       <g:SimplePanel 
ui:field="logoContainer" />
                                                </g:layer>
 <<<<<<< HEAD
                                                <g:layer width="301px" 
right="0">
@@ -153,9 +157,14 @@
 =======
 =======
                                                <g:layer width="287px" 
right="0">
+<<<<<<< HEAD
 >>>>>>> track the folder list tree model issue of invalid session, TODO how to 
 >>>>>>> retrieve folders data using GIN
                                                        <g:LayoutPanel 
ui:field="navigationContainer"/><!-- why can not be SimplePanel here -->
 >>>>>>> integrate all of the views to their corresponding activities and 
 >>>>>>> mappers
+=======
+                                                       <g:LayoutPanel 
ui:field="navigationContainer" /><!-- 
+                                                               why can not be 
SimplePanel here -->
+>>>>>>> make message list view panel work as expected partly
                                                </g:layer>
                         <g:layer left="0%" width="0%" top="0%" height="0%">
                             <hupa:_CenterContactPanel ui:field="contactPanel" 
/>
@@ -171,7 +180,7 @@
                <g:layer left='10px' right='10px' top='88px' bottom="20px">
                        <g:DockLayoutPanel ui:field="MainBox">
                                <g:north size="40">
-                                       <g:SimplePanel 
ui:field="toolBarContainer"/>
+                                       <g:SimplePanel 
ui:field="toolBarContainer" />
                                </g:north>
                                <g:center>
                                        <g:SplitLayoutPanel 
ui:field="MessageSpace">
@@ -179,7 +188,7 @@
                                                        <g:LayoutPanel 
ui:field="LeftBox"
                                                                
addStyleNames="{style.folderList}  {style.box}  {style.listBox}">
                                                                <g:layer 
top="0" height="100%">
-                                                                       
<g:SimplePanel ui:field="folderListContainer"/>
+                                                                       
<g:SimplePanel ui:field="folderListContainer" />
                                                                </g:layer>
                                                                <g:layer 
bottom="0" height="41px">
                                                                        
<g:SimplePanel styleName="{style.boxFooter}">
@@ -197,10 +206,10 @@
                                                                                
        <g:LayoutPanel addStyleNames="{style.box}"
                                                                                
                ui:field="MessageListBox">
                                                                                
                <g:layer>
-                                                                               
                        <g:SimplePanel ui:field="messageListContainer"/>
+                                                                               
                        <g:LayoutPanel ui:field="messageListContainer"/>
                                                                                
                </g:layer>
                                                                                
                <g:layer bottom="0" height="25px">
-                                                                               
                        <g:SimplePanel ui:field="messageListFooterContainer"/>
+                                                                               
                        <g:SimplePanel ui:field="messageListFooterContainer" />
                                                                                
                </g:layer>
                                                                                
        </g:LayoutPanel>
                                                                                
</g:north>

Modified: 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessageListFooterView.java
URL: 
http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessageListFooterView.java?rev=1522248&r1=1522247&r2=1522248&view=diff
==============================================================================
--- 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessageListFooterView.java
 (original)
+++ 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessageListFooterView.java
 Thu Sep 12 03:47:13 2013
@@ -125,27 +125,40 @@ import org.apache.hupa.client.activity.M
 >>>>>>> integrate all of the views to their corresponding activities and 
 >>>>>>> mappers
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.uibinder.client.UiBinder;
+import com.google.gwt.uibinder.client.UiField;
+import com.google.gwt.user.cellview.client.SimplePager;
+import com.google.gwt.user.cellview.client.SimplePager.TextLocation;
 import com.google.gwt.user.client.ui.Composite;
-import com.google.gwt.user.client.ui.HTMLPanel;
+import com.google.gwt.user.client.ui.SimplePanel;
+import com.google.inject.Inject;
 
-public class MessageListFooterView extends Composite implements
-               MessageListFooterActivity.Displayable {
+public class MessageListFooterView extends Composite implements 
MessageListFooterActivity.Displayable {
 
-       public MessageListFooterView() {
+       @UiField(provided = true)
+       SimplePager simplePager;
+
+       @Inject
+       public MessageListFooterView(final MessagesCellTable table) {
+               SimplePager.Resources pagerResources = 
GWT.create(SimplePager.Resources.class);
+               simplePager = new SimplePager(TextLocation.CENTER, 
pagerResources, false, 0, true);
+               simplePager.setDisplay(table);
                initWidget(binder.createAndBindUi(this));
        }
 
 <<<<<<< HEAD
+<<<<<<< HEAD
        interface MessageListFooterUiBinder extends UiBinder<HTMLPanel, 
MessageListFooterView> {
 >>>>>>> make login page as one part of the overall layout & splite layout to 
 >>>>>>> little one
 =======
        interface MessageListFooterUiBinder extends
                        UiBinder<HTMLPanel, MessageListFooterView> {
 >>>>>>> integrate all of the views to their corresponding activities and 
 >>>>>>> mappers
+=======
+       interface MessageListFooterUiBinder extends UiBinder<SimplePanel, 
MessageListFooterView> {
+>>>>>>> make message list view panel work as expected partly
        }
 
-       private static MessageListFooterUiBinder binder = GWT
-                       .create(MessageListFooterUiBinder.class);
+       private static MessageListFooterUiBinder binder = 
GWT.create(MessageListFooterUiBinder.class);
 
 <<<<<<< HEAD
        @Override

Modified: 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessageListFooterView.ui.xml
URL: 
http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessageListFooterView.ui.xml?rev=1522248&r1=1522247&r2=1522248&view=diff
==============================================================================
--- 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessageListFooterView.ui.xml
 (original)
+++ 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessageListFooterView.ui.xml
 Thu Sep 12 03:47:13 2013
@@ -11,6 +11,7 @@
 
 <ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
 <<<<<<< HEAD
+<<<<<<< HEAD
        xmlns:g='urn:import:com.google.gwt.user.client.ui' 
xmlns:c='urn:import:com.google.gwt.user.cellview.client'>
 
        <ui:style>
@@ -30,4 +31,10 @@
        <g:HTMLPanel>MessageListFooter
        </g:HTMLPanel>
 >>>>>>> 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' 
xmlns:c='urn:import:com.google.gwt.user.cellview.client'>
+       <g:SimplePanel>
+               <c:SimplePager ui:field="simplePager" />
+       </g:SimplePanel>
+>>>>>>> make message list view panel work as expected partly
 </ui:UiBinder>
\ No newline at end of file

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=1522248&r1=1522247&r2=1522248&view=diff
==============================================================================
--- 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessageListView.java
 (original)
+++ 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessageListView.java
 Thu Sep 12 03:47:13 2013
@@ -54,30 +54,154 @@ public class MessageListView extends Com
 =======
 =======
 import org.apache.hupa.client.activity.MessageListActivity;
+import org.apache.hupa.client.rf.FetchMessagesRequest;
+import org.apache.hupa.client.rf.HupaRequestFactory;
+import org.apache.hupa.shared.data.ImapFolderImpl;
+import org.apache.hupa.shared.domain.FetchMessagesAction;
+import org.apache.hupa.shared.domain.FetchMessagesResult;
+import org.apache.hupa.shared.domain.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;
 
 >>>>>>> integrate all of the views to their corresponding activities and 
 >>>>>>> mappers
 import com.google.gwt.core.client.GWT;
+import com.google.gwt.core.client.Scheduler;
+import com.google.gwt.core.client.Scheduler.ScheduledCommand;
+import com.google.gwt.event.shared.EventBus;
 import com.google.gwt.uibinder.client.UiBinder;
+import com.google.gwt.uibinder.client.UiField;
 import com.google.gwt.user.client.ui.Composite;
-import com.google.gwt.user.client.ui.SimplePanel;
-
-public class MessageListView extends Composite implements
-               MessageListActivity.Displayable {
-
-       public MessageListView() {
+import com.google.gwt.user.client.ui.LayoutPanel;
+import com.google.gwt.view.client.CellPreviewEvent;
+import com.google.gwt.view.client.CellPreviewEvent.Handler;
+import com.google.gwt.view.client.RangeChangeEvent;
+import com.google.inject.Inject;
+import com.google.web.bindery.requestfactory.shared.Receiver;
+import com.google.web.bindery.requestfactory.shared.ServerFailure;
+
+public class MessageListView extends Composite implements 
MessageListActivity.Displayable {
+
+       @UiField(provided = true)
+       MessagesCellTable table;
+       private HupaRequestFactory requestFactory;
+       private EventBus eventBus;
+       private ImapFolder folder;
+       private String searchValue;
+       private User user;
+       private boolean pending;
+
+       @Inject
+       public MessageListView(final EventBus eventBus, final 
HupaRequestFactory requestFactory,
+                       final MessagesCellTable table) {
+               this.requestFactory = requestFactory;
+               this.eventBus = eventBus;
+               this.table = table;
                initWidget(binder.createAndBindUi(this));
+               table.addCellPreviewHandler(new Handler<Message>() {
+                       @Override
+                       public void onCellPreview(CellPreviewEvent<Message> 
event) {
+                               if (hasClickedButFirstCol(event)) {
+                                       eventBus.fireEvent(new 
ExpandMessageEvent(user, folder, event.getValue()));
+                               }
+                       }
+
+                       private boolean 
hasClickedButFirstCol(CellPreviewEvent<Message> event) {
+                               return 
"click".equals(event.getNativeEvent().getType()) && 0 != event.getColumn();
+                       }
+
+               });
+               table.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 messagesRequest = 
requestFactory.messagesRequest();
+               FetchMessagesAction action = 
messagesRequest.create(FetchMessagesAction.class);
+               final ImapFolder folder1 = 
messagesRequest.create(ImapFolder.class);
+               folder1.setChildren(folder.getChildren());
+               folder1.setDelimiter(folder.getDelimiter());
+               folder1.setFullName(folder.getFullName());
+               folder1.setMessageCount(folder.getMessageCount());
+               folder1.setName(folder.getName());
+               folder1.setSubscribed(folder.getSubscribed());
+               folder1.setUnseenMessageCount(folder.getUnseenMessageCount());
+               action.setFolder(folder1);
+               action.setOffset(table.getPageSize());
+               action.setSearchString(searchValue);
+               action.setStart(start);
+               messagesRequest.fetch(action).fire(new 
Receiver<FetchMessagesResult>() {
+
+                       @Override
+                       public void onFailure(ServerFailure error) {
+                               if (error.isFatal()) {
+                                       throw new 
RuntimeException(error.getMessage());
+                               }
+                       }
+
+                       @Override
+                       public void onSuccess(final FetchMessagesResult result) 
{
+                               assert result != null;
+                               // 
folder.setMessageCount(result.getRealCount());// TODO if do
+                               // this, there will be auto bean has been 
frozen.
+                               // 
folder.setUnseenMessageCount(result.getRealUnreadCount());
+                               
System.out.println("+_+_+_+_+"+result.getMessages());
+                               table.setRowCount(result.getRealCount());
+                               table.setRowData(start, result.getMessages());
+
+                               // pager.setPageStart(start);
+//                             eventBus.fireEvent(new 
MessagesReceivedEvent(folder1, result.getMessages()));
+                       }
+               });
        }
 
 <<<<<<< HEAD
+<<<<<<< HEAD
        interface MessageListUiBinder extends UiBinder<HTMLPanel, 
MessageListView> {
 >>>>>>> make login page as one part of the overall layout & splite layout to 
 >>>>>>> little one
 =======
        interface MessageListUiBinder extends UiBinder<SimplePanel, 
MessageListView> {
 >>>>>>> try to integrate the messages list's panel
+=======
+       interface MessageListUiBinder extends UiBinder<LayoutPanel, 
MessageListView> {
+>>>>>>> make message list view panel work as expected partly
        }
 
-       private static MessageListUiBinder binder = GWT
-                       .create(MessageListUiBinder.class);
+       private static MessageListUiBinder binder = 
GWT.create(MessageListUiBinder.class);
 
 <<<<<<< HEAD
        @Override

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=1522248&r1=1522247&r2=1522248&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 03:47:13 2013
@@ -11,6 +11,7 @@
 
 <ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
 <<<<<<< HEAD
+<<<<<<< HEAD
     xmlns:g='urn:import:com.google.gwt.user.client.ui'>
        <g:SimpleLayoutPanel ui:field="thisView" />
 =======
@@ -25,4 +26,12 @@
                </g:HTMLPanel>
        </g:SimplePanel>
 >>>>>>> try to integrate the messages list's panel
+=======
+       xmlns:g='urn:import:com.google.gwt.user.client.ui' 
xmlns:hupa='urn:import:org.apache.hupa.client.ui'>
+       <g:LayoutPanel>
+               <g:layer>
+                       <hupa:MessagesCellTable ui:field="table" />
+               </g:layer>
+       </g:LayoutPanel>
+>>>>>>> make message list view panel work as expected partly
 </ui:UiBinder>
\ No newline at end of file



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to