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:14:17 UTC

svn commit: r1522176 - in /james/hupa/trunk/client/src/main/java/org/apache/hupa/client: activity/IMAPMessageListActivity.java activity/WestActivity.java ui/IMAPMessageListView.java ui/MessagesCellTable.java

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

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

Modified:
    james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/IMAPMessageListActivity.java
    james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/WestActivity.java
    james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/IMAPMessageListView.java
    james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessagesCellTable.java

Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/IMAPMessageListActivity.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/IMAPMessageListActivity.java?rev=1522176&r1=1522175&r2=1522176&view=diff
==============================================================================
--- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/IMAPMessageListActivity.java (original)
+++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/IMAPMessageListActivity.java Thu Sep 12 03:14:16 2013
@@ -883,6 +883,7 @@ public class IMAPMessageListActivity ext
 		this.user = place.getUser();
 		this.folder = place.getFolder();
 		this.searchValue = place.getSearchValue();
+<<<<<<< HEAD
 =======
 	}
 	@Override
@@ -1124,6 +1125,9 @@ public class IMAPMessageListActivity ext
 		this.folder = place.getFolder();
 		this.searchValue = place.getSearchValue();
 >>>>>>> Make the evo more clear.
+=======
+		display.setImapFolder(folder);
+>>>>>>> use CellTable to deal with MessageTableModel, even a few issues
 		return this;
 	}
 
@@ -1298,6 +1302,7 @@ public class IMAPMessageListActivity ext
 		public HasValue<String> getSearchValue();
 		public void fillSearchOracle(List<Message> messages);
 		public void setExpandLoading(boolean expanding);
+		void setImapFolder(ImapFolder folder);
 
 	}
 

Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/WestActivity.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/WestActivity.java?rev=1522176&r1=1522175&r2=1522176&view=diff
==============================================================================
--- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/WestActivity.java (original)
+++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/WestActivity.java Thu Sep 12 03:14:16 2013
@@ -1337,7 +1337,7 @@ System.out.println("1111111"+response);
 		this.searchValue = searchValue;
 
 		// FIXME goto?
-		placeController.goTo(new MailFolderPlace().with(user, folder, searchValue));
+//		placeController.goTo(new MailFolderPlace().with(user, folder, searchValue));
 		// placeController.goTo(mailInboxPlaceProvider.get().with(user));
 		// System.out.println("111");
 		// placeController.goTo(new

Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/IMAPMessageListView.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/IMAPMessageListView.java?rev=1522176&r1=1522175&r2=1522176&view=diff
==============================================================================
--- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/IMAPMessageListView.java (original)
+++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/IMAPMessageListView.java Thu Sep 12 03:14:16 2013
@@ -75,6 +75,7 @@ import com.google.gwt.dom.client.Style.U
 >>>>>>> Change to new mvp framework - first step
 import org.apache.hupa.client.bundles.HupaImageBundle;
 import org.apache.hupa.client.dnd.PagingScrollTableRowDragController;
+import org.apache.hupa.client.rf.FetchMessagesRequest;
 import org.apache.hupa.client.rf.HupaRequestFactory;
 import org.apache.hupa.client.widgets.CommandsBar;
 import org.apache.hupa.client.widgets.ConfirmDialogBox;
@@ -83,6 +84,9 @@ import org.apache.hupa.client.widgets.Dr
 import org.apache.hupa.client.widgets.EnableButton;
 import org.apache.hupa.client.widgets.HasDialog;
 import org.apache.hupa.shared.data.MessageImpl.IMAPFlag;
+import org.apache.hupa.shared.domain.FetchMessagesAction;
+import org.apache.hupa.shared.domain.FetchMessagesResult;
+import org.apache.hupa.shared.domain.ImapFolder;
 import org.apache.hupa.shared.domain.Message;
 import org.apache.hupa.widgets.ui.HasEnable;
 import org.apache.hupa.widgets.ui.Loading;
@@ -91,9 +95,19 @@ import org.cobogw.gwt.user.client.ui.But
 import org.cobogw.gwt.user.client.ui.ButtonBar;
 
 <<<<<<< HEAD
+<<<<<<< HEAD
 >>>>>>> Change to new mvp framework - first step
 =======
 >>>>>>> Change to new mvp framework - first step
+=======
+import com.google.gwt.cell.client.CheckboxCell;
+import com.google.gwt.cell.client.DateCell;
+import com.google.gwt.cell.client.ImageResourceCell;
+import com.google.gwt.cell.client.TextCell;
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.core.client.Scheduler;
+import com.google.gwt.core.client.Scheduler.ScheduledCommand;
+>>>>>>> use CellTable to deal with MessageTableModel, even a few issues
 import com.google.gwt.event.dom.client.ChangeEvent;
 import com.google.gwt.event.dom.client.ChangeHandler;
 import com.google.gwt.event.dom.client.HasChangeHandlers;
