Author: dongxu
Date: Thu Sep 12 03:14:41 2013
New Revision: 1522177

URL: http://svn.apache.org/r1522177
Log:
fix the CellTable display

Modified:
    
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/IMAPMessageListActivity.java
    
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/LoginActivity.java
    
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/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/ui/IMAPMessageListView.java
    
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/IMAPMessageListActivity.java
URL: 
http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/IMAPMessageListActivity.java?rev=1522177&r1=1522176&r2=1522177&view=diff
==============================================================================
--- 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/IMAPMessageListActivity.java
 (original)
+++ 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/IMAPMessageListActivity.java
 Thu Sep 12 03:14:41 2013
@@ -870,20 +870,13 @@ public class IMAPMessageListActivity ext
                                eventBus.fireEvent(new 
DecreaseUnseenEvent(user, folder, response.getCount()));
                        }
                });
-
-               // dispatcher.execute(new DeleteMessageByUid(folder,uids), new
-               // HupaEvoCallback<DeleteMessageResult>(dispatcher, eventBus) {
-               // public void callback(DeleteMessageResult result) {
-               // eventBus.fireEvent(new
-               // DecreaseUnseenEvent(user,folder,result.getCount()));
-               // }
-               // });
        }
        public IMAPMessageListActivity with(MailFolderPlace place) {
                this.user = place.getUser();
                this.folder = place.getFolder();
                this.searchValue = place.getSearchValue();
 <<<<<<< HEAD
+<<<<<<< HEAD
 =======
        }
        @Override
@@ -1128,6 +1121,8 @@ public class IMAPMessageListActivity ext
 =======
                display.setImapFolder(folder);
 >>>>>>> use CellTable to deal with MessageTableModel, even a few issues
+=======
+>>>>>>> fix the CellTable display
                return this;
        }
 
@@ -1302,7 +1297,6 @@ public class IMAPMessageListActivity ext
                public HasValue<String> getSearchValue();
                public void fillSearchOracle(List<Message> messages);
                public void setExpandLoading(boolean expanding);
-               void setImapFolder(ImapFolder folder);
 
        }
 

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=1522177&r1=1522176&r2=1522177&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:14:41 2013
@@ -241,7 +241,7 @@ public class LoginActivity extends Abstr
        public void bind() {
                display.getLoginClick().addClickHandler(new ClickHandler() {
                        public void onClick(ClickEvent event) {
-                               doLogin();
+                               doLogin();// FIXME double run if press "ENTER" 
key in the login page
                        }
                });
 <<<<<<< HEAD

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=1522177&r1=1522176&r2=1522177&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 03:14:41 2013
@@ -912,7 +912,7 @@ System.out.println("1111111"+response);
                                }
 
                                display.setLoadingMessage(true);
-                               if(messagesRequest == null){
+                               if (messagesRequest == null) {
                                        messagesRequest = 
requestFactory.messagesRequest();
                                }
                                GetMessageDetailsRequest req = 
messagesRequest.append(requestFactory.messageDetailsRequest());
@@ -937,9 +937,6 @@ System.out.println("1111111"+response);
                                                        eventBus.fireEvent(new 
DecreaseUnseenEvent(user, folder));
                                                }
                                                
display.setLoadingMessage(false);
-                                               // showMessage(user, folder, 
message,
-                                               // 
response.getMessageDetails());
-
                                                
placeController.goTo(messagePlaceProvider.get().with(user, folder, message,
                                                        
response.getMessageDetails()));
                                        }
@@ -1100,6 +1097,7 @@ System.out.println("1111111"+response);
                                folder = messagesRequest.edit(editableFolder);
 
                                // folder = (ImapFolder) tItem.getUserObject();
+                               // FIXME not good to find
                                eventBus.fireEvent(new LoadMessagesEvent(user, 
folder));
 <<<<<<< HEAD
 >>>>>>> fix the frozen autobean issue, yet another occur
@@ -1337,7 +1335,7 @@ System.out.println("1111111"+response);
                this.searchValue = searchValue;
 
                // FIXME goto?
-//             placeController.goTo(new MailFolderPlace().with(user, folder, 
searchValue));
+               placeController.goTo(new MailFolderPlace().with(user, folder, 
searchValue));
                // 
