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:41 UTC

svn commit: r1522177 - in /james/hupa/trunk/client/src/main/java/org/apache/hupa/client: activity/ ioc/ ui/

Author: dongxu
Date: Thu Sep 12 03:14:41 2013
New Revision: 1522177

URL: http://svn.apache.org/r1522177
Log:
fix the CellTable display

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/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/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=1522177&r1=1522176&r2=1522177&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:41 2013
@@ -870,20 +870,13 @@ public class IMAPMessageListActivity ext
 				eventBus.fireEvent(new DecreaseUnseenEvent(user, folder, response.getCount()));
 			}
 		});
-
-		// dispatcher.execute(new DeleteMessageByUid(folder,uids), new
-		// HupaEvoCallback<DeleteMessageResult>(dispatcher, eventBus) {
-		// public void callback(DeleteMessageResult result) {
-		// eventBus.fireEvent(new
-		// DecreaseUnseenEvent(user,folder,result.getCount()));
-		// }
-		// });
 	}
 	public IMAPMessageListActivity with(MailFolderPlace place) {
 		this.user = place.getUser();
 		this.folder = place.getFolder();
 		this.searchValue = place.getSearchValue();
 <<<<<<< HEAD
+<<<<<<< HEAD
 =======
 	}
 	@Override
@@ -1128,6 +1121,8 @@ public class IMAPMessageListActivity ext
 =======
 		display.setImapFolder(folder);
 >>>>>>> use CellTable to deal with MessageTableModel, even a few issues
+=======
+>>>>>>> fix the CellTable display
 		return this;
 	}
 
@@ -1302,7 +1297,6 @@ 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/LoginActivity.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/LoginActivity.java?rev=1522177&r1=1522176&r2=1522177&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:14:41 2013
@@ -241,7 +241,7 @@ public class LoginActivity extends Abstr
 	public void bind() {
 		display.getLoginClick().addClickHandler(new ClickHandler() {
 			public void onClick(ClickEvent event) {
-				doLogin();
+				doLogin();// FIXME double run if press "ENTER" key in the login page
 			}
 		});
 <<<<<<< HEAD

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=1522177&r1=1522176&r2=1522177&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:41 2013
@@ -912,7 +912,7 @@ System.out.println("1111111"+response);
 				}
 
 				display.setLoadingMessage(true);
-				if(messagesRequest == null){
+				if (messagesRequest == null) {
 					messagesRequest = requestFactory.messagesRequest();
 				}
 				GetMessageDetailsRequest req = messagesRequest.append(requestFactory.messageDetailsRequest());
@@ -937,9 +937,6 @@ System.out.println("1111111"+response);
 							eventBus.fireEvent(new DecreaseUnseenEvent(user, folder));
 						}
 						display.setLoadingMessage(false);
-						// showMessage(user, folder, message,
-						// response.getMessageDetails());
-
 						placeController.goTo(messagePlaceProvider.get().with(user, folder, message,
 						        response.getMessageDetails()));
 					}
@@ -1100,6 +1097,7 @@ System.out.println("1111111"+response);
 				folder = messagesRequest.edit(editableFolder);
 
 				// folder = (ImapFolder) tItem.getUserObject();
+				// FIXME not good to find
 				eventBus.fireEvent(new LoadMessagesEvent(user, folder));
 <<<<<<< HEAD
 >>>>>>> fix the frozen autobean issue, yet another occur
@@ -1337,7 +1335,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/ioc/AppGinModule.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ioc/AppGinModule.java?rev=1522177&r1=1522176&r2=1522177&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:14:41 2013
@@ -416,7 +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);
+		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/ui/IMAPMessageListView.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/IMAPMessageListView.java?rev=1522177&r1=1522176&r2=1522177&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:41 2013
@@ -75,7 +75,6 @@ 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,11 +82,12 @@ import org.apache.hupa.client.widgets.Dr
 import org.apache.hupa.client.widgets.DragRefetchPagingScrollTable.DragHandlerFactory;
 import org.apache.hupa.client.widgets.EnableButton;
 import org.apache.hupa.client.widgets.HasDialog;
+import org.apache.hupa.shared.data.MessageImpl;
 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.shared.events.DecreaseUnseenEvent;
+import org.apache.hupa.shared.events.ExpandMessageEvent;
 import org.apache.hupa.widgets.ui.HasEnable;
 import org.apache.hupa.widgets.ui.Loading;
 import org.apache.hupa.widgets.ui.PagingOptions;