@@ -779,6 +793,7 @@ import com.google.gwt.i18n.client.DateTi
 <<<<<<< HEAD
 <<<<<<< HEAD
 <<<<<<< HEAD
+<<<<<<< HEAD
 =======
 import com.google.gwt.user.cellview.client.AbstractPager;
 import com.google.gwt.user.cellview.client.DataGrid;
@@ -788,6 +803,12 @@ import com.google.gwt.user.client.ui.Anc
 =======
 >>>>>>> Change to new mvp framework - first step
 =======
+=======
+import com.google.gwt.resources.client.ImageResource;
+import com.google.gwt.user.cellview.client.Column;
+import com.google.gwt.user.cellview.client.SimplePager;
+import com.google.gwt.user.cellview.client.SimplePager.TextLocation;
+>>>>>>> use CellTable to deal with MessageTableModel, even a few issues
 import com.google.gwt.user.client.ui.Anchor;
 >>>>>>> 
 import com.google.gwt.user.client.ui.Composite;
@@ -801,7 +822,10 @@ import com.google.gwt.user.client.ui.Sug
 import com.google.gwt.user.client.ui.TableListener;
 import com.google.gwt.user.client.ui.VerticalPanel;
 import com.google.gwt.user.client.ui.Widget;
+import com.google.gwt.view.client.ListDataProvider;
 import com.google.inject.Inject;
+import com.google.web.bindery.requestfactory.shared.Receiver;
+import com.google.web.bindery.requestfactory.shared.ServerFailure;
 
 @SuppressWarnings("deprecation")
 <<<<<<< HEAD
@@ -1571,20 +1595,27 @@ public class IMAPMessageListView extends
 	private Button searchButton;
 	private Loading loading;
 
-//	private MessagesCellTable table;
-//	private AbstractPager pager;
-
+	private MessagesCellTable table;
+	private SimplePager pager;
+	
+	private ImapFolder folder;
+	@Override
+	public void setImapFolder(ImapFolder folder){
+		this.folder = folder;
+	}
 
 	@Inject
 	public IMAPMessageListView(final PagingScrollTableRowDragController controller,
 	        final MessageTableModel mTableModel, final HupaConstants constants, final HupaMessages messages,
-	        final HupaImageBundle imageBundle,final EventBus eventBus, final HupaRequestFactory requestFactory) {
+	        final HupaImageBundle imageBundle, final EventBus eventBus, final HupaRequestFactory requestFactory,
+	        final MessagesCellTable table) {
 		this.messages = messages;
 		this.imageBundle = imageBundle;
 
-//		table = new MessagesCellTable(eventBus, requestFactory, imageBundle);
-//		pager = new SimplePager();
-//		pager.setDisplay(table);
+		// table = new MessagesCellTable(eventBus, requestFactory, imageBundle);
+		this.table = table;
+		pager = new SimplePager();
+		pager.setDisplay(table);
 
 		deleteMailButton = new EnableButton(constants.deleteMailButton());
 		newMailButton = new Button(constants.newMailButton());
@@ -1696,17 +1727,147 @@ public class IMAPMessageListView extends
 		commandsBar.addLeft(allLink);
 		commandsBar.addLeft(noneLink);
 		commandsBar.add(loading);
-		commandsBar.addRight(pagingBar);
+		// commandsBar.addRight(pagingBar);
+
+		commandsBar.addRight(pager);
 
-		 msgListContainer.add(commandsBar);
-		 msgListContainer.add(mailTable);
-//		 msgListContainer.add(table);
+		msgListContainer.add(commandsBar);
+		// msgListContainer.add(mailTable);
+		msgListContainer.add(createTable(eventBus, requestFactory, imageBundle));
+		// msgListContainer.addSouth(table, DEFAULT_MSG_PAGE_SIZE);
 
 		confirmBox.setText(messages.confirmDeleteMessages());
 		confirmDeleteAllBox.setText(messages.confirmDeleteAllMessages());
 		initWidget(msgListContainer);
 	}
