Author: dongxu
Date: Thu Sep 12 03:14:16 2013
New Revision: 1522176

URL: http://svn.apache.org/r1522176
Log:
use CellTable to deal with MessageTableModel, even a few issues

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/WestActivity.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=1522176&r1=1522175&r2=1522176&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:16 2013
@@ -883,6 +883,7 @@ public class IMAPMessageListActivity ext
                this.user = place.getUser();
                this.folder = place.getFolder();
                this.searchValue = place.getSearchValue();
+<<<<<<< HEAD
 =======
        }
        @Override
@@ -1124,6 +1125,9 @@ public class IMAPMessageListActivity ext
                this.folder = place.getFolder();
                this.searchValue = place.getSearchValue();
 >>>>>>> Make the evo more clear.
+=======
+               display.setImapFolder(folder);
+>>>>>>> use CellTable to deal with MessageTableModel, even a few issues
                return this;
        }
 
@@ -1298,6 +1302,7 @@ 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/WestActivity.java
URL: 
http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/WestActivity.java?rev=1522176&r1=1522175&r2=1522176&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:16 2013
@@ -1337,7 +1337,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/ui/IMAPMessageListView.java
URL: 
http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/IMAPMessageListView.java?rev=1522176&r1=1522175&r2=1522176&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:16 2013
@@ -75,6 +75,7 @@ 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,6 +84,9 @@ import org.apache.hupa.client.widgets.Dr
 import org.apache.hupa.client.widgets.EnableButton;
 import org.apache.hupa.client.widgets.HasDialog;
 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.widgets.ui.HasEnable;
 import org.apache.hupa.widgets.ui.Loading;
@@ -91,9 +95,19 @@ import org.cobogw.gwt.user.client.ui.But
 import org.cobogw.gwt.user.client.ui.ButtonBar;
 
 <<<<<<< HEAD
+<<<<<<< HEAD
 >>>>>>> Change to new mvp framework - first step
 =======
 >>>>>>> Change to new mvp framework - first step
+=======
+import com.google.gwt.cell.client.CheckboxCell;
+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.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
 import com.google.gwt.event.dom.client.ChangeEvent;
 import com.google.gwt.event.dom.client.ChangeHandler;
 import com.google.gwt.event.dom.client.HasChangeHandlers;
@@ -779,6 +793,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;
@@ -788,6 +803,12 @@ import com.google.gwt.user.client.ui.Anc
 =======
 >>>>>>> Change to new mvp framework - first step
 =======
+=======
+import com.google.gwt.resources.client.ImageResource;
+import com.google.gwt.user.cellview.client.Column;
+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.client.ui.Anchor;
 >>>>>>> 
 import com.google.gwt.user.client.ui.Composite;
@@ -801,7 +822,10 @@ 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.inject.Inject;
+import com.google.web.bindery.requestfactory.shared.Receiver;
+import com.google.web.bindery.requestfactory.shared.ServerFailure;
 
 @SuppressWarnings("deprecation")
 <<<<<<< HEAD
@@ -1571,20 +1595,27 @@ public class IMAPMessageListView extends
        private Button searchButton;
        private Loading loading;
 
-//     private MessagesCellTable table;
-//     private AbstractPager pager;
-
+       private MessagesCellTable table;
+       private SimplePager pager;
+       
+       private ImapFolder folder;
+       @Override
+       public void setImapFolder(ImapFolder folder){
+               this.folder = folder;
+       }
 
        @Inject
        public IMAPMessageListView(final PagingScrollTableRowDragController 
controller,
                final MessageTableModel mTableModel, final HupaConstants 
constants, final HupaMessages messages,
-               final HupaImageBundle imageBundle,final EventBus eventBus, 
final HupaRequestFactory requestFactory) {
+               final HupaImageBundle imageBundle, final EventBus eventBus, 
final HupaRequestFactory requestFactory,
+               final MessagesCellTable table) {
                this.messages = messages;
                this.imageBundle = imageBundle;
 
-//             table = new MessagesCellTable(eventBus, requestFactory, 
imageBundle);
-//             pager = new SimplePager();
-//             pager.setDisplay(table);
+               // table = new MessagesCellTable(eventBus, requestFactory, 
imageBundle);
+               this.table = table;
+               pager = new SimplePager();
+               pager.setDisplay(table);
 
                deleteMailButton = new 
EnableButton(constants.deleteMailButton());
                newMailButton = new Button(constants.newMailButton());