@@ -96,6 +96,7 @@ import org.cobogw.gwt.user.client.ui.But
 
 <<<<<<< HEAD
 <<<<<<< HEAD
+<<<<<<< HEAD
 >>>>>>> Change to new mvp framework - first step
 =======
 >>>>>>> Change to new mvp framework - first step
@@ -108,6 +109,8 @@ 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
+=======
+>>>>>>> fix the CellTable display
 import com.google.gwt.event.dom.client.ChangeEvent;
 import com.google.gwt.event.dom.client.ChangeHandler;
 import com.google.gwt.event.dom.client.HasChangeHandlers;
@@ -119,6 +122,7 @@ import com.google.gwt.event.dom.client.K
 <<<<<<< HEAD
 <<<<<<< HEAD
 import com.google.gwt.event.shared.EventBus;
+<<<<<<< HEAD
 import com.google.gwt.user.cellview.client.SimplePager;
 import com.google.gwt.user.cellview.client.SimplePager.TextLocation;
 import com.google.gwt.user.client.ui.Anchor;
@@ -767,6 +771,8 @@ public class IMAPMessageListView extends
 =======
 import com.google.gwt.event.shared.EventBus;
 >>>>>>> fix some bugs related to RF, and try to use new CellView to replace gwt-incubator 
+=======
+>>>>>>> fix the CellTable display
 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;
@@ -794,6 +800,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;
@@ -809,6 +816,9 @@ import com.google.gwt.user.cellview.clie
 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.cellview.client.SimplePager;
+>>>>>>> fix the CellTable display
 import com.google.gwt.user.client.ui.Anchor;
 >>>>>>> 
 import com.google.gwt.user.client.ui.Composite;
@@ -822,10 +832,9 @@ 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.gwt.view.client.SelectionChangeEvent;
+import com.google.gwt.view.client.SingleSelectionModel;
 import com.google.inject.Inject;
-import com.google.web.bindery.requestfactory.shared.Receiver;
-import com.google.web.bindery.requestfactory.shared.ServerFailure;
 
 @SuppressWarnings("deprecation")
 <<<<<<< HEAD
@@ -1595,14 +1604,8 @@ public class IMAPMessageListView extends
 	private Button searchButton;
 	private Loading loading;
 
-	private MessagesCellTable table;
 	private SimplePager pager;
-	
-	private ImapFolder folder;
-	@Override
-	public void setImapFolder(ImapFolder folder){
-		this.folder = folder;
-	}
+	private EventBus eventBus;
 
 	@Inject
 	public IMAPMessageListView(final PagingScrollTableRowDragController controller,
@@ -1611,9 +1614,7 @@ public class IMAPMessageListView extends
 	        final MessagesCellTable table) {
 		this.messages = messages;
 		this.imageBundle = imageBundle;
-
-		// table = new MessagesCellTable(eventBus, requestFactory, imageBundle);
-		this.table = table;
+		this.eventBus = eventBus;
 		pager = new SimplePager();
 		pager.setDisplay(table);
 
@@ -1630,7 +1631,6 @@ public class IMAPMessageListView extends
 		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());
 			}
@@ -1642,11 +1642,9 @@ public class IMAPMessageListView extends
 		        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());
@@ -1732,142 +1730,14 @@ public class IMAPMessageListView extends
 		commandsBar.addRight(pager);
 
 		msgListContainer.add(commandsBar);
+
+		msgListContainer.add(table);
 		// 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=1522177&r1=1522176&r2=1522177&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:41 2013
@@ -483,11 +483,14 @@ import org.apache.hupa.client.bundles.Hu
 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.data.MessageImpl;
 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.DecreaseUnseenEvent;
+import org.apache.hupa.shared.events.ExpandMessageEvent;
 import org.apache.hupa.shared.events.FolderSelectionEvent;
 import org.apache.hupa.shared.events.FolderSelectionEventHandler;
 import org.apache.hupa.shared.events.LoadMessagesEvent;
@@ -502,21 +505,25 @@ 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.CellTable;
 import com.google.gwt.user.cellview.client.Column;
-import com.google.gwt.user.cellview.client.HasKeyboardSelectionPolicy.KeyboardSelectionPolicy;
 import com.google.gwt.user.cellview.client.SimplePager;
+import com.google.gwt.view.client.ListDataProvider;
 import com.google.gwt.view.client.RangeChangeEvent;
