You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by do...@apache.org on 2013/09/12 05:13:56 UTC

svn commit: r1522175 - in /james/hupa/trunk: client/src/main/java/org/apache/hupa/client/activity/ client/src/main/java/org/apache/hupa/client/ioc/ client/src/main/java/org/apache/hupa/client/rf/ client/src/main/java/org/apache/hupa/client/ui/ server/s...

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-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org