@@ -1696,17 +1727,147 @@ public class IMAPMessageListView extends
                commandsBar.addLeft(allLink);
                commandsBar.addLeft(noneLink);
                commandsBar.add(loading);
-               commandsBar.addRight(pagingBar);
+               // commandsBar.addRight(pagingBar);
+
+               commandsBar.addRight(pager);
 
-                msgListContainer.add(commandsBar);
-                msgListContainer.add(mailTable);
-//              msgListContainer.add(table);
+               msgListContainer.add(commandsBar);
+               // 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=1522176&r1=1522175&r2=1522176&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:16 2013
@@ -502,23 +502,21 @@ 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.AbstractPager;
+import com.google.gwt.user.cellview.client.CellTable;
 import com.google.gwt.user.cellview.client.Column;
-import com.google.gwt.user.cellview.client.DataGrid;
+import 
com.google.gwt.user.cellview.client.HasKeyboardSelectionPolicy.KeyboardSelectionPolicy;
 import com.google.gwt.user.cellview.client.SimplePager;
 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 MessagesCellTable extends DataGrid<Message> {
+public class MessagesCellTable extends CellTable<Message> {
 
-       private static final int PAGE_SIZE = 5;
+       private static final int PAGE_SIZE = 25;
        
        private User user;
        private ImapFolder folder;
@@ -533,7 +531,7 @@ public class MessagesCellTable extends D
        public SimplePager getPager(){
                return pager;
        }
-//     @Inject
+       @Inject
        public MessagesCellTable(final EventBus eventBus, final 
HupaRequestFactory requestFactory,
                final HupaImageBundle imageBundle) {
 
@@ -542,16 +540,16 @@ public class MessagesCellTable extends D
                this.requestFactory = requestFactory;
                this.imageBundle = imageBundle;
 
-//             addColumn(new CheckboxColumn());
-               addColumn(new FromColumn(), "from");
-               addColumn(new SubjectColumn(), "subject");
-//             addColumn(new AttachmentColumn());
-//             addColumn(new DateColumn());
+               addColumn(new CheckboxColumn());
+               addColumn(new FromColumn());
+               addColumn(new SubjectColumn());
+               addColumn(new AttachmentColumn());
+               addColumn(new DateColumn());
 
                pager = new SimplePager();
                pager.setDisplay(this);
                setKeyboardSelectionPolicy(KeyboardSelectionPolicy.DISABLED);
-//             setVisible(true);
+               setVisible(true);
                addRangeChangeHandler(new RangeChangeEvent.Handler() {
                        @Override
                        public void onRangeChange(RangeChangeEvent event) {
@@ -577,7 +575,7 @@ public class MessagesCellTable extends D
                                user = loadMessagesEvent.getUser();
                                folder = loadMessagesEvent.getFolder();
                                searchValue = 
loadMessagesEvent.getSearchValue();
-                               fetch(0);
+//                             fetch(0);
                        }
                });
                eventBus.addHandler(FolderSelectionEvent.TYPE, new 
FolderSelectionEventHandler() {
@@ -594,7 +592,7 @@ public class MessagesCellTable extends D
                                user = event.getUser();
                                folder = new 
ImapFolderImpl(user.getSettings().getInboxFolderName());
                                searchValue = null;
-                               fetch(0);
+//                             fetch(0);
                        }
                });
                eventBus.addHandler(LogoutEvent.TYPE, new LogoutEventHandler() {
@@ -640,7 +638,7 @@ public class MessagesCellTable extends D
                                
MessagesCellTable.this.folder.setMessageCount(result.getRealCount());
                                
MessagesCellTable.this.folder.setUnseenMessageCount(result.getRealUnreadCount());
                                setRowCount(result.getRealCount());
-                               if (result != null && result.getMessages() != 
null) {
+                               if (result.getMessages() != null) {
                                        setRowData(start + getPageSize(), 
result.getMessages());
                                } else {
                                        setRowData(start + getPageSize(), 
result.getMessages());
@@ -650,7 +648,7 @@ public class MessagesCellTable extends D
                    if (start == 0 || !isRowCountExact()) {
                     setRowCount(start + result.getMessages().size(), 
result.getMessages().size() < getPageSize());
                    }
-                               flush();
+//                             flush();
                                // Notify presenter to update folder tree view
                                eventBus.fireEvent(new 
MessagesReceivedEvent(folder, 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