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(" "); + } + + } + + }); + + 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(" "); + } 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