placeController.goTo(mailInboxPlaceProvider.get().with(user));
                // System.out.println("111");
                // placeController.goTo(new

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=1522177&r1=1522176&r2=1522177&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:14:41 2013
@@ -416,7 +416,7 @@ public class AppGinModule extends Abstra
 
                
bind(PagingScrollTableRowDragController.class).in(Singleton.class);
                bind(MessageTableModel.class).in(Singleton.class);
-//             bind(MessagesCellTable.class).in(Singleton.class);
+               bind(MessagesCellTable.class).in(Singleton.class);
                // Places
                
bind(PlaceHistoryMapper.class).to(AppPlaceHistoryMapper.class).in(Singleton.class);
 

Modified: 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/IMAPMessageListView.java
URL: 
http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/IMAPMessageListView.java?rev=1522177&r1=1522176&r2=1522177&view=diff
==============================================================================
--- 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/IMAPMessageListView.java
 (original)
+++ 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/IMAPMessageListView.java
 Thu Sep 12 03:14:41 2013
@@ -75,7 +75,6 @@ import com.google.gwt.dom.client.Style.U
 >>>>>>> Change to new mvp framework - first step
 import org.apache.hupa.client.bundles.HupaImageBundle;
 import org.apache.hupa.client.dnd.PagingScrollTableRowDragController;
-import org.apache.hupa.client.rf.FetchMessagesRequest;
 import org.apache.hupa.client.rf.HupaRequestFactory;
 import org.apache.hupa.client.widgets.CommandsBar;
 import org.apache.hupa.client.widgets.ConfirmDialogBox;
@@ -83,11 +82,12 @@ import org.apache.hupa.client.widgets.Dr
 import 
org.apache.hupa.client.widgets.DragRefetchPagingScrollTable.DragHandlerFactory;
 import org.apache.hupa.client.widgets.EnableButton;
 import org.apache.hupa.client.widgets.HasDialog;
+import org.apache.hupa.shared.data.MessageImpl;
 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.ImapFolder;
 import org.apache.hupa.shared.domain.Message;
+import org.apache.hupa.shared.events.DecreaseUnseenEvent;
+import org.apache.hupa.shared.events.ExpandMessageEvent;
 import org.apache.hupa.widgets.ui.HasEnable;
 import org.apache.hupa.widgets.ui.Loading;
 import org.apache.hupa.widgets.ui.PagingOptions;
@@ -96,6 +96,7 @@ import org.cobogw.gwt.user.client.ui.But
 
 <<<<<<< HEAD
 <<<<<<< HEAD
+<<<<<<< HEAD
 >>>>>>> Change to new mvp framework - first step
 =======
 >>>>>>> Change to new mvp framework - first step
@@ -108,6 +109,8 @@ import com.google.gwt.core.client.GWT;
 import com.google.gwt.core.client.Scheduler;
 import com.google.gwt.core.client.Scheduler.ScheduledCommand;
 >>>>>>> use CellTable to deal with MessageTableModel, even a few issues
+=======
+>>>>>>> fix the CellTable display
 import com.google.gwt.event.dom.client.ChangeEvent;
 import com.google.gwt.event.dom.client.ChangeHandler;
 import com.google.gwt.event.dom.client.HasChangeHandlers;
@@ -119,6 +122,7 @@ import com.google.gwt.event.dom.client.K
 <<<<<<< HEAD
 <<<<<<< HEAD
 import com.google.gwt.event.shared.EventBus;
+<<<<<<< HEAD
 import com.google.gwt.user.cellview.client.SimplePager;
 import com.google.gwt.user.cellview.client.SimplePager.TextLocation;
 import com.google.gwt.user.client.ui.Anchor;
@@ -767,6 +771,8 @@ public class IMAPMessageListView extends
 =======
 import com.google.gwt.event.shared.EventBus;
 >>>>>>> fix some bugs related to RF, and try to use new CellView to replace 
 >>>>>>> gwt-incubator 
+=======
+>>>>>>> fix the CellTable display
 import com.google.gwt.gen2.table.client.AbstractColumnDefinition;
 import com.google.gwt.gen2.table.client.AbstractScrollTable.ColumnResizePolicy;
 import com.google.gwt.gen2.table.client.AbstractScrollTable.ResizePolicy;
