Author: dongxu
Date: Thu Sep 12 03:13:55 2013
New Revision: 1522175

URL: http://svn.apache.org/r1522175
Log:
fix some bugs related to RF, and try to use new CellView to replace 
gwt-incubator

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/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/rf/FetchMessagesRequest.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/MessageTableModel.java
    
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessagesCellTable.java
    
james/hupa/trunk/server/src/main/java/org/apache/hupa/server/service/FetchMessagesService.java
    
james/hupa/trunk/server/src/main/java/org/apache/hupa/server/service/FetchMessagesServiceImpl.java
    
james/hupa/trunk/server/src/main/java/org/apache/hupa/server/service/ImapFolderServiceImpl.java

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=1522175&r1=1522174&r2=1522175&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:13:55 2013
@@ -67,6 +67,8 @@ import org.apache.hupa.client.place.Mail
 import org.apache.hupa.client.rf.HupaRequestFactory;
 import org.apache.hupa.client.rf.LoginUserRequest;
 import org.apache.hupa.client.ui.WidgetDisplayable;
+import org.apache.hupa.shared.data.ImapFolderImpl;
+import org.apache.hupa.shared.domain.ImapFolder;
 import org.apache.hupa.shared.domain.User;
 import org.apache.hupa.shared.events.FlashEvent;
 import org.apache.hupa.shared.events.LoginEvent;