+	
+	private boolean pending;
+	private ListDataProvider<Message> dataProvider = new ListDataProvider<Message>();
+	private MessagesCellTable createTable(final EventBus eventBus, final HupaRequestFactory requestFactory,
+	        final HupaImageBundle imageBundle){
+		MessagesCellTable table = new MessagesCellTable(eventBus, requestFactory, imageBundle);
+		table.setWidth("100%", true);
+		SimplePager.Resources pr = GWT.create(SimplePager.Resources.class);
+		pager = new SimplePager(TextLocation.CENTER, pr, false, 0, true);
+		pager.setDisplay(table);
+
+		table.addColumn(new CheckboxColumn());
+		table.addColumn(new FromColumn());
+		table.addColumn(new SubjectColumn());
+		table.addColumn(new AttachmentColumn());
+		table.addColumn(new DateColumn());
+
+		if (!pending) {
+			pending = true;
+			Scheduler.get().scheduleFinally(new ScheduledCommand() {
+				@Override
+				public void execute() {
+					pending = false;
+					fetch(0, requestFactory);
+				}
+			});
+		}
+		dataProvider.addDataDisplay(table);
+		return table;
+	}
+
+	public void fetch(final int start, final HupaRequestFactory requestFactory) {
+		FetchMessagesRequest messagesRequest = requestFactory.messagesRequest();
+		FetchMessagesAction action = messagesRequest.create(FetchMessagesAction.class);
+		final ImapFolder folder1 = messagesRequest.create(ImapFolder.class);
+		folder1.setChildren(this.folder.getChildren());
+		folder1.setDelimiter(this.folder.getDelimiter());
+		folder1.setFullName(this.folder.getFullName());
+		folder1.setMessageCount(this.folder.getMessageCount());
+		folder1.setName(this.folder.getName());
+		folder1.setSubscribed(this.folder.getSubscribed());
+		folder1.setUnseenMessageCount(this.folder.getUnseenMessageCount());
+		// FIXME cannot put setFolder to the first place
+		action.setOffset(table.getPageSize());
+		action.setFolder(folder1);
+		action.setSearchString(null);
+		action.setStart(start);
+		messagesRequest.fetch(action).fire(new Receiver<FetchMessagesResult>() {
 
+			@Override
+			public void onFailure(ServerFailure error) {
+				if (error.isFatal()) {
+					throw new RuntimeException(error.getMessage());
+				}
+			}
+			@Override
+			public void onSuccess(final FetchMessagesResult result) {
+				assert result != null;
+				folder.setMessageCount(result.getRealCount());
+				folder.setUnseenMessageCount(result.getRealUnreadCount());
+				dataProvider.setList(result.getMessages());
+//				table.setRowCount(result.getRealCount());
+//				if (result.getMessages() != null) {
+//					table.setRowData(start + table.getPageSize(), result.getMessages());
+//				} else {
+//					table.setRowData(start +table.getPageSize(), result.getMessages());
+//				}
+
+	            pager.setPageStart(start);
+//	            if (start == 0 || !table.isRowCountExact()) {
+//	            	table.setRowCount(start + result.getMessages().size(), result.getMessages().size() < table.getPageSize());
+//	            }
+//				flush();
+				// Notify presenter to update folder tree view
+//				eventBus.fireEvent(new MessagesReceivedEvent(folder1, result.getMessages()));
+			}
+		});
+	}
+
+	private class CheckboxColumn extends Column<Message, Boolean> {
+		public CheckboxColumn() {
+			super(new CheckboxCell());
+		}
+		@Override
+		public Boolean getValue(Message object) {
+			return true;
+		}
+	}
+
+	private class FromColumn extends Column<Message, String> {
+		public FromColumn() {
+			super(new TextCell());
+		}
+		@Override
+		public String getValue(Message object) {
+			return object.getFrom();
+		}
+	}
+
+	private class SubjectColumn extends Column<Message, String> {
+		public SubjectColumn() {
+			super(new TextCell());
+		}
+		@Override
+		public String getValue(Message object) {
+			return object.getSubject();
+		}
+	}
+
+	private class AttachmentColumn extends Column<Message, ImageResource> {
+		public AttachmentColumn() {
+			super(new ImageResourceCell());
+		}
+		@Override
+		public ImageResource getValue(Message object) {
+			return object.hasAttachment() ? imageBundle.attachmentIcon() : null;
+		}
+	}
+
+	private class DateColumn extends Column<Message, Date> {
+		public DateColumn() {
+			super(new DateCell(DateTimeFormat.getFormat("dd.MMM.yyyy")));
+		}
+		@Override
+		public Date getValue(Message object) {
+			return object.getReceivedDate();
+		}
+	}
 	PageLoadHandler onMessagePageLoadHandler = new PageLoadHandler() {
 
 		public void onPageLoad(PageLoadEvent event) {

Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessagesCellTable.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessagesCellTable.java?rev=1522176&r1=1522175&r2=1522176&view=diff
==============================================================================
--- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessagesCellTable.java (original)
+++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessagesCellTable.java Thu Sep 12 03:14:16 2013
@@ -502,23 +502,21 @@ import com.google.gwt.cell.client.Checkb
 import com.google.gwt.cell.client.DateCell;
 import com.google.gwt.cell.client.ImageResourceCell;
 import com.google.gwt.cell.client.TextCell;
-import com.google.gwt.core.client.Scheduler;
-import com.google.gwt.core.client.Scheduler.ScheduledCommand;
 import com.google.gwt.event.shared.EventBus;
 import com.google.gwt.i18n.client.DateTimeFormat;
 import com.google.gwt.resources.client.ImageResource;
-import com.google.gwt.user.cellview.client.AbstractPager;
+import com.google.gwt.user.cellview.client.CellTable;
 import com.google.gwt.user.cellview.client.Column;
-import com.google.gwt.user.cellview.client.DataGrid;
+import com.google.gwt.user.cellview.client.HasKeyboardSelectionPolicy.KeyboardSelectionPolicy;
 import com.google.gwt.user.cellview.client.SimplePager;
 import com.google.gwt.view.client.RangeChangeEvent;
 import com.google.inject.Inject;
 import com.google.web.bindery.requestfactory.shared.Receiver;
 import com.google.web.bindery.requestfactory.shared.ServerFailure;
 
-public class MessagesCellTable extends DataGrid<Message> {
+public class MessagesCellTable extends CellTable<Message> {
 
-	private static final int PAGE_SIZE = 5;
+	private static final int PAGE_SIZE = 25;
 	
 	private User user;
 	private ImapFolder folder;
@@ -533,7 +531,7 @@ public class MessagesCellTable extends D
 	public SimplePager getPager(){
 		return pager;
 	}
-//	@Inject
+	@Inject
 	public MessagesCellTable(final EventBus eventBus, final HupaRequestFactory requestFactory,
 	        final HupaImageBundle imageBundle) {
 
@@ -542,16 +540,16 @@ public class MessagesCellTable extends D
 		this.requestFactory = requestFactory;
 		this.imageBundle = imageBundle;
 
-//		addColumn(new CheckboxColumn());
-		addColumn(new FromColumn(), "from");
-		addColumn(new SubjectColumn(), "subject");
-//		addColumn(new AttachmentColumn());
-//		addColumn(new DateColumn());
+		addColumn(new CheckboxColumn());
+		addColumn(new FromColumn());
+		addColumn(new SubjectColumn());
+		addColumn(new AttachmentColumn());
+		addColumn(new DateColumn());
 
 		pager = new SimplePager();
 		pager.setDisplay(this);
 		setKeyboardSelectionPolicy(KeyboardSelectionPolicy.DISABLED);
-//		setVisible(true);
+		setVisible(true);
 		addRangeChangeHandler(new RangeChangeEvent.Handler() {
 			@Override
 			public void onRangeChange(RangeChangeEvent event) {
@@ -577,7 +575,7 @@ public class MessagesCellTable extends D
 				user = loadMessagesEvent.getUser();
 				folder = loadMessagesEvent.getFolder();
 				searchValue = loadMessagesEvent.getSearchValue();
-				fetch(0);
+//				fetch(0);
 			}
 		});
 		eventBus.addHandler(FolderSelectionEvent.TYPE, new FolderSelectionEventHandler() {
@@ -594,7 +592,7 @@ public class MessagesCellTable extends D
 				user = event.getUser();
 				folder = new ImapFolderImpl(user.getSettings().getInboxFolderName());
 				searchValue = null;
-				fetch(0);
+//				fetch(0);
 			}
 		});
 		eventBus.addHandler(LogoutEvent.TYPE, new LogoutEventHandler() {
@@ -640,7 +638,7 @@ public class MessagesCellTable extends D
 				MessagesCellTable.this.folder.setMessageCount(result.getRealCount());
 				MessagesCellTable.this.folder.setUnseenMessageCount(result.getRealUnreadCount());
 				setRowCount(result.getRealCount());
-				if (result != null && result.getMessages() != null) {
+				if (result.getMessages() != null) {
 					setRowData(start + getPageSize(), result.getMessages());
 				} else {
 					setRowData(start + getPageSize(), result.getMessages());
@@ -650,7 +648,7 @@ public class MessagesCellTable extends D
 	            if (start == 0 || !isRowCountExact()) {
 	             setRowCount(start + result.getMessages().size(), result.getMessages().size() < getPageSize());
 	            }
-				flush();
+//				flush();
 				// Notify presenter to update folder tree view
 				eventBus.fireEvent(new MessagesReceivedEvent(folder, result.getMessages()));
 			}



---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org