@@ -794,6 +800,7 @@ import com.google.gwt.i18n.client.DateTi
 <<<<<<< HEAD
 <<<<<<< HEAD
 <<<<<<< HEAD
+<<<<<<< HEAD
 =======
 import com.google.gwt.user.cellview.client.AbstractPager;
 import com.google.gwt.user.cellview.client.DataGrid;
@@ -809,6 +816,9 @@ import com.google.gwt.user.cellview.clie
 import com.google.gwt.user.cellview.client.SimplePager;
 import com.google.gwt.user.cellview.client.SimplePager.TextLocation;
 >>>>>>> use CellTable to deal with MessageTableModel, even a few issues
+=======
+import com.google.gwt.user.cellview.client.SimplePager;
+>>>>>>> fix the CellTable display
 import com.google.gwt.user.client.ui.Anchor;
 >>>>>>> 
 import com.google.gwt.user.client.ui.Composite;
@@ -822,10 +832,9 @@ import com.google.gwt.user.client.ui.Sug
 import com.google.gwt.user.client.ui.TableListener;
 import com.google.gwt.user.client.ui.VerticalPanel;
 import com.google.gwt.user.client.ui.Widget;
-import com.google.gwt.view.client.ListDataProvider;
+import com.google.gwt.view.client.SelectionChangeEvent;
+import com.google.gwt.view.client.SingleSelectionModel;
 import com.google.inject.Inject;
-import com.google.web.bindery.requestfactory.shared.Receiver;
-import com.google.web.bindery.requestfactory.shared.ServerFailure;
 
 @SuppressWarnings("deprecation")
 <<<<<<< HEAD
@@ -1595,14 +1604,8 @@ public class IMAPMessageListView extends
        private Button searchButton;
        private Loading loading;
 
-       private MessagesCellTable table;
        private SimplePager pager;
-       
-       private ImapFolder folder;
-       @Override
-       public void setImapFolder(ImapFolder folder){
-               this.folder = folder;
-       }
+       private EventBus eventBus;
 
        @Inject
        public IMAPMessageListView(final PagingScrollTableRowDragController 
controller,
@@ -1611,9 +1614,7 @@ public class IMAPMessageListView extends
                final MessagesCellTable table) {
                this.messages = messages;
                this.imageBundle = imageBundle;
-
-               // table = new MessagesCellTable(eventBus, requestFactory, 
imageBundle);
-               this.table = table;
+               this.eventBus = eventBus;
                pager = new SimplePager();
                pager.setDisplay(table);
 
@@ -1630,7 +1631,6 @@ public class IMAPMessageListView extends
                this.cTableModel = new CachedTableModel<Message>(mTableModel);
                cTableModel.setRowCount(MutableTableModel.UNKNOWN_ROW_COUNT);
                mTableModel.addRowCountChangeHandler(new 
RowCountChangeHandler() {
-
                        public void onRowCountChange(RowCountChangeEvent event) 
{
                                cTableModel.setRowCount(event.getNewRowCount());
                        }
@@ -1642,11 +1642,9 @@ public class IMAPMessageListView extends
                        createTableDefinitation(), controller, 1);
                mailTable.setPageSize(20);
                mailTable.setDragHandler(0, 30, new DragHandlerFactory() {
-
                        public Widget createHandler() {
                                return new 
Image(imageBundle.readyToMoveMailIcon());
                        }
-
                });
 
                HTML emptyTable = new HTML(constants.emptyMailTable());
@@ -1732,142 +1730,14 @@ public class IMAPMessageListView extends
                commandsBar.addRight(pager);
 
                msgListContainer.add(commandsBar);
+
+               msgListContainer.add(table);
                // msgListContainer.add(mailTable);
-               msgListContainer.add(createTable(eventBus, requestFactory, 
imageBundle));
-               // msgListContainer.addSouth(table, DEFAULT_MSG_PAGE_SIZE);
 
                confirmBox.setText(messages.confirmDeleteMessages());
                
confirmDeleteAllBox.setText(messages.confirmDeleteAllMessages());
                initWidget(msgListContainer);
        }