@@ -426,7 +428,7 @@ public class LoginActivity extends Abstr
                loginRequest.login(user, pass).fire(new Receiver<User>() {
                        @Override
                        public void onSuccess(User response) {
-                               placeController.goTo(new 
MailFolderPlace().with(response));
+                               placeController.goTo(new 
MailFolderPlace().with(response, useDefaultInboxFolder(response), null));
                 eventBus.fireEvent(new LoginEvent(response));
                        }
                        @Override
@@ -437,6 +439,10 @@ public class LoginActivity extends Abstr
 
 >>>>>>> Make chechsession and login work with RF, with refactoring fetch 
 >>>>>>> folders.
        }
+       
+       private ImapFolder useDefaultInboxFolder(User user){
+               return new 
ImapFolderImpl(user.getSettings().getInboxFolderName());
+       }
 
        /**
         * Reset display

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=1522175&r1=1522174&r2=1522175&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:13:55 2013
@@ -917,8 +917,16 @@ System.out.println("1111111"+response);
                                }
                                GetMessageDetailsRequest req = 
messagesRequest.append(requestFactory.messageDetailsRequest());
                                GetMessageDetailsAction action = 
req.create(GetMessageDetailsAction.class);
+                               final ImapFolder folder = 
req.create(ImapFolder.class);
+                               
folder.setChildren(event.getFolder().getChildren());
+                               
folder.setDelimiter(event.getFolder().getDelimiter());
+                               
folder.setFullName(event.getFolder().getFullName());
+                               
folder.setMessageCount(event.getFolder().getMessageCount());
+                               folder.setName(event.getFolder().getName());
+                               
folder.setSubscribed(event.getFolder().getSubscribed());
+                               
folder.setUnseenMessageCount(event.getFolder().getUnseenMessageCount());
                                // ImapFolder imapFolder = 
req.edit(event.getFolder());
-                               action.setFolder(event.getFolder());
+                               action.setFolder(folder);
                                action.setUid(message.getUid());
                                req.get(action).fire(new 
Receiver<GetMessageDetailsResult>() {
 

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=1522175&r1=1522174&r2=1522175&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:13:55 2013
@@ -168,6 +168,7 @@ import org.apache.hupa.client.ui.IMAPMes
 import org.apache.hupa.client.ui.LoginView;
 import org.apache.hupa.client.ui.MessageSendView;
 import org.apache.hupa.client.ui.MessageTableModel;
+import org.apache.hupa.client.ui.MessagesCellTable;
 import org.apache.hupa.client.ui.TopView;
 import org.apache.hupa.client.ui.WestView;
 
@@ -415,6 +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);
                // Places
                
bind(PlaceHistoryMapper.class).to(AppPlaceHistoryMapper.class).in(Singleton.class);
 

Modified: 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/rf/FetchMessagesRequest.java
URL: 
http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/rf/FetchMessagesRequest.java?rev=1522175&r1=1522174&r2=1522175&view=diff
==============================================================================
--- 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/rf/FetchMessagesRequest.java
 (original)
+++ 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/rf/FetchMessagesRequest.java
 Thu Sep 12 03:13:55 2013
@@ -26,6 +26,7 @@ import org.apache.hupa.server.ioc.IocRfS
 import org.apache.hupa.server.service.FetchMessagesService;
 import org.apache.hupa.shared.domain.FetchMessagesAction;
 import org.apache.hupa.shared.domain.FetchMessagesResult;
+import org.apache.hupa.shared.domain.ImapFolder;
 
 import com.google.web.bindery.requestfactory.shared.Request;
 import com.google.web.bindery.requestfactory.shared.RequestContext;

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=1522175&r1=1522174&r2=1522175&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:13:55 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.HupaRequestFactory;
 import org.apache.hupa.client.widgets.CommandsBar;
 import org.apache.hupa.client.widgets.ConfirmDialogBox;
 import org.apache.hupa.client.widgets.DragRefetchPagingScrollTable;
@@ -102,6 +103,7 @@ import com.google.gwt.event.dom.client.K
 import com.google.gwt.event.dom.client.KeyUpHandler;
 <<<<<<< HEAD
 <<<<<<< HEAD
+<<<<<<< HEAD
 import com.google.gwt.event.shared.EventBus;
 import com.google.gwt.user.cellview.client.SimplePager;
 import com.google.gwt.user.cellview.client.SimplePager.TextLocation;
@@ -748,6 +750,9 @@ public class IMAPMessageListView extends
 =======
 =======
 >>>>>>> Change to new mvp framework - first step
+=======
+import com.google.gwt.event.shared.EventBus;
+>>>>>>> fix some bugs related to RF, and try to use new CellView to replace 
gwt-incubator 
 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;
@@ -773,6 +778,12 @@ import com.google.gwt.gen2.table.event.c
 import com.google.gwt.i18n.client.DateTimeFormat;
 <<<<<<< HEAD
 <<<<<<< HEAD
+<<<<<<< HEAD
+=======
+import com.google.gwt.user.cellview.client.AbstractPager;
+import com.google.gwt.user.cellview.client.DataGrid;
+import com.google.gwt.user.cellview.client.SimplePager;
+>>>>>>> fix some bugs related to RF, and try to use new CellView to replace 
gwt-incubator 
 import com.google.gwt.user.client.ui.Anchor;
 =======
 >>>>>>> Change to new mvp framework - first step
@@ -792,8 +803,8 @@ import com.google.gwt.user.client.ui.Ver
 import com.google.gwt.user.client.ui.Widget;
 import com.google.inject.Inject;
 
-
 @SuppressWarnings("deprecation")
+<<<<<<< HEAD
 public class IMAPMessageListView extends Composite implements 
IMAPMessageListActivity.Displayable{
 
     private static final int DEFAULT_MSG_PAGE_SIZE = 25;
@@ -1530,4 +1541,793 @@ public class IMAPMessageListView extends
 >>>>>>> Change to new mvp framework - first step
 =======
 >>>>>>> Change to new mvp framework - first step
+=======
+public class IMAPMessageListView extends Composite implements 
IMAPMessageListActivity.Displayable {
+
+       private static final int DEFAULT_MSG_PAGE_SIZE = 25;
+
+       @SuppressWarnings("unused") private HupaMessages messages;
+       private HupaImageBundle imageBundle;
+
+       private PagingOptions pagingBar;
+       private DragRefetchPagingScrollTable<Message> mailTable;
+       private CachedTableModel<Message> cTableModel;
+
+       private FixedWidthGrid dataTable = createDataTable();
+       private EnableButton deleteMailButton;
+       private Button newMailButton;
+       private Button deleteAllMailButton;
+       private ConfirmDialogBox confirmBox = new ConfirmDialogBox();
+       private ConfirmDialogBox confirmDeleteAllBox = new ConfirmDialogBox();
+       private EnableButton markSeenButton;
+       private EnableButton markUnSeenButton;
+
+       private ListBox pageBox = new ListBox();
+       private Anchor allLink;
+       private Anchor noneLink;
+       private Anchor refreshLink;
+       private MultiWordSuggestOracle oracle = new MultiWordSuggestOracle(" 
,@");
+       private SuggestBox searchBox = new SuggestBox(oracle);
+       private Button searchButton;
+       private Loading loading;
+
+//     private MessagesCellTable table;
+//     private AbstractPager pager;
+
+
+       @Inject
+       public IMAPMessageListView(final PagingScrollTableRowDragController 
controller,
+               final MessageTableModel mTableModel, final HupaConstants 
constants, final HupaMessages messages,
+               final HupaImageBundle imageBundle,final EventBus eventBus, 
final HupaRequestFactory requestFactory) {
+               this.messages = messages;
+               this.imageBundle = imageBundle;
+
+//             table = new MessagesCellTable(eventBus, requestFactory, 
imageBundle);
+//             pager = new SimplePager();
+//             pager.setDisplay(table);
+
+               deleteMailButton = new 
EnableButton(constants.deleteMailButton());
+               newMailButton = new Button(constants.newMailButton());
+               deleteAllMailButton = new Button(constants.deleteAll());
+               markSeenButton = new EnableButton(constants.markSeen());
+               markUnSeenButton = new EnableButton(constants.markUnseen());
+               allLink = new Anchor(constants.all());
+               noneLink = new Anchor(constants.none());
+               refreshLink = new Anchor(constants.refresh());
+               searchButton = new Button(constants.searchButton());
+               loading = new Loading(constants.loading());
+               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());
+                       }
+               });
+
+               VerticalPanel msgListContainer = new VerticalPanel();
+               msgListContainer.addStyleName(HupaCSS.C_msg_list_container);
+               mailTable = new 
DragRefetchPagingScrollTable<Message>(cTableModel, dataTable, new 
FixedWidthFlexTable(),
+                       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());
+               emptyTable.addStyleName(HupaCSS.C_msg_table_empty);
+               mailTable.setEmptyTableWidget(emptyTable);
+               FixedWidthGridBulkRenderer<Message> bulkRenderer = new 
FixedWidthGridBulkRenderer<Message>(
+                       mailTable.getDataTable(), mailTable);
+               mailTable.setBulkRenderer(bulkRenderer);
+               mailTable.addStyleName(HupaCSS.C_msg_table);
+               mailTable.setCellPadding(0);
+               mailTable.setResizePolicy(ResizePolicy.FILL_WIDTH);
+               mailTable.setColumnResizePolicy(ColumnResizePolicy.MULTI_CELL);
+               mailTable.setScrollPolicy(ScrollPolicy.DISABLED);
+               mailTable.addPageLoadHandler(onMessagePageLoadHandler);
+               mailTable.setPageSize(DEFAULT_MSG_PAGE_SIZE);
+               mailTable.getDataTable().setCellSpacing(0);
+               mailTable.setSortPolicy(SortPolicy.DISABLED);
+
+               mailTable.fillWidth();
+
+               pagingBar = new PagingOptions(mailTable, constants, loading);
+
+               HorizontalPanel buttonBar = new HorizontalPanel();
+               buttonBar.addStyleName(HupaCSS.C_buttons);
+
+               ButtonBar navigatorBar = new ButtonBar();
+               navigatorBar.add(newMailButton);
+               deleteMailButton.setEnabled(false);
+               navigatorBar.add(deleteMailButton);
+               buttonBar.add(navigatorBar);
+               buttonBar.add(deleteAllMailButton);
+
+               ButtonBar markButtonBar = new ButtonBar();
+               markButtonBar.add(markSeenButton);
+               markButtonBar.add(markUnSeenButton);
+               buttonBar.add(markButtonBar);
+               buttonBar.add(refreshLink);
+               pageBox.addItem("" + DEFAULT_MSG_PAGE_SIZE);
+               pageBox.addItem("" + (DEFAULT_MSG_PAGE_SIZE * 2));
+               pageBox.addItem("" + (DEFAULT_MSG_PAGE_SIZE * 4));
+               pageBox.addChangeHandler(new ChangeHandler() {
+                       public void onChange(ChangeEvent event) {
+                               if (pageBox.getSelectedIndex() > 0)
+                                       
mailTable.setPageSize(Integer.parseInt(pageBox.getItemText(pageBox.getSelectedIndex())));
+                       }
+               });
+
+               HorizontalPanel searchPanel = new HorizontalPanel();
+               searchPanel.addStyleName(HupaCSS.C_buttons);
+
+               searchBox.addStyleName(HupaCSS.C_msg_search);
+               searchBox.setAnimationEnabled(true);
+               searchBox.setAutoSelectEnabled(false);
+               searchBox.setLimit(20);
+               searchBox.addKeyUpHandler(new KeyUpHandler() {
+
+                       public void onKeyUp(KeyUpEvent event) {
+                               if (event.getNativeKeyCode() == 
KeyCodes.KEY_ENTER) {
+                                       searchButton.click();
+                               }
+                       }
+
+               });
+               searchPanel.add(searchBox);
+               searchPanel.add(searchButton);
+               searchPanel.add(pageBox);
+
+               HorizontalPanel hPanel = new HorizontalPanel();
+               hPanel.addStyleName(HupaCSS.C_msg_top_bar);
+               hPanel.add(buttonBar);
+               hPanel.add(searchPanel);
+               hPanel.setCellHorizontalAlignment(searchPanel, 
HorizontalPanel.ALIGN_RIGHT);
+
+               msgListContainer.add(hPanel);
+
+               CommandsBar commandsBar = new CommandsBar();
+               commandsBar.addLeft(new HTML(constants.select() + ":"));
+               commandsBar.addLeft(allLink);
+               commandsBar.addLeft(noneLink);
+               commandsBar.add(loading);
+               commandsBar.addRight(pagingBar);
+
+                msgListContainer.add(commandsBar);
+                msgListContainer.add(mailTable);
+//              msgListContainer.add(table);
+
+               confirmBox.setText(messages.confirmDeleteMessages());
+               
confirmDeleteAllBox.setText(messages.confirmDeleteAllMessages());
+               initWidget(msgListContainer);
+       }
+
+       PageLoadHandler onMessagePageLoadHandler = new PageLoadHandler() {
+
+               public void onPageLoad(PageLoadEvent event) {
+
+                       for (int i = 0; i < 
mailTable.getDataTable().getRowCount(); i++) {
+                               
mailTable.getDataTable().getRowFormatter().setStyleName(i, 
HupaCSS.C_msg_table_row);
+                               Message msg = mailTable.getRowValue(i);
+                               if (msg != null) {
+                                       if 
(msg.getFlags().contains(IMAPFlag.SEEN) == false) {
+                                               
mailTable.getDataTable().getRowFormatter().addStyleName(i, 
HupaCSS.C_msg_table_unseen);
+                                       } else {
+                                               
mailTable.getDataTable().getRowFormatter().removeStyleName(i, 
HupaCSS.C_msg_table_seen);
+                                       }
+                               }
+                       }
+
+                       String nrows = String.valueOf(mailTable.getPageSize());
+                       for (int i = 0; i < pageBox.getItemCount(); i++) {
+                               if (nrows.equals(pageBox.getItemText(i)))
+                                       pageBox.setSelectedIndex(i);
+                       }
+               }
+
+       };
+
+       private DefaultTableDefinition<Message> createTableDefinitation() {
+               DefaultTableDefinition<Message> def = new 
DefaultTableDefinition<Message>(createColumnDefinitionList());
+
+               return def;
+       }
+
+       /**
+        * @return the newly created data table.
+        */
+       private FixedWidthGrid createDataTable() {
+               FixedWidthGrid dataTable = new FixedWidthGrid();
+               dataTable.setSelectionPolicy(SelectionPolicy.CHECKBOX);
+               return dataTable;
+       }
+
+       /**
+        * Create a new List which holds all needed ColumnDefinitions
+        * 
+        */
+       private List<ColumnDefinition<Message, ?>> createColumnDefinitionList() 
{
+               List<ColumnDefinition<Message, ?>> cList = new 
ArrayList<ColumnDefinition<Message, ?>>();
+
+               FromColumnDefination from = new FromColumnDefination();
+               from.setCellRenderer(new WhiteSpaceCellRenderer<Message>());
+               from.setColumnTruncatable(true);
+               from.setPreferredColumnWidth(250);
+               from.setMinimumColumnWidth(150);
+               from.setMaximumColumnWidth(300);
+               cList.add(from);
+
+               SubjectColumnDefination subject = new SubjectColumnDefination();
+               subject.setCellRenderer(new WhiteSpaceCellRenderer<Message>());
+               subject.setColumnTruncatable(true);
+               subject.setPreferredColumnWidth(800);
+               subject.setMinimumColumnWidth(200);
+               cList.add(subject);
+
+               AttachmentColumnDefination attachment = new 
AttachmentColumnDefination();
+               attachment.setColumnTruncatable(false);
+               // display an image if the message contains an attachment
+               attachment.setCellRenderer(new CellRenderer<Message, Boolean>() 
{
+
+                       public void renderRowValue(Message rowValue, 
ColumnDefinition<Message, Boolean> columnDef,
+                               AbstractCellView<Message> view) {
+                               if (columnDef.getCellValue(rowValue)) {
+                                       view.setWidget(new 
Image(imageBundle.attachmentIcon()));
+                               } else {
+                                       view.setHTML("&nbsp");
+                               }
+
+                       }
+
+               });
+
+               attachment.setPreferredColumnWidth(20);
+               attachment.setMinimumColumnWidth(15);
+               attachment.setMaximumColumnWidth(25);
+               cList.add(attachment);
+
+               DateColumnDefination date = new DateColumnDefination();
+               date.setColumnTruncatable(true);
+               // set a special renderer for the date
+               date.setCellRenderer(new CellRenderer<Message, Date>() {
+
+                       public void renderRowValue(Message rowValue, 
ColumnDefinition<Message, Date> columnDef,
+                               AbstractCellView<Message> view) {
+                               DateTimeFormat dtformat;
+                               Date rDate = rowValue.getReceivedDate();
+                               int rYear = rDate.getYear();
+                               int rMonth = rDate.getMonth();
+                               int rDay = rDate.getDate();
+
+                               Date now = new Date();
+                               int nowYear = now.getYear();
+                               int nowMonth = now.getMonth();
+                               int nowDay = now.getDate();
+
+                               if (rYear < nowYear) {
+                                       dtformat = 
DateTimeFormat.getFormat("dd.MMM.yyyy");
+                               } else if (rMonth < nowMonth || (rMonth == 
nowMonth && rDay < nowDay)) {
+                                       dtformat = 
DateTimeFormat.getFormat("dd.MMM.");
+                               } else if (rDay == nowDay) {
+                                       dtformat = 
DateTimeFormat.getFormat("HH:mm");
+                               } else {
+
+                                       dtformat = 
DateTimeFormat.getFormat("dd.MMM.yyyy HH:mm");
+                               }
+
+                               view.setHTML(dtformat.format(rDate));
+                               
view.setHorizontalAlignment(HorizontalPanel.ALIGN_RIGHT);
+                       }
+
+               });
+               date.setPreferredColumnWidth(100);
+               date.setMinimumColumnWidth(100);
+               date.setMaximumColumnWidth(150);
+
+               cList.add(date);
+
+               return cList;
+       }
+
+       /**
+        * ColumnDefination which display if the message contains an attachment
+        * 
+        * @author Norman
+        * 
+        */
+       private static final class AttachmentColumnDefination extends 
AbstractColumnDefinition<Message, Boolean> {
+
+               @Override
+               public Boolean getCellValue(Message rowValue) {
+                       return rowValue.hasAttachment();
+               }
+
+               @Override
+               public void setCellValue(Message rowValue, Boolean cellValue) {
+               }
+
+       }
+
+       /**
+        * ColumnDefination which display the From
+        * 
+        */
+       private static final class FromColumnDefination extends 
AbstractColumnDefinition<Message, String> {
+
+               @Override
+               public String getCellValue(Message rowValue) {
+                       return rowValue.getFrom();
+               }
+
+               @Override
+               public void setCellValue(Message rowValue, String cellValue) {
+                       rowValue.setFrom(cellValue);
+               }
+
+       }
+
+       /**
+        * ColumnDefination which display the Subject
+        * 
+        */
+       private static final class SubjectColumnDefination extends 
AbstractColumnDefinition<Message, String> {
+
+               @Override
+               public String getCellValue(Message rowValue) {
+                       return rowValue.getSubject();
+               }
+
+               @Override
+               public void setCellValue(Message rowValue, String cellValue) {
+                       rowValue.setSubject(cellValue);
+
+               }
+
+       }
+
+       /**
+        * ColumnDefination which display the Date
+        * 
+        */
+       private static final class DateColumnDefination extends 
AbstractColumnDefinition<Message, Date> {
+
+               @Override
+               public Date getCellValue(Message rowValue) {
+                       return rowValue.getReceivedDate();
+               }
+
+               @Override
+               public void setCellValue(Message rowValue, Date cellValue) {
+                       rowValue.setReceivedDate(cellValue);
+               }
+
+       }
+
+       /*
+        * (non-Javadoc)
+        * 
+        * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#
+        * getDataTableSelection()
+        */
+       public HasRowSelectionHandlers getDataTableSelection() {
+               return mailTable.getDataTable();
+       }
+
+       public void reloadData() {
+               mailTable.reloadPage();
+       }
+
+       /*
+        * (non-Javadoc)
+        * 
+        * @see 
org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#reset()
+        */
+       public void reset() {
+               pageBox.setSelectedIndex(0);
+               cTableModel.clearCache();
+               cTableModel.setRowCount(CachedTableModel.UNKNOWN_ROW_COUNT);
+               mailTable.gotoPage(0, false);
+       }
+
+       /*
+        * (non-Javadoc)
+        * 
+        * @see
+        * 
org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getDataTableLoad
+        * ()
+        */
+       public HasPageLoadHandlers getDataTableLoad() {
+               return mailTable;
+       }
+
+       /*
+        * (non-Javadoc)
+        * 
+        * @see 
net.customware.gwt.presenter.client.widget.WidgetDisplay#asWidget()
+        */
+       public Widget asWidget() {
+               return this;
+       }
+
+       /*
+        * (non-Javadoc)
+        * 
+        * @see
+        * 
org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getDeleteClick
+        * ()
+        */
+       public HasClickHandlers getDeleteClick() {
+               return deleteMailButton;
+       }
+
+       /*
+        * (non-Javadoc)
+        * 
+        * @see
+        * 
org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getNewClick()
+        */
+       public HasClickHandlers getNewClick() {
+               return newMailButton;
+       }
+
+       /**
+        * Renderer which fill empty rows with a whitespace
+        * 
+        * @param <E> RowType
+        */
+       private static final class WhiteSpaceCellRenderer<E> implements 
CellRenderer<E, String> {
+
+               /*
+                * (non-Javadoc)
+                * 
+                * @see
+                * 
com.google.gwt.gen2.table.client.CellRenderer#renderRowValue(java
+                * .lang.Object, 
com.google.gwt.gen2.table.client.ColumnDefinition,
+                * 
com.google.gwt.gen2.table.client.TableDefinition.AbstractCellView)
+                */
+               public void renderRowValue(E rowValue, ColumnDefinition<E, 
String> columnDef, AbstractCellView<E> view) {
+                       String cellValue = columnDef.getCellValue(rowValue);
+                       if (cellValue == null || cellValue.length() < 1) {
+                               view.setHTML("&nbsp");
+                       } else {
+                               view.setHTML(cellValue);
+                       }
+               }
+
+       }
+
+       /*
+        * (non-Javadoc)
+        * 
+        * @see
+        * 
org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getData(int)
+        */
+       public Message getData(int rowIndex) {
+               return mailTable.getRowValue(rowIndex);
+       }
+
+       /*
+        * (non-Javadoc)
+        * 
+        * @see
+        * 
org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getConfirmDialog
+        * ()
+        */
+       public HasDialog getConfirmDeleteDialog() {
+               return confirmBox;
+       }
+
+       /*
+        * (non-Javadoc)
+        * 
+        * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#
+        * getConfirmDeleteDialogClick()
+        */
+       public HasClickHandlers getConfirmDeleteDialogClick() {
+               return confirmBox;
+       }
+
+       /*
+        * (non-Javadoc)
+        * 
+        * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#
+        * getConfirmDeleteAllDialog()
+        */
+       public HasDialog getConfirmDeleteAllDialog() {
+               return confirmDeleteAllBox;
+       }
+
+       /*
+        * (non-Javadoc)
+        * 
+        * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#
+        * getConfirmDeleteAllDialogClick()
+        */
+       public HasClickHandlers getConfirmDeleteAllDialogClick() {
+               return confirmDeleteAllBox;
+       }
+
+       /*
+        * (non-Javadoc)
+        * 
+        * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#
+        * deselectAllMessages()
+        */
+       public void deselectAllMessages() {
+               mailTable.getDataTable().deselectAllRows();
+       }
+
+       /*
+        * (non-Javadoc)
+        * 
+        * @see
+        * 
org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getSelectAllClick
+        * ()
+        */
+       public HasClickHandlers getSelectAllClick() {
+               return allLink;
+       }
+
+       /*
+        * (non-Javadoc)
+        * 
+        * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#
+        * getSelectNoneClick()
+        */
+       public HasClickHandlers getSelectNoneClick() {
+               return noneLink;
+       }
+
+       /*
+        * (non-Javadoc)
+        * 
+        * @see
+        * 
org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#selectAllMessages
+        * ()
+        */
+       public void selectAllMessages() {
+               mailTable.getDataTable().selectAllRows();
+       }
+
+       /*
+        * (non-Javadoc)
+        * 
+        * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#
+        * getSelectedMessages()
+        */
+       public List<Message> getSelectedMessages() {
+               return mailTable.getSelectedRows();
+       }
+
+       /*
+        * (non-Javadoc)
+        * 
+        * @see
+        * 
org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#removeMessages
+        * (java.util.ArrayList)
+        */
+       public void removeMessages(List<Message> messages) {
+               mailTable.removeRows(messages);
+       }
+
+       /*
+        * (non-Javadoc)
+        * 
+        * @see
+        * 
org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#addTableListener
+        * (com.google.gwt.user.client.ui.TableListener)
+        */
+       public void addTableListener(TableListener listener) {
+               dataTable.addTableListener(listener);
+       }
+
+       /*
+        * (non-Javadoc)
+        * 
+        * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#
+        * removeTableListener(com.google.gwt.user.client.ui.TableListener)
+        */
+       public void removeTableListener(TableListener listener) {
+               dataTable.removeTableListener(listener);
+       }
+
+       /*
+        * (non-Javadoc)
+        * 
+        * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#
+        * setPostFetchMessageCount(int)
+        */
+       public void setPostFetchMessageCount(int count) {
+               cTableModel.setPostCachedRowCount(count);
+       }
+
+       /*
+        * (non-Javadoc)
+        * 
+        * @see 
org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#redraw()
+        */
+       public void redraw() {
+               mailTable.reloadPage();
+       }
+
+       /*
+        * (non-Javadoc)
+        * 
+        * @see
+        * 
org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getDeleteAllClick
+        * ()
+        */
+       public HasClickHandlers getDeleteAllClick() {
+               return deleteAllMailButton;
+       }
+
+       /*
+        * (non-Javadoc)
+        * 
+        * @see
+        * 
org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getMarkSeenClick
+        * ()
+        */
+       public HasClickHandlers getMarkSeenClick() {
+               return markSeenButton;
+       }
+
+       /*
+        * (non-Javadoc)
+        * 
+        * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#
+        * getMarkUnseenClick()
+        */
+       public HasClickHandlers getMarkUnseenClick() {
+               return markUnSeenButton;
+       }
+
+       /*
+        * (non-Javadoc)
+        * 
+        * @see
+        * 
org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getDeleteEnable
+        * ()
+        */
+       public HasEnable getDeleteEnable() {
+               return deleteMailButton;
+       }
+
+       /*
+        * (non-Javadoc)
+        * 
+        * @see
+        * 
org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getMarkSeenEnable
+        * ()
+        */
+       public HasEnable getMarkSeenEnable() {
+               return markSeenButton;
+       }
+
+       /*
+        * (non-Javadoc)
+        * 
+        * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#
+        * getMarkUnseenEnable()
+        */
+       public HasEnable getMarkUnseenEnable() {
+               return markUnSeenButton;
+       }
+
+       /*
+        * (non-Javadoc)
+        * 
+        * @see
+        * 
org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getRefreshClick
+        * ()
+        */
+       public HasClickHandlers getRefreshClick() {
+               return refreshLink;
+       }
+
+       /*
+        * (non-Javadoc)
+        * 
+        * @see
+        * 
org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#goToPage(int)
+        */
+       public void goToPage(int page) {
+               if (page != mailTable.getCurrentPage()) {
+                       mailTable.gotoPage(page, false);
+               }
+       }
+
+       /*
+        * (non-Javadoc)
+        * 
+        * @see
+        * 
org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getCurrentPage
+        * ()
+        */
+       public int getCurrentPage() {
+               return mailTable.getCurrentPage();
+       }
+
+       /*
+        * (non-Javadoc)
+        * 
+        * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#
+        * getDataTablePageChange()
+        */
+       public HasPageChangeHandlers getDataTablePageChange() {
+               return mailTable;
+       }
+
+       /*
+        * (non-Javadoc)
+        * 
+        * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#
+        * getRowsPerPageIndex()
+        */
+       public int getRowsPerPageIndex() {
+               return pageBox.getSelectedIndex();
+       }
+
+       /*
+        * (non-Javadoc)
+        * 
+        * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#
+        * getRowsPerPageChange()
+        */
+       public HasChangeHandlers getRowsPerPageChange() {
+               return pageBox;
+       }
+
+       /*
+        * (non-Javadoc)
+        * 
+        * @see 
org.apache.hupa.client.mvp.MainPresenter.Display#getSearchClick()
+        */
+       public HasClickHandlers getSearchClick() {
+               return searchButton;
+       }
+
+       /*
+        * (non-Javadoc)
+        * 
+        * @see 
org.apache.hupa.client.mvp.MainPresenter.Display#getSearchValue()
+        */
+       public HasValue<String> getSearchValue() {
+               return searchBox;
+       }
+
+       /*
+        * (non-Javadoc)
+        * 
+        * @see
+        * 
org.apache.hupa.client.mvp.MainPresenter.Display#fillSearchOracle(java
+        * .util.ArrayList)
+        */
+       public void fillSearchOracle(List<Message> messages) {
+               for (Message m : messages) {
+                       String subject = m.getSubject();
+                       String from = m.getFrom();
+                       if (subject != null && subject.trim().length() > 0) {
+                               oracle.add(subject.trim());
+                       }
+                       if (from != null && from.trim().length() > 0) {
+                               oracle.add(from.trim());
+                       }
+               }
+               // searchBox.setText("");
+       }
+
+       public void setExpandLoading(boolean expanding) {
+               if (expanding) {
+                       loading.show();
+               } else {
+                       loading.hide();
+               }
+       }
+>>>>>>> fix some bugs related to RF, and try to use new CellView to replace 
gwt-incubator 
 }