+import com.google.gwt.view.client.SelectionChangeEvent;
+import com.google.gwt.view.client.SingleSelectionModel;
 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 CellTable<Message> {
 
-	private static final int PAGE_SIZE = 25;
+	private static final int PAGE_SIZE = 15;
 	
 	private User user;
 	private ImapFolder folder;
@@ -527,6 +534,7 @@ public class MessagesCellTable extends C
 	private boolean pending;
 
 	private SimplePager pager;
+	private ListDataProvider<Message> dataProvider;
 	
 	public SimplePager getPager(){
 		return pager;
@@ -548,26 +556,15 @@ public class MessagesCellTable extends C
 
 		pager = new SimplePager();
 		pager.setDisplay(this);
+		dataProvider = new ListDataProvider<Message>();
+		dataProvider.addDataDisplay(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() {
 
@@ -575,7 +572,18 @@ public class MessagesCellTable extends C
 				user = loadMessagesEvent.getUser();
 				folder = loadMessagesEvent.getFolder();
 				searchValue = loadMessagesEvent.getSearchValue();
-//				fetch(0);
+				fetch(0);
+//				if (!pending) {
+//					pending = true;
+//					Scheduler.get().scheduleFinally(new ScheduledCommand() {
+//						@Override
+//						public void execute() {
+//							pending = false;
+//							fetch(0);
+//						}
+//					});
+//				}
+				
 			}
 		});
 		eventBus.addHandler(FolderSelectionEvent.TYPE, new FolderSelectionEventHandler() {
@@ -592,7 +600,16 @@ public class MessagesCellTable extends C
 				user = event.getUser();
 				folder = new ImapFolderImpl(user.getSettings().getInboxFolderName());
 				searchValue = null;
-//				fetch(0);
+				if (!pending) {
+					pending = true;
+					Scheduler.get().scheduleFinally(new ScheduledCommand() {
+						@Override
+						public void execute() {
+							pending = false;
+							fetch(0);
+						}
+					});
+				}
 			}
 		});
 		eventBus.addHandler(LogoutEvent.TYPE, new LogoutEventHandler() {
@@ -606,22 +623,49 @@ public class MessagesCellTable extends C
 
 		// this.setRowData(values);
 
+		setSelectionModel(selectionModel);
+	    selectionModel.addSelectionChangeHandler(new SelectionChangeEvent.Handler() {
+	      @Override
+	      public void onSelectionChange(SelectionChangeEvent event) {
+	    	  refreshSelection();
+	      }
+	    });
+
 	}
 
+
+	private final SingleSelectionModel<Message> selectionModel = new SingleSelectionModel<Message>();
+	protected void refreshSelection() {
+		Message message = selectionModel.getSelectedObject();
+		if(message == null) return;
+//		display.setExpandLoading(true);
+
+		if (message.getFlags().contains(MessageImpl.IMAPFlag.SEEN) == false) {
+			// add flag, fire event and redraw
+			message.getFlags().add(MessageImpl.IMAPFlag.SEEN);
+			eventBus.fireEvent(new DecreaseUnseenEvent(user, folder, 1));
+
+//			display.redraw();
+
+		}
+		eventBus.fireEvent(new ExpandMessageEvent(user, folder, message));
+	    selectionModel.setSelected(message, false);
+	    
+    }
 	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());
+		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(getPageSize());
-		action.setFolder(folder);
+		action.setFolder(folder1);
 		action.setSearchString(searchValue);
 		action.setStart(start);
 		messagesRequest.fetch(action).fire(new Receiver<FetchMessagesResult>() {
@@ -637,6 +681,7 @@ public class MessagesCellTable extends C
 				assert result != null;
 				MessagesCellTable.this.folder.setMessageCount(result.getRealCount());
 				MessagesCellTable.this.folder.setUnseenMessageCount(result.getRealUnreadCount());
+				dataProvider.setList(result.getMessages());
 				setRowCount(result.getRealCount());
 				if (result.getMessages() != null) {
 					setRowData(start + getPageSize(), result.getMessages());
@@ -650,7 +695,7 @@ public class MessagesCellTable extends C
 	            }
 //				flush();
 				// Notify presenter to update folder tree view
-				eventBus.fireEvent(new MessagesReceivedEvent(folder, result.getMessages()));
+				eventBus.fireEvent(new MessagesReceivedEvent(folder1, result.getMessages()));
 			}
 		});
 	}



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