-       
-       private boolean pending;
-       private ListDataProvider<Message> dataProvider = new 
ListDataProvider<Message>();
-       private MessagesCellTable createTable(final EventBus eventBus, final 
HupaRequestFactory requestFactory,
-               final HupaImageBundle imageBundle){
-               MessagesCellTable table = new MessagesCellTable(eventBus, 
requestFactory, imageBundle);
-               table.setWidth("100%", true);
-               SimplePager.Resources pr = 
GWT.create(SimplePager.Resources.class);
-               pager = new SimplePager(TextLocation.CENTER, pr, false, 0, 
true);
-               pager.setDisplay(table);
-
-               table.addColumn(new CheckboxColumn());
-               table.addColumn(new FromColumn());
-               table.addColumn(new SubjectColumn());
-               table.addColumn(new AttachmentColumn());
-               table.addColumn(new DateColumn());
-
-               if (!pending) {
-                       pending = true;
-                       Scheduler.get().scheduleFinally(new ScheduledCommand() {
-                               @Override
-                               public void execute() {
-                                       pending = false;
-                                       fetch(0, requestFactory);
-                               }
-                       });
-               }
-               dataProvider.addDataDisplay(table);
-               return table;
-       }
-
-       public void fetch(final int start, final HupaRequestFactory 
requestFactory) {
-               FetchMessagesRequest messagesRequest = 
requestFactory.messagesRequest();
-               FetchMessagesAction action = 
messagesRequest.create(FetchMessagesAction.class);
-               final ImapFolder folder1 = 
messagesRequest.create(ImapFolder.class);
-               folder1.setChildren(this.folder.getChildren());
-               folder1.setDelimiter(this.folder.getDelimiter());
-               folder1.setFullName(this.folder.getFullName());
-               folder1.setMessageCount(this.folder.getMessageCount());
-               folder1.setName(this.folder.getName());
-               folder1.setSubscribed(this.folder.getSubscribed());
-               
folder1.setUnseenMessageCount(this.folder.getUnseenMessageCount());
-               // FIXME cannot put setFolder to the first place
-               action.setOffset(table.getPageSize());
-               action.setFolder(folder1);
-               action.setSearchString(null);
-               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());
-                               
folder.setUnseenMessageCount(result.getRealUnreadCount());
-                               dataProvider.setList(result.getMessages());
-//                             table.setRowCount(result.getRealCount());
-//                             if (result.getMessages() != null) {
-//                                     table.setRowData(start + 
table.getPageSize(), result.getMessages());
-//                             } else {
-//                                     table.setRowData(start 
+table.getPageSize(), result.getMessages());
-//                             }
-
-                   pager.setPageStart(start);
-//                 if (start == 0 || !table.isRowCountExact()) {
-//                     table.setRowCount(start + result.getMessages().size(), 
result.getMessages().size() < table.getPageSize());
-//                 }
-//                             flush();
-                               // Notify presenter to update folder tree view
-//                             eventBus.fireEvent(new 
MessagesReceivedEvent(folder1, result.getMessages()));
-                       }
-               });
-       }
-
-       private class CheckboxColumn extends Column<Message, Boolean> {
-               public CheckboxColumn() {
-                       super(new CheckboxCell());
-               }
-               @Override
-               public Boolean getValue(Message object) {
-                       return true;
-               }
-       }
-
-       private class FromColumn extends Column<Message, String> {
-               public FromColumn() {
-                       super(new TextCell());
-               }
-               @Override
-               public String getValue(Message object) {
-                       return object.getFrom();
-               }
-       }
-
-       private class SubjectColumn extends Column<Message, String> {
-               public SubjectColumn() {
-                       super(new TextCell());
-               }
-               @Override
-               public String getValue(Message object) {
-                       return object.getSubject();
-               }
-       }
-
-       private class AttachmentColumn extends Column<Message, ImageResource> {
-               public AttachmentColumn() {
-                       super(new ImageResourceCell());
-               }
-               @Override
-               public ImageResource getValue(Message object) {
-                       return object.hasAttachment() ? 
imageBundle.attachmentIcon() : null;
-               }
-       }
-
-       private class DateColumn extends Column<Message, Date> {
-               public DateColumn() {
-                       super(new 
DateCell(DateTimeFormat.getFormat("dd.MMM.yyyy")));
-               }
-               @Override
-               public Date getValue(Message object) {
-                       return object.getReceivedDate();
-               }
-       }
        PageLoadHandler onMessagePageLoadHandler = new PageLoadHandler() {
 
                public void onPageLoad(PageLoadEvent event) {

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=1522177&r1=1522176&r2=1522177&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 03:14:41 2013
@@ -483,11 +483,14 @@ import org.apache.hupa.client.bundles.Hu
 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.data.MessageImpl;
 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.DecreaseUnseenEvent;
+import org.apache.hupa.shared.events.ExpandMessageEvent;
 import org.apache.hupa.shared.events.FolderSelectionEvent;
 import org.apache.hupa.shared.events.FolderSelectionEventHandler;
 import org.apache.hupa.shared.events.LoadMessagesEvent;
@@ -502,21 +505,25 @@ import com.google.gwt.cell.client.Checkb
 import com.google.gwt.cell.client.DateCell;
 import com.google.gwt.cell.client.ImageResourceCell;
 import com.google.gwt.cell.client.TextCell;
+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.i18n.client.DateTimeFormat;
 import com.google.gwt.resources.client.ImageResource;
 import com.google.gwt.user.cellview.client.CellTable;
 import com.google.gwt.user.cellview.client.Column;
-import 
com.google.gwt.user.cellview.client.HasKeyboardSelectionPolicy.KeyboardSelectionPolicy;
 import com.google.gwt.user.cellview.client.SimplePager;
+import com.google.gwt.view.client.ListDataProvider;
 import com.google.gwt.view.client.RangeChangeEvent;
+import com.google.gwt.view.client.SelectionChangeEvent;
+import com.google.gwt.view.client.SingleSelectionModel;
 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 CellTable<Message> {
 
-       private static final int PAGE_SIZE = 25;
+       private static final int PAGE_SIZE = 15;
        
        private User user;
        private ImapFolder folder;
@@ -527,6 +534,7 @@ public class MessagesCellTable extends C
        private boolean pending;
 
        private SimplePager pager;
+       private ListDataProvider<Message> dataProvider;
        
        public SimplePager getPager(){
                return pager;
@@ -548,26 +556,15 @@ public class MessagesCellTable extends C
 
                pager = new SimplePager();
                pager.setDisplay(this);
+               dataProvider = new ListDataProvider<Message>();
+               dataProvider.addDataDisplay(this);
                setKeyboardSelectionPolicy(KeyboardSelectionPolicy.DISABLED);
-               setVisible(true);
                addRangeChangeHandler(new RangeChangeEvent.Handler() {
                        @Override
                        public void onRangeChange(RangeChangeEvent event) {
                                fetch(event.getNewRange().getStart());
                        }
                });
-               /*
-               if (!pending) {
-                       pending = true;
-                       Scheduler.get().scheduleFinally(new ScheduledCommand() {
-                               @Override
-                               public void execute() {
-                                       pending = false;
-                                       fetch(0);
-                               }
-                       });
-               }
-               */
                // bind some Events
                eventBus.addHandler(LoadMessagesEvent.TYPE, new 
LoadMessagesEventHandler() {
 
@@ -575,7 +572,18 @@ public class MessagesCellTable extends C
                                user = loadMessagesEvent.getUser();
                                folder = loadMessagesEvent.getFolder();
                                searchValue = 
loadMessagesEvent.getSearchValue();
-//                             fetch(0);
+                               fetch(0);
+//                             if (!pending) {
+//                                     pending = true;
+//                                     Scheduler.get().scheduleFinally(new 
ScheduledCommand() {
+//                                             @Override
+//                                             public void execute() {
+//                                                     pending = false;
+//                                                     fetch(0);
+//                                             }
+//                                     });
+//                             }
+                               
                        }
                });
                eventBus.addHandler(FolderSelectionEvent.TYPE, new 
FolderSelectionEventHandler() {
@@ -592,7 +600,16 @@ public class MessagesCellTable extends C
                                user = event.getUser();
                                folder = new 
ImapFolderImpl(user.getSettings().getInboxFolderName());
                                searchValue = null;
-//                             fetch(0);
+                               if (!pending) {
+                                       pending = true;
+                                       Scheduler.get().scheduleFinally(new 
ScheduledCommand() {
+                                               @Override
+                                               public void execute() {
+                                                       pending = false;
+                                                       fetch(0);
+                                               }
+                                       });
+                               }
                        }
                });
                eventBus.addHandler(LogoutEvent.TYPE, new LogoutEventHandler() {
@@ -606,22 +623,49 @@ public class MessagesCellTable extends C
 
                // this.setRowData(values);
 
+               setSelectionModel(selectionModel);
+           selectionModel.addSelectionChangeHandler(new 
SelectionChangeEvent.Handler() {
+             @Override
+             public void onSelectionChange(SelectionChangeEvent event) {
+                 refreshSelection();
+             }
+           });
+
        }
 
+
+       private final SingleSelectionModel<Message> selectionModel = new 
SingleSelectionModel<Message>();
+       protected void refreshSelection() {
+               Message message = selectionModel.getSelectedObject();
+               if(message == null) return;
+//             display.setExpandLoading(true);
+
+               if (message.getFlags().contains(MessageImpl.IMAPFlag.SEEN) == 
false) {
+                       // add flag, fire event and redraw
+                       message.getFlags().add(MessageImpl.IMAPFlag.SEEN);
+                       eventBus.fireEvent(new DecreaseUnseenEvent(user, 
folder, 1));
+
+//                     display.redraw();
+
+               }
+               eventBus.fireEvent(new ExpandMessageEvent(user, folder, 
message));
+           selectionModel.setSelected(message, false);
+           
+    }
        public void fetch(final int start) {
                FetchMessagesRequest messagesRequest = 
requestFactory.messagesRequest();
                FetchMessagesAction action = 
messagesRequest.create(FetchMessagesAction.class);
-               final ImapFolder folder = 
messagesRequest.create(ImapFolder.class);
-               folder.setChildren(this.folder.getChildren());
-               folder.setDelimiter(this.folder.getDelimiter());
-               folder.setFullName(this.folder.getFullName());
-               folder.setMessageCount(this.folder.getMessageCount());
-               folder.setName(this.folder.getName());
-               folder.setSubscribed(this.folder.getSubscribed());
-               
folder.setUnseenMessageCount(this.folder.getUnseenMessageCount());
+               final ImapFolder folder1 = 
messagesRequest.create(ImapFolder.class);
+               folder1.setChildren(this.folder.getChildren());
+               folder1.setDelimiter(this.folder.getDelimiter());
+               folder1.setFullName(this.folder.getFullName());
+               folder1.setMessageCount(this.folder.getMessageCount());
+               folder1.setName(this.folder.getName());
+               folder1.setSubscribed(this.folder.getSubscribed());
+               
folder1.setUnseenMessageCount(this.folder.getUnseenMessageCount());
                // FIXME cannot put setFolder to the first place
                action.setOffset(getPageSize());
-               action.setFolder(folder);
+               action.setFolder(folder1);
                action.setSearchString(searchValue);
                action.setStart(start);
                messagesRequest.fetch(action).fire(new 
Receiver<FetchMessagesResult>() {
@@ -637,6 +681,7 @@ public class MessagesCellTable extends C
                                assert result != null;
                                
MessagesCellTable.this.folder.setMessageCount(result.getRealCount());
                                
MessagesCellTable.this.folder.setUnseenMessageCount(result.getRealUnreadCount());
+                               dataProvider.setList(result.getMessages());
                                setRowCount(result.getRealCount());
                                if (result.getMessages() != null) {
                                        setRowData(start + getPageSize(), 
result.getMessages());
@@ -650,7 +695,7 @@ public class MessagesCellTable extends C
                    }
 //                             flush();
                                // Notify presenter to update folder tree view
-                               eventBus.fireEvent(new 
MessagesReceivedEvent(folder, result.getMessages()));
+                               eventBus.fireEvent(new 
MessagesReceivedEvent(folder1, result.getMessages()));
                        }
                });
        }



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