Modified: 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessageTableModel.java
URL: 
http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessageTableModel.java?rev=1522175&r1=1522174&r2=1522175&view=diff
==============================================================================
--- 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessageTableModel.java
 (original)
+++ 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessageTableModel.java
 Thu Sep 12 03:13:55 2013
@@ -280,15 +280,22 @@ public class MessageTableModel extends M
                                public Iterator<Message> getRowValues() {
                                        return new 
ArrayList<Message>().iterator();
                                }
-
                        });
                        return;
                }
                FetchMessagesRequest messagesRequest = 
requestFactory.messagesRequest();
                final FetchMessagesAction action = 
messagesRequest.create(FetchMessagesAction.class);
+               final ImapFolder folder1 = 
messagesRequest.create(ImapFolder.class);
                // FIXME cannot put setFolder to the first place
+               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());
                action.setOffset(request.getNumRows());
-               action.setFolder(folder);
+               action.setFolder(folder1);
                action.setSearchString(searchValue);
                action.setStart(request.getStartRow());
                messagesRequest.fetch(action).fire(new 
Receiver<FetchMessagesResult>() {
@@ -302,7 +309,6 @@ public class MessageTableModel extends M
                        @Override
                        public void onSuccess(final FetchMessagesResult result) 
{
                                assert result != null;
-                               System.out.println(result.getOffset());
                                folder.setMessageCount(result.getRealCount());
                                
folder.setUnseenMessageCount(result.getRealUnreadCount());
                                setRowCount(result.getRealCount());

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=1522175&r1=1522174&r2=1522175&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:13:55 2013
@@ -1,3 +1,4 @@
+<<<<<<< HEAD
 /****************************************************************
  * Licensed to the Apache Software Foundation (ASF) under one   *
  * or more contributor license agreements.  See the NOTICE file *
@@ -473,3 +474,237 @@ public class MessagesCellTable extends D
        }
 
 }
+=======
+package org.apache.hupa.client.ui;
+
+import java.util.Date;
+
+import org.apache.hupa.client.bundles.HupaImageBundle;
+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.FolderSelectionEvent;
+import org.apache.hupa.shared.events.FolderSelectionEventHandler;
+import org.apache.hupa.shared.events.LoadMessagesEvent;
+import org.apache.hupa.shared.events.LoadMessagesEventHandler;
+import org.apache.hupa.shared.events.LoginEvent;
+import org.apache.hupa.shared.events.LoginEventHandler;
+import org.apache.hupa.shared.events.LogoutEvent;
+import org.apache.hupa.shared.events.LogoutEventHandler;
+import org.apache.hupa.shared.events.MessagesReceivedEvent;
+
+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.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.Column;
+import com.google.gwt.user.cellview.client.DataGrid;
+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> {
+
+       private static final int PAGE_SIZE = 5;
+       
+       private User user;
+       private ImapFolder folder;
+       private String searchValue;
+       private EventBus eventBus;
+       private HupaRequestFactory requestFactory;
+       private HupaImageBundle imageBundle;
+       private boolean pending;
+
+       private SimplePager pager;
+       
+       public SimplePager getPager(){
+               return pager;
+       }
+//     @Inject
+       public MessagesCellTable(final EventBus eventBus, final 
HupaRequestFactory requestFactory,
+               final HupaImageBundle imageBundle) {
+
+               super(PAGE_SIZE);
+               this.eventBus = eventBus;
+               this.requestFactory = requestFactory;
+               this.imageBundle = imageBundle;
+
+//             addColumn(new CheckboxColumn());
+               addColumn(new FromColumn(), "from");
+               addColumn(new SubjectColumn(), "subject");
+//             addColumn(new AttachmentColumn());
+//             addColumn(new DateColumn());
+
+               pager = new SimplePager();
+               pager.setDisplay(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() {
+
+                       public void onLoadMessagesEvent(LoadMessagesEvent 
loadMessagesEvent) {
+                               user = loadMessagesEvent.getUser();
+                               folder = loadMessagesEvent.getFolder();
+                               searchValue = 
loadMessagesEvent.getSearchValue();
+                               fetch(0);
+                       }
+               });
+               eventBus.addHandler(FolderSelectionEvent.TYPE, new 
FolderSelectionEventHandler() {
+
+                       public void onFolderSelectionEvent(FolderSelectionEvent 
event) {
+                               user = event.getUser();
+                               folder = event.getFolder();
+                               searchValue = null;
+                       }
+               });
+               eventBus.addHandler(LoginEvent.TYPE, new LoginEventHandler() {
+
+                       public void onLogin(LoginEvent event) {
+                               user = event.getUser();
+                               folder = new 
ImapFolderImpl(user.getSettings().getInboxFolderName());
+                               searchValue = null;
+                               fetch(0);
+                       }
+               });
+               eventBus.addHandler(LogoutEvent.TYPE, new LogoutEventHandler() {
+
+                       public void onLogout(LogoutEvent logoutEvent) {
+                               user = null;
+                               folder = null;
+                               searchValue = null;
+                       }
+               });
+
+               // this.setRowData(values);
+
+       }
+
+       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());
+               // FIXME cannot put setFolder to the first place
+               action.setOffset(getPageSize());
+               action.setFolder(folder);
+               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;
+                               
MessagesCellTable.this.folder.setMessageCount(result.getRealCount());
+                               
MessagesCellTable.this.folder.setUnseenMessageCount(result.getRealUnreadCount());
+                               setRowCount(result.getRealCount());
+                               if (result != null && result.getMessages() != 
null) {
+                                       setRowData(start + getPageSize(), 
result.getMessages());
+                               } else {
+                                       setRowData(start + getPageSize(), 
result.getMessages());
+                               }
+
+                   pager.setPageStart(start);
+                   if (start == 0 || !isRowCountExact()) {
+                    setRowCount(start + result.getMessages().size(), 
result.getMessages().size() < getPageSize());
+                   }
+                               flush();
+                               // Notify presenter to update folder tree view
+                               eventBus.fireEvent(new 
MessagesReceivedEvent(folder, 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();
+               }
+       }
+}
+>>>>>>> fix some bugs related to RF, and try to use new CellView to replace 
gwt-incubator 

Modified: 
james/hupa/trunk/server/src/main/java/org/apache/hupa/server/service/FetchMessagesService.java
URL: 
http://svn.apache.org/viewvc/james/hupa/trunk/server/src/main/java/org/apache/hupa/server/service/FetchMessagesService.java?rev=1522175&r1=1522174&r2=1522175&view=diff
==============================================================================
--- 
james/hupa/trunk/server/src/main/java/org/apache/hupa/server/service/FetchMessagesService.java
 (original)
+++ 
james/hupa/trunk/server/src/main/java/org/apache/hupa/server/service/FetchMessagesService.java
 Thu Sep 12 03:13:55 2013
@@ -37,6 +37,7 @@ package org.apache.hupa.server.service;
 
 import org.apache.hupa.shared.domain.FetchMessagesAction;
 import org.apache.hupa.shared.domain.FetchMessagesResult;
+import org.apache.hupa.shared.domain.ImapFolder;
 
 public interface FetchMessagesService {
 <<<<<<< HEAD

Modified: 
james/hupa/trunk/server/src/main/java/org/apache/hupa/server/service/FetchMessagesServiceImpl.java
URL: 
http://svn.apache.org/viewvc/james/hupa/trunk/server/src/main/java/org/apache/hupa/server/service/FetchMessagesServiceImpl.java?rev=1522175&r1=1522174&r2=1522175&view=diff
==============================================================================
--- 
james/hupa/trunk/server/src/main/java/org/apache/hupa/server/service/FetchMessagesServiceImpl.java
 (original)
+++ 
james/hupa/trunk/server/src/main/java/org/apache/hupa/server/service/FetchMessagesServiceImpl.java
 Thu Sep 12 03:13:55 2013
@@ -32,6 +32,7 @@ import javax.mail.Multipart;
 import javax.mail.Part;
 import javax.mail.UIDFolder;
 import javax.mail.internet.MimeMessage.RecipientType;
+<<<<<<< HEAD
 =======
 package org.apache.hupa.server.service;
 
@@ -41,6 +42,8 @@ import java.util.List;
 import javax.mail.Message;
 import javax.mail.MessagingException;
 >>>>>>> try to fetch messages, yet can not fire the login event in ModelTable 
 >>>>>>> such that just get a NullPointerException in it.
+=======
+>>>>>>> fix some bugs related to RF, and try to use new CellView to replace 
gwt-incubator 
 import javax.mail.search.BodyTerm;
 import javax.mail.search.FromStringTerm;
 import javax.mail.search.OrTerm;
@@ -48,10 +51,14 @@ import javax.mail.search.SearchTerm;
 import javax.mail.search.SubjectTerm;
 
 <<<<<<< HEAD
+<<<<<<< HEAD
+=======
+>>>>>>> fix some bugs related to RF, and try to use new CellView to replace 
gwt-incubator 
 import org.apache.hupa.server.handler.JavamailUtil;
 import org.apache.hupa.server.preferences.UserPreferencesStorage;
 import org.apache.hupa.server.utils.MessageUtils;
 import org.apache.hupa.shared.data.FetchMessagesResultImpl;
+<<<<<<< HEAD
 import org.apache.hupa.shared.data.MessageImpl.IMAPFlag;
 import org.apache.hupa.shared.data.TagImpl;
 import org.apache.hupa.shared.domain.FetchMessagesAction;
@@ -115,13 +122,70 @@ public class FetchMessagesServiceImpl ex
 
     protected MessageConvertArray getMessagesToConvert(IMAPFolder f, 
FetchMessagesAction action) throws MessagingException, HupaException {
 =======
+=======
+import org.apache.hupa.shared.data.ImapFolderImpl;
+import org.apache.hupa.shared.data.TagImpl;
+import org.apache.hupa.shared.data.MessageImpl.IMAPFlag;
+>>>>>>> fix some bugs related to RF, and try to use new CellView to replace 
gwt-incubator 
 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.Tag;
+import org.apache.hupa.shared.domain.User;
 
+import com.google.inject.Inject;
 import com.sun.mail.imap.IMAPFolder;
+import com.sun.mail.imap.IMAPStore;
+
+public class FetchMessagesServiceImpl extends AbstractService implements 
FetchMessagesService{
+
+
+    @Inject protected UserPreferencesStorage userPreferences;
+    
+    public FetchMessagesResult fetch(FetchMessagesAction action){
+        User user = getUser();
+//        ImapFolder folder = action.getFolder();
+        if (action.getFolder() == null) {
+//            folder = new 
ImapFolderImpl(user.getSettings().getInboxFolderName());
+               throw new IllegalArgumentException("why you want to ask us for 
messages in a null folder");
+        }
+        com.sun.mail.imap.IMAPFolder f = null;
+        int start = action.getStart();
+        int offset = action.getOffset();
+        try {
+            IMAPStore store = cache.get(user);
+            
+            f =  
(com.sun.mail.imap.IMAPFolder)store.getFolder(action.getFolder().getFullName());
+
+             // check if the folder is open, if not open it read only
+            if (f.isOpen() == false) {
+                f.open(com.sun.mail.imap.IMAPFolder.READ_ONLY);
+            }
+
+            // if the folder is empty we have no need to process 
+            int exists = f.getMessageCount();
+            if (exists == 0) {
+                 return new FetchMessagesResultImpl(new 
ArrayList<org.apache.hupa.shared.domain.Message>(), start, offset, 0, 0);
+            }        
+            
+            MessageConvertArray convArray = getMessagesToConvert(f,action);
+            return new FetchMessagesResultImpl(convert(offset, f, 
convArray.getMesssages()),start, 
offset,convArray.getRealCount(),f.getUnreadMessageCount());
+        } catch (MessagingException e) {
+            logger.info("Error fetching messages in folder: " + 
action.getFolder().getFullName() + " " + e.getMessage());
+            // Folder can not contain messages
+            return new FetchMessagesResultImpl(new 
ArrayList<org.apache.hupa.shared.domain.Message>(), start, offset, 0, 0);
+        } finally {
+            if (f != null && f.isOpen()) {
+                try {
+                    f.close(false);
+                } catch (MessagingException e) {
+                    // we don't care to much about an exception on close 
here...
+                }
+            }
+        }
+    }
 
-public class FetchMessagesServiceImpl extends FetchMessagesBaseServiceImpl 
implements FetchMessagesService{
 
-       @Override
     protected MessageConvertArray getMessagesToConvert(IMAPFolder f, 
FetchMessagesAction action) throws MessagingException {
 >>>>>>> try to fetch messages, yet can not fire the login event in ModelTable 
 >>>>>>> such that just get a NullPointerException in it.
         
@@ -178,7 +242,11 @@ public class FetchMessagesServiceImpl ex
     }
 
 <<<<<<< HEAD
+<<<<<<< HEAD
     public List<org.apache.hupa.shared.domain.Message> convert(int offset, 
com.sun.mail.imap.IMAPFolder folder, Message[] messages) throws 
MessagingException {
+=======
+    protected List<org.apache.hupa.shared.domain.Message> convert(int offset, 
com.sun.mail.imap.IMAPFolder folder, Message[] messages) throws 
MessagingException {
+>>>>>>> fix some bugs related to RF, and try to use new CellView to replace 
gwt-incubator 
         List<org.apache.hupa.shared.domain.Message> mList = new 
ArrayList<org.apache.hupa.shared.domain.Message>();
         // Setup fetchprofile to limit the stuff which is fetched 
         FetchProfile fp = new FetchProfile();
@@ -310,6 +378,9 @@ public class FetchMessagesServiceImpl ex
             return messages;
         }
     }
+<<<<<<< HEAD
 =======
 >>>>>>> try to fetch messages, yet can not fire the login event in ModelTable 
 >>>>>>> such that just get a NullPointerException in it.
+=======
+>>>>>>> fix some bugs related to RF, and try to use new CellView to replace 
gwt-incubator 
 }

Modified: 
james/hupa/trunk/server/src/main/java/org/apache/hupa/server/service/ImapFolderServiceImpl.java
URL: 
http://svn.apache.org/viewvc/james/hupa/trunk/server/src/main/java/org/apache/hupa/server/service/ImapFolderServiceImpl.java?rev=1522175&r1=1522174&r2=1522175&view=diff
==============================================================================
--- 
james/hupa/trunk/server/src/main/java/org/apache/hupa/server/service/ImapFolderServiceImpl.java
 (original)
+++ 
james/hupa/trunk/server/src/main/java/org/apache/hupa/server/service/ImapFolderServiceImpl.java
 Thu Sep 12 03:13:55 2013
@@ -228,7 +228,7 @@ public class ImapFolderServiceImpl exten
                try {
                        System.out.println("Creating folder: " + fullName + " 
for user: ");
                        delimiter = String.valueOf(folder.getSeparator());
-                       iFolder = (ImapFolder) new ImapFolderImpl(fullName);
+                       iFolder = new ImapFolderImpl(fullName);
                        iFolder.setDelimiter(delimiter);
                        if ("[Gmail]".equals(folder.getFullName()))
                                return iFolder;



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