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 06:40:00 UTC

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

Author: dongxu
Date: Thu Sep 12 04:39:59 2013
New Revision: 1522374

URL: http://svn.apache.org/r1522374
Log:
change message list view to make it not refresh the whole list when click one of the messages

Modified:
    james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/AppBaseActivity.java
    james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/ComposeActivity.java
    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/LabelListActivity.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/MessageContentActivity.java
    james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/MessageListActivity.java
    james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/MessageSendActivity.java
    james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/ToolBarActivity.java
    james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/TopActivity.java
    james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/TopBarActivity.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/mapper/CachingMessageListActivityMapper.java
    james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mapper/MessageListActivityMapper.java
    james/hupa/trunk/client/src/main/java/org/apache/hupa/client/place/FolderPlace.java
    james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/ContentSplitLayoutPanel.java
    james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/FolderListView.java
    james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/FolderListView.ui.xml
    james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/FoldersTreeViewModel.java
    james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessageListView.java
    james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessageListView.ui.xml
    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/AppBaseActivity.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/AppBaseActivity.java?rev=1522374&r1=1522373&r2=1522374&view=diff
==============================================================================
--- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/AppBaseActivity.java (original)
+++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/AppBaseActivity.java Thu Sep 12 04:39:59 2013
@@ -41,6 +41,7 @@ public abstract class AppBaseActivity ex
 	@Inject protected EventBus eventBus;
 	@Inject protected HupaController hc;
 <<<<<<< HEAD
+<<<<<<< HEAD
 	@Inject protected PlaceController pc;
 	@Inject protected HupaRequestFactory rf;
 
@@ -65,6 +66,10 @@ public abstract class AppBaseActivity ex
 >>>>>>> try to rearrange the places and history managment.
 	@Inject protected PlaceController placeController;
 	@Inject protected HupaRequestFactory requestFactory;
+=======
+	@Inject protected PlaceController pc;
+	@Inject protected HupaRequestFactory rf;
+>>>>>>> change message list view to make it not refresh the whole list when click one of the messages
 
 >>>>>>> scrub code
 	protected List<HandlerRegistration> registrations = new ArrayList<HandlerRegistration>();

Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/ComposeActivity.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/ComposeActivity.java?rev=1522374&r1=1522373&r2=1522374&view=diff
==============================================================================
--- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/ComposeActivity.java (original)
+++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/ComposeActivity.java Thu Sep 12 04:39:59 2013
@@ -699,6 +699,7 @@ public class ComposeActivity extends App
 
 			if ("new".equals(place.getToken())) {
 				SendMessageRequest sendReq = rf.sendMessageRequest();
+<<<<<<< HEAD
 				SendMessageAction sendAction = sendReq.create(SendMessageAction.class);
 				sendAction.setMessage(parseMessage(sendReq));
 =======
@@ -727,6 +728,8 @@ public class ComposeActivity extends App
 
 			if ("new".equals(place.getToken())) {
 				SendMessageRequest sendReq = requestFactory.sendMessageRequest();
+=======
+>>>>>>> change message list view to make it not refresh the whole list when click one of the messages
 				SendMessageAction sendAction = sendReq.create(SendMessageAction.class);
 <<<<<<< HEAD
 <<<<<<< HEAD
@@ -753,6 +756,7 @@ public class ComposeActivity extends App
 				// FIXME will get a NullPointerException given accessing
 				// directly from some URL like #/compose:forward
 <<<<<<< HEAD
+<<<<<<< HEAD
 				SendForwardMessageRequest req = rf.sendForwardMessageRequest();
 				SendForwardMessageAction action = req.create(SendForwardMessageAction.class);
 				action.setMessage(parseMessage(req));
@@ -783,6 +787,9 @@ public class ComposeActivity extends App
 =======
 >>>>>>> scrub code
 				SendForwardMessageRequest req = requestFactory.sendForwardMessageRequest();
+=======
+				SendForwardMessageRequest req = rf.sendForwardMessageRequest();
+>>>>>>> change message list view to make it not refresh the whole list when click one of the messages
 				SendForwardMessageAction action = req.create(SendForwardMessageAction.class);
 				action.setMessage(parseMessage(req));
 				ImapFolder f = req.create(ImapFolder.class);
@@ -849,7 +856,7 @@ public class ComposeActivity extends App
 =======
 >>>>>>> coping with java.lang.IllegalArgumentException: uid
 			} else {
-				SendReplyMessageRequest replyReq = requestFactory.sendReplyMessageRequest();
+				SendReplyMessageRequest replyReq = rf.sendReplyMessageRequest();
 				SendReplyMessageAction action = replyReq.create(SendReplyMessageAction.class);
 				action.setMessage(parseMessage(replyReq));
 				ImapFolder folder = replyReq.create(ImapFolder.class);

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=1522374&r1=1522373&r2=1522374&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 04:39:59 2013
@@ -113,6 +113,7 @@ public class IMAPMessageListActivity ext
 			public void onMoveMessageHandler(MoveMessageEvent event) {
 				final Message message = event.getMessage();
 				MoveMessageRequest req = rf.moveMessageRequest();
+<<<<<<< HEAD
 				MoveMessageAction action = req.create(MoveMessageAction.class);
 				ImapFolder newOne = req.create(ImapFolder.class);
 				ImapFolder oldOne = req.create(ImapFolder.class);
@@ -670,6 +671,8 @@ public class IMAPMessageListActivity ext
 			public void onMoveMessageHandler(MoveMessageEvent event) {
 				final Message message = event.getMessage();
 				MoveMessageRequest req = requestFactory.moveMessageRequest();
+=======
+>>>>>>> change message list view to make it not refresh the whole list when click one of the messages
 				MoveMessageAction action = req.create(MoveMessageAction.class);
 				ImapFolder newOne = req.create(ImapFolder.class);
 				ImapFolder oldOne = req.create(ImapFolder.class);
@@ -716,7 +719,7 @@ public class IMAPMessageListActivity ext
 		registrations.add(display.getNewClick().addClickHandler(new com.google.gwt.event.dom.client.ClickHandler() {
 			public void onClick(com.google.gwt.event.dom.client.ClickEvent event) {
 				// eventBus.fireEvent(new NewMessageEvent());
-				placeController.goTo(messageSendPlaceProvider.get().with(user, null, null, null, Type.NEW));
+				pc.goTo(messageSendPlaceProvider.get().with(user, null, null, null, Type.NEW));
 			}
 		}));
 		registrations.add(display.getDeleteAllClick().addClickHandler(new ClickHandler() {
@@ -726,7 +729,7 @@ public class IMAPMessageListActivity ext
 		}));
 		registrations.add(display.getConfirmDeleteAllDialogClick().addClickHandler(new ClickHandler() {
 			public void onClick(ClickEvent event) {
-				DeleteMessageAllRequest req = requestFactory.deleteMessageAllRequest();
+				DeleteMessageAllRequest req = rf.deleteMessageAllRequest();
 				DeleteMessageAllAction action = req.create(DeleteMessageAllAction.class);
 				ImapFolder f = req.create(ImapFolder.class);
 				folder.setFolderTo(f);
@@ -751,7 +754,7 @@ public class IMAPMessageListActivity ext
 						selectedMessages.remove(m);
 					}
 				}
-				SetFlagRequest req = requestFactory.setFlagRequest();
+				SetFlagRequest req = rf.setFlagRequest();
 				SetFlagAction action = req.create(SetFlagAction.class);
 				ImapFolder f = req.create(ImapFolder.class);
 				folder.setFolderTo(f);
@@ -784,7 +787,7 @@ public class IMAPMessageListActivity ext
 						selectedMessages.remove(m);
 					}
 				}
-				SetFlagRequest req = requestFactory.setFlagRequest();
+				SetFlagRequest req = rf.setFlagRequest();
 				SetFlagAction action = req.create(SetFlagAction.class);
 				ImapFolder f = req.create(ImapFolder.class);
 				folder.setFolderTo(f);
@@ -842,7 +845,7 @@ public class IMAPMessageListActivity ext
 		// maybe its better to just remove the messages from the table and
 		// expect the removal will work
 		display.removeMessages(selectedMessages);
-		DeleteMessageByUidRequest req = requestFactory.deleteMessageByUidRequest();
+		DeleteMessageByUidRequest req = rf.deleteMessageByUidRequest();
 		DeleteMessageByUidAction action = req.create(DeleteMessageByUidAction.class);
 		ImapFolder f = req.create(ImapFolder.class);
 //		folder.setFolderTo(f); FIXME cannot use any more, for it's already a requestContext assigned.

Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/LabelListActivity.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/LabelListActivity.java?rev=1522374&r1=1522373&r2=1522374&view=diff
==============================================================================
--- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/LabelListActivity.java (original)
+++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/LabelListActivity.java Thu Sep 12 04:39:59 2013
@@ -195,7 +195,7 @@ public class LabelListActivity extends A
 		hupaController.showTopLoading("Deleting...");
 		SingleSelectionModel<LabelNode> selectionModel = display.getSelectionModel();
 		LabelNode labelNode = selectionModel.getSelectedObject();
-		DeleteFolderRequest req = requestFactory.deleteFolderRequest();
+		DeleteFolderRequest req = rf.deleteFolderRequest();
 		DeleteFolderAction action = req.create(DeleteFolderAction.class);
 		final ImapFolder f = req.create(ImapFolder.class);
 		f.setFullName(labelNode.getFolder().getFullName());

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=1522374&r1=1522373&r2=1522374&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 04:39:59 2013
@@ -353,6 +353,7 @@ public class LoginActivity extends Abstr
 			return;
 		display.setLoading(true);
 		LoginUserRequest loginRequest = rf.loginRequest();
+<<<<<<< HEAD
 		loginRequest.login(user, pass).fire(new Receiver<User>() {
 			@Override
 			public void onSuccess(User response) {
@@ -484,12 +485,14 @@ public class LoginActivity extends Abstr
 =======
 >>>>>>> scrub code
 		LoginUserRequest loginRequest = requestFactory.loginRequest();
+=======
+>>>>>>> change message list view to make it not refresh the whole list when click one of the messages
 		loginRequest.login(user, pass).fire(new Receiver<User>() {
 			@Override
 			public void onSuccess(User response) {
 				RootLayoutPanel.get().clear();
 				RootLayoutPanel.get().add(hupaLayout.get());
-				placeController.goTo(new FolderPlace(response.getSettings().getInboxFolderName()));
+				pc.goTo(new FolderPlace(response.getSettings().getInboxFolderName()));
 				eventBus.fireEvent(new LoginEvent(response));
 				display.setLoading(false);
 			}

Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/MessageContentActivity.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/MessageContentActivity.java?rev=1522374&r1=1522373&r2=1522374&view=diff
==============================================================================
--- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/MessageContentActivity.java (original)
+++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/MessageContentActivity.java Thu Sep 12 04:39:59 2013
@@ -204,7 +204,7 @@ public class MessageContentActivity exte
 	@Override
 	public void start(AcceptsOneWidget container, EventBus eventBus) {
 		if (isUidSet()) {
-			GetMessageDetailsRequest req = requestFactory
+			GetMessageDetailsRequest req = rf
 					.messageDetailsRequest();
 			GetMessageDetailsAction action = req
 					.create(GetMessageDetailsAction.class);

Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/MessageListActivity.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/MessageListActivity.java?rev=1522374&r1=1522373&r2=1522374&view=diff
==============================================================================
--- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/MessageListActivity.java (original)
+++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/MessageListActivity.java Thu Sep 12 04:39:59 2013
@@ -320,107 +320,48 @@ public class MessageListActivity extends
 	public void start(AcceptsOneWidget container, final EventBus eventBus) {
 		container.setWidget(display.asWidget());
 		bindTo(eventBus);
-		this.registerHandler(display.getGrid().addCellPreviewHandler(new Handler<Message>() {
-			@Override
-			public void onCellPreview(final CellPreviewEvent<Message> event) {
-				if (hasClickedButFirstCol(event)) {
-					antiSelectMessages(display.getGrid().getVisibleItems());
-					GetMessageDetailsRequest req = requestFactory.messageDetailsRequest();
-					GetMessageDetailsAction action = req.create(GetMessageDetailsAction.class);
-					final ImapFolder f = req.create(ImapFolder.class);
-					f.setFullName(folderName);
-					action.setFolder(f);
-					action.setUid(event.getValue().getUid());
-					req.get(action).fire(new Receiver<GetMessageDetailsResult>() {
-						@Override
-						public void onSuccess(GetMessageDetailsResult response) {
-							eventBus.fireEvent(new ExpandMessageEvent(user, new ImapFolderImpl(folderName), event
-									.getValue(), response.getMessageDetails()));
-							display.getGrid().getSelectionModel().setSelected(event.getValue(), true);
-							toolBar.enableAllTools(true);
-							ToolBarView.Parameters p = new ToolBarView.Parameters(user, folderName, event.getValue(),
-									response.getMessageDetails());
-							toolBar.setParameters(p);
-							MessagePlace place = new MessagePlace(folderName+AbstractPlace.SPLITTER+event.getValue().getUid());
-							placeController.goTo(place);
-						}
-
-						@Override
-						public void onFailure(ServerFailure error) {
-							if (error.isFatal()) {
-								// log.log(Level.SEVERE, error.getMessage());
-								// TODO write the error message to
-								// status bar.
-								toolBar.enableAllTools(false);
-								throw new RuntimeException(error.getMessage());
-							}
-						}
-					});
-				}
-			}
-
-		}));
-		dataProvider = new MessageListDataProvider();
-		dataProvider.addDataDisplay(display.getGrid());
-	}
-	
-	public void refresh(){
-		dataProvider.refresh();
-	}
-
-	private MessageListDataProvider dataProvider;
-	public class MessageListDataProvider extends AsyncDataProvider<Message> implements HasRefresh{
-
-		HasData<Message> display;
-		
-		@Override
-		public void addDataDisplay(HasData<Message> display) {
-			super.addDataDisplay(display);
-			this.display = display;
-		}
-		
-
-		@Override
-		public void refresh() {
-			this.onRangeChanged(display);
-		}
-
-		@Override
-		protected void onRangeChanged(HasData<Message> display) {
-			FetchMessagesRequest req = requestFactory.messagesRequest();
-			FetchMessagesAction action = req.create(FetchMessagesAction.class);
-			final ImapFolder f = req.create(ImapFolder.class);
-			f.setFullName(folderName);
-			action.setFolder(f);
-			action.setOffset(display.getVisibleRange().getLength());
-			action.setSearchString(searchValue);
-			action.setStart(display.getVisibleRange().getStart());
-			req.fetch(action).fire(new Receiver<FetchMessagesResult>() {
-				@Override
-				public void onSuccess(final FetchMessagesResult response) {
-					if (response == null || response.getRealCount()== 0) {
-						updateRowCount(-1, true);
-					} else {
-						updateRowData(0, response.getMessages());
-					}
-					hc.hideTopLoading();
-				}
-
-				@Override
-				public void onFailure(ServerFailure error) {
-					if (error.isFatal()) {
-						throw new RuntimeException(error.getMessage());
-					}
-					hc.hideTopLoading();
-				}
-			});
-
-		}
-		
-	}
-
-	private boolean hasClickedButFirstCol(CellPreviewEvent<Message> event) {
-		return "click".equals(event.getNativeEvent().getType()) && 0 != event.getColumn();
+//		this.registerHandler(display.getGrid().addCellPreviewHandler(new Handler<Message>() {
+//			@Override
+//			public void onCellPreview(final CellPreviewEvent<Message> event) {
+//				if (hasClickedButFirstCol(event)) {
+//					antiSelectMessages(display.getGrid().getVisibleItems());
+//					GetMessageDetailsRequest req = rf.messageDetailsRequest();
+//					GetMessageDetailsAction action = req.create(GetMessageDetailsAction.class);
+//					final ImapFolder f = req.create(ImapFolder.class);
+//					f.setFullName(folderName);
+//					action.setFolder(f);
+//					action.setUid(event.getValue().getUid());
+//					req.get(action).fire(new Receiver<GetMessageDetailsResult>() {
+//						@Override
+//						public void onSuccess(GetMessageDetailsResult response) {
+//							eventBus.fireEvent(new ExpandMessageEvent(user, new ImapFolderImpl(folderName), event
+//									.getValue(), response.getMessageDetails()));
+////							display.getGrid().getSelectionModel().setSelected(event.getValue(), true);
+//							display.getGrid().noSelectionModel.setSelected(event.getValue(), true);
+//							toolBar.enableAllTools(true);
+//							ToolBarView.Parameters p = new ToolBarView.Parameters(user, folderName, event.getValue(),
+//									response.getMessageDetails());
+//							toolBar.setParameters(p);
+//							MessagePlace place = new MessagePlace(folderName + AbstractPlace.SPLITTER
+//									+ event.getValue().getUid());
+//							pc.goTo(place);
+//						}
+//
+//						@Override
+//						public void onFailure(ServerFailure error) {
+//							if (error.isFatal()) {
+//								// log.log(Level.SEVERE, error.getMessage());
+//								// TODO write the error message to
+//								// status bar.
+//								toolBar.enableAllTools(false);
+//								throw new RuntimeException(error.getMessage());
+//							}
+//						}
+//					});
+//				}
+//			}
+//
+//		}));
 	}
 
 	private void bindTo(EventBus eventBus) {
@@ -455,11 +396,11 @@ public class MessageListActivity extends
 >>>>>>> make reload message content work, use the same place with folder list, while separated with slash, that looks like Gmail's
 	public interface Displayable extends WidgetDisplayable {
 		MessagesCellTable getGrid();
+		
+		void refresh();
 
 		List<Long> getSelectedMessagesIds();
 
-		void refresh();
-
 		Set<Message> getSelectedMessages();
 	}
 
@@ -472,14 +413,14 @@ public class MessageListActivity extends
 		}
 	}
 	private void deleteSelectedMessages() {
-		String fullName= null;
-		if(placeController.getWhere() instanceof FolderPlace){
-			fullName=((FolderPlace) placeController.getWhere()).getToken();
-		}else{
-			fullName=((MessagePlace) placeController.getWhere()).getTokenWrapper().getFolder();
+		String fullName = null;
+		if (pc.getWhere() instanceof FolderPlace) {
+			fullName = ((FolderPlace) pc.getWhere()).getToken();
+		} else {
+			fullName = ((MessagePlace) pc.getWhere()).getTokenWrapper().getFolder();
 		}
 		final List<Long> uids = display.getSelectedMessagesIds();
-		DeleteMessageByUidRequest req = requestFactory.deleteMessageByUidRequest();
+		DeleteMessageByUidRequest req = rf.deleteMessageByUidRequest();
 		DeleteMessageByUidAction action = req.create(DeleteMessageByUidAction.class);
 		ImapFolder f = req.create(ImapFolder.class);
 		f.setFullName(fullName);
@@ -489,7 +430,7 @@ public class MessageListActivity extends
 			@Override
 			public void onSuccess(DeleteMessageResult response) {
 				antiSelectMessages(display.getSelectedMessages());
-				refresh();
+//				refresh();
 			}
 		});
 	}

Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/MessageSendActivity.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/MessageSendActivity.java?rev=1522374&r1=1522373&r2=1522374&view=diff
==============================================================================
--- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/MessageSendActivity.java (original)
+++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/MessageSendActivity.java Thu Sep 12 04:39:59 2013
@@ -645,7 +645,7 @@ public class MessageSendActivity extends
 	protected ClickHandler sendClickHandler = new ClickHandler() {
 		public void onClick(ClickEvent event) {
 			if (validate()) {
-				sendReq = requestFactory.sendMessageRequest();
+				sendReq = rf.sendMessageRequest();
 				message = sendReq.create(SmtpMessage.class);
 				List<MessageAttachment> attaches = new ArrayList<MessageAttachment>();
 				for(MessageAttachment attach : attachments){// we must use this, else console will complain a NullPointerException
@@ -675,7 +675,7 @@ public class MessageSendActivity extends
 						}
 					});
 				} else if (type == Type.FORWARD) {
-					SendForwardMessageRequest forwardReq = requestFactory.sendForwardMessageRequest();
+					SendForwardMessageRequest forwardReq = rf.sendForwardMessageRequest();
 					SendForwardMessageAction forwardAction = forwardReq.create(SendForwardMessageAction.class);
 					forwardAction.setMessage(message);
 					forwardAction.setFolder(folder);
@@ -687,7 +687,7 @@ public class MessageSendActivity extends
 						}
 					});
 				} else {
-					SendReplyMessageRequest replyReq = requestFactory.sendReplyMessageRequest();
+					SendReplyMessageRequest replyReq = rf.sendReplyMessageRequest();
 					SendReplyMessageAction replyAction = replyReq.create(SendReplyMessageAction.class);
 					replyAction.setMessage(message);
 					replyAction.setFolder(folder);

Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/ToolBarActivity.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/ToolBarActivity.java?rev=1522374&r1=1522373&r2=1522374&view=diff
==============================================================================
--- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/ToolBarActivity.java (original)
+++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/ToolBarActivity.java Thu Sep 12 04:39:59 2013
@@ -199,21 +199,14 @@ public class ToolBarActivity extends App
 
 	@Inject private Displayable display;
 	@Inject private MessagesCellTable table;
-	@Inject private MessageListActivity messagesDisplay;
+	@Inject private MessageListActivity.Displayable messagesDisplay;
 	@Inject private FolderListActivity.Displayable folderListDisplay;
 	@Inject private HupaController hupaController;
-	// FIXME messagesDisplay can not be injected into ToolBarView, why?
 	private String folderName;
 
-//	@Override
-//	public void onStop() {
-//		// for tool bar work as expected, not to unbind event handlers
-//	}
-
 	@Override
 	public void start(AcceptsOneWidget container, EventBus eventBus) {
 		container.setWidget(display.asWidget());
-//		display.enableAllTools(false);
 		bindTo(eventBus);
 	}
 
@@ -233,7 +226,6 @@ public class ToolBarActivity extends App
 >>>>>>> integrate all of the views to their corresponding activities and mappers
 =======
 	private void bindTo(EventBus eventBus) {
-
 		registerHandler(display.getMarkRead().addClickHandler(new ClickHandler() {
 			@Override
 			public void onClick(ClickEvent event) {
@@ -250,7 +242,6 @@ public class ToolBarActivity extends App
 				display.getPopup().hide();
 			}
 		}));
-
 		registerHandler(display.getDeleteReg());
 		registerHandler(display.getMarkReg());
 		registerHandler(display.getReplyReg());
@@ -266,7 +257,7 @@ public class ToolBarActivity extends App
 				table.markRead(msg, read);
 			}
 		}
-		SetFlagRequest req = this.requestFactory.setFlagRequest();
+		SetFlagRequest req = this.rf.setFlagRequest();
 		SetFlagAction action = req.create(SetFlagAction.class);
 		ImapFolder f = req.create(ImapFolder.class);
 		f.setFullName(folderName);
@@ -277,18 +268,14 @@ public class ToolBarActivity extends App
 		req.set(action).fire(new Receiver<GenericResult>() {
 			@Override
 			public void onSuccess(GenericResult response) {
-				table.refresh();
-//				table.setStyleBaseOnTag();
 				folderListDisplay.refresh();
 				messagesDisplay.refresh();
 				hupaController.hideTopLoading();
 			}
 		});
-
 	}
 
 	public interface Displayable extends WidgetDisplayable {
-
 		void enableSendingTools(boolean is);
 		HandlerRegistration getForwardReg();
 		HandlerRegistration getReplyAllReg();
@@ -297,23 +284,15 @@ public class ToolBarActivity extends App
 		HandlerRegistration getDeleteReg();
 		void enableDealingTools(boolean is);
 		void enableAllTools(boolean is);
-
 		HasClickHandlers getReply();
-
 		HasClickHandlers getReplyAll();
-
 		HasClickHandlers getForward();
-
 		void setParameters(Parameters parameters);
 		Parameters getParameters();
-
 		HasClickHandlers getMarkUnread();
-
 		HasClickHandlers getMarkRead();
-
 		HasClickHandlers getMark();
 		HasClickHandlers getDelete();
-
 		PopupPanel getPopup();
 		HasClickHandlers getCompose();
 	}

Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/TopActivity.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/TopActivity.java?rev=1522374&r1=1522373&r2=1522374&view=diff
==============================================================================
--- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/TopActivity.java (original)
+++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/TopActivity.java Thu Sep 12 04:39:59 2013
@@ -309,6 +309,7 @@ public class TopActivity extends AppBase
 	private void doLogout() {
 		if (user != null) {
 			LogoutUserRequest req = rf.logoutRequest();
+<<<<<<< HEAD
 			req.logout().fire(new Receiver<LogoutUserResult>() {
 				@Override
 				public void onSuccess(LogoutUserResult response) {
@@ -353,6 +354,8 @@ public class TopActivity extends AppBase
 =======
 		if (user != null) {
 			LogoutUserRequest req = requestFactory.logoutRequest();
+=======
+>>>>>>> change message list view to make it not refresh the whole list when click one of the messages
 			req.logout().fire(new Receiver<LogoutUserResult>() {
 				@Override
 				public void onSuccess(LogoutUserResult response) {
@@ -475,6 +478,7 @@ public class TopActivity extends AppBase
 			if (!running) {
 				running = true;
 				IdleRequest req = rf.idleRequest();
+<<<<<<< HEAD
 				IdleAction action = req.create(IdleAction.class);
 				req.idle(action).fire(new Receiver<IdleResult>() {
 
@@ -528,6 +532,8 @@ public class TopActivity extends AppBase
 >>>>>>> introduce the top activity
 =======
 				IdleRequest req = requestFactory.idleRequest();
+=======
+>>>>>>> change message list view to make it not refresh the whole list when click one of the messages
 				IdleAction action = req.create(IdleAction.class);
 				req.idle(action).fire(new Receiver<IdleResult>() {
 

Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/TopBarActivity.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/TopBarActivity.java?rev=1522374&r1=1522373&r2=1522374&view=diff
==============================================================================
--- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/TopBarActivity.java (original)
+++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/TopBarActivity.java Thu Sep 12 04:39:59 2013
@@ -189,7 +189,7 @@ public class TopBarActivity extends AppB
 =======
 =======
 	private void checkSessionUser() {
-		CheckSessionRequest checkSession = requestFactory.sessionRequest();
+		CheckSessionRequest checkSession = rf.sessionRequest();
 		checkSession.getUser().fire(new Receiver<User>() {
 			@Override
 			public void onSuccess(User user) {
@@ -216,21 +216,21 @@ public class TopBarActivity extends AppB
 
 	private void doLogout() {
 		if (user != null) {
-			LogoutUserRequest req = requestFactory.logoutRequest();
+			LogoutUserRequest req = rf.logoutRequest();
 			req.logout().fire(new Receiver<LogoutUserResult>() {
 				@Override
 				public void onSuccess(LogoutUserResult response) {
 					eventBus.fireEvent(new LogoutEvent(response.getUser()));
 					RootLayoutPanel.get().clear();
 					RootLayoutPanel.get().add(loginLayout.get());
-					TopBarActivity.this.placeController.goTo(new DefaultPlace("@"));
+					TopBarActivity.this.pc.goTo(new DefaultPlace("@"));
 				}
 
 				@Override
 				public void onFailure(ServerFailure error) {
 					RootLayoutPanel.get().clear();
 					RootLayoutPanel.get().add(loginLayout.get());
-					TopBarActivity.this.placeController.goTo(new DefaultPlace("@"));
+					TopBarActivity.this.pc.goTo(new DefaultPlace("@"));
 				}
 			});
 		}

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=1522374&r1=1522373&r2=1522374&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 04:39:59 2013
@@ -116,6 +116,7 @@ public class WestActivity extends AppBas
 				}
 
 				GetMessageDetailsRequest req = rf.messageDetailsRequest();
+<<<<<<< HEAD
 				GetMessageDetailsAction action = req.create(GetMessageDetailsAction.class);
 				final ImapFolder f = req.create(ImapFolder.class);
 //				event.getFolder().setFolderTo(f);
@@ -940,6 +941,8 @@ System.out.println("1111111"+response);
 				}
 
 				GetMessageDetailsRequest req = requestFactory.messageDetailsRequest();
+=======
+>>>>>>> change message list view to make it not refresh the whole list when click one of the messages
 				GetMessageDetailsAction action = req.create(GetMessageDetailsAction.class);
 				final ImapFolder f = req.create(ImapFolder.class);
 //				event.getFolder().setFolderTo(f);
@@ -1367,16 +1370,16 @@ System.out.println("1111111"+response);
 =======
 >>>>>>> refactoring.
 	private void showNewMessage() {
-		placeController.goTo(this.messageSendPlaceProvider.get().with(user, null, null, null, Type.NEW));
+		pc.goTo(this.messageSendPlaceProvider.get().with(user, null, null, null, Type.NEW));
 	}
 
 	private void showForwardMessage(ForwardMessageEvent event) {
-		placeController.goTo(this.messageSendPlaceProvider.get().with(event.getUser(), event.getFolder(),
+		pc.goTo(this.messageSendPlaceProvider.get().with(event.getUser(), event.getFolder(),
 		        event.getMessage(), event.getMessageDetails(), Type.FORWARD));
 	}
 
 	private void showReplyMessage(ReplyMessageEvent event) {
-		placeController.goTo(this.messageSendPlaceProvider.get().with(event.getUser(), event.getFolder(),
+		pc.goTo(this.messageSendPlaceProvider.get().with(event.getUser(), event.getFolder(),
 		        event.getMessage(), event.getMessageDetails(), event.getReplyAll() ? Type.REPLY_ALL : Type.REPLY));
 	}
 

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=1522374&r1=1522373&r2=1522374&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 04:39:59 2013
@@ -169,6 +169,7 @@ import org.apache.hupa.client.mapper.App
 <<<<<<< HEAD
 <<<<<<< HEAD
 <<<<<<< HEAD
+<<<<<<< HEAD
 import org.apache.hupa.client.mapper.CachingTopActivityMapper;
 <<<<<<< HEAD
 <<<<<<< HEAD
@@ -221,6 +222,9 @@ import org.apache.hupa.client.mapper.Com
 =======
 =======
 =======
+=======
+import org.apache.hupa.client.mapper.CachingMessageListActivityMapper;
+>>>>>>> change message list view to make it not refresh the whole list when click one of the messages
 import org.apache.hupa.client.mapper.CachingTopBarActivityMapper;
 >>>>>>> fixed issue#46 and issue#32
 import org.apache.hupa.client.mapper.ComposeActivityMapper;

Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mapper/CachingMessageListActivityMapper.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mapper/CachingMessageListActivityMapper.java?rev=1522374&r1=1522373&r2=1522374&view=diff
==============================================================================
--- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mapper/CachingMessageListActivityMapper.java (original)
+++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mapper/CachingMessageListActivityMapper.java Thu Sep 12 04:39:59 2013
@@ -20,9 +20,13 @@
 package org.apache.hupa.client.mapper;
 
 <<<<<<< HEAD
+<<<<<<< HEAD
 import org.apache.hupa.client.place.FolderPlace;
 =======
 >>>>>>> change place management and make refresh folder and message list more gentle
+=======
+import org.apache.hupa.client.place.FolderPlace;
+>>>>>>> change message list view to make it not refresh the whole list when click one of the messages
 import org.apache.hupa.client.place.MessagePlace;
 
 import com.google.gwt.activity.shared.Activity;
@@ -43,6 +47,7 @@ public class CachingMessageListActivityM
 			@Override
 			public Place filter(Place place) {
 <<<<<<< HEAD
+<<<<<<< HEAD
 				return place instanceof MessagePlace ? new FolderPlace(((MessagePlace) place).getTokenWrapper()
 						.getFolder()) : place;
 			}
@@ -57,6 +62,15 @@ public class CachingMessageListActivityM
 
 		filteredActivityMapper = new FilteredActivityMapper(filter, new CachingActivityMapper(messageListActivityMapper));
 >>>>>>> change place management and make refresh folder and message list more gentle
+=======
+				return place instanceof MessagePlace ? new FolderPlace(((MessagePlace) place).getTokenWrapper()
+						.getFolder()) : place;
+			}
+		};
+
+		filteredActivityMapper = new FilteredActivityMapper(filter,
+				new CachingActivityMapper(messageListActivityMapper));
+>>>>>>> change message list view to make it not refresh the whole list when click one of the messages
 	}
 
 	@Override

Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mapper/MessageListActivityMapper.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mapper/MessageListActivityMapper.java?rev=1522374&r1=1522373&r2=1522374&view=diff
==============================================================================
--- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mapper/MessageListActivityMapper.java (original)
+++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mapper/MessageListActivityMapper.java Thu Sep 12 04:39:59 2013
@@ -124,7 +124,15 @@ public class MessageListActivityMapper e
 			return null;
 =======
 	protected Activity lazyLoadActivity(final Place place) {
+<<<<<<< HEAD
 >>>>>>> change place management and make refresh folder and message list more gentle
+=======
+		if (place instanceof FolderPlace) {
+			return messageListActivityProvider.get().with(((FolderPlace) place).getToken());
+		} else if(place instanceof MessagePlace){
+			return messageListActivityProvider.get().with(((MessagePlace) place).getTokenWrapper().getFolder());
+		}
+>>>>>>> change message list view to make it not refresh the whole list when click one of the messages
 		return new ActivityAsyncProxy() {
 			@Override
 			protected void doAsync(RunAsyncCallback callback) {

Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/place/FolderPlace.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/place/FolderPlace.java?rev=1522374&r1=1522373&r2=1522374&view=diff
==============================================================================
--- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/place/FolderPlace.java (original)
+++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/place/FolderPlace.java Thu Sep 12 04:39:59 2013
@@ -232,6 +232,7 @@ public class FolderPlace extends HupaPla
 			return place.getToken();
 		}
 	}
+<<<<<<< HEAD
 <<<<<<< HEAD:client/src/main/java/org/apache/hupa/client/place/IMAPMessagePlace.java
 
 <<<<<<< HEAD
@@ -265,4 +266,26 @@ public class FolderPlace extends HupaPla
 >>>>>>> make reload message content work, use the same place with folder list, while separated with slash, that looks like Gmail's
 =======
 >>>>>>> change place management and make refresh folder and message list more gentle:client/src/main/java/org/apache/hupa/client/place/FolderPlace.java
+=======
+//
+//	@Override
+//	public boolean equals(Object o) {
+//		if (o == null)
+//			return false;
+//		if (o == this)
+//			return true;
+//		if (o.getClass() != getClass())
+//			return false;
+//		FolderPlace place = (FolderPlace) o;
+//		return (token == place.token || (token != null && token.equals(place.token)));
+//	}
+//
+//	@Override
+//	public int hashCode() {
+//		final int prime = 31;
+//		int result = 1;
+//		result = prime * result + ((token == null) ? 0 : token.hashCode());
+//		return result;
+//	}
+>>>>>>> change message list view to make it not refresh the whole list when click one of the messages
 }

Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/ContentSplitLayoutPanel.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/ContentSplitLayoutPanel.java?rev=1522374&r1=1522373&r2=1522374&view=diff
==============================================================================
--- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/ContentSplitLayoutPanel.java (original)
+++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/ContentSplitLayoutPanel.java Thu Sep 12 04:39:59 2013
@@ -1,6 +1,5 @@
 package org.apache.hupa.client.ui;
 
-import com.google.gwt.core.client.Scheduler;
 import com.google.gwt.user.client.ui.SplitLayoutPanel;
 import com.google.inject.Inject;
 
@@ -14,15 +13,4 @@ public class ContentSplitLayoutPanel ext
 	public ContentSplitLayoutPanel(int splitterSize){
 		super(splitterSize);
 	}
-
-	@Override
-	public void onResize() {
-		super.onResize();
-		Scheduler.get().scheduleDeferred(new Scheduler.ScheduledCommand() {
-			@Override
-			public void execute() {
-				table.refresh();
-			}
-		});
-	}
 }

Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/FolderListView.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/FolderListView.java?rev=1522374&r1=1522373&r2=1522374&view=diff
==============================================================================
--- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/FolderListView.java (original)
+++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/FolderListView.java Thu Sep 12 04:39:59 2013
@@ -271,8 +271,12 @@ public class FolderListView extends Comp
 =======
 		this.viewModel = viewModel;
 		cellTree = new CellTree(viewModel,null,Resources.INSTANCE);
+<<<<<<< HEAD
 >>>>>>> try to rearrange the places and history managment.
 		cellTree.setAnimationEnabled(true);
+=======
+//		cellTree.setAnimationEnabled(true);
+>>>>>>> change message list view to make it not refresh the whole list when click one of the messages
 		thisView.add(cellTree);
 >>>>>>> fixed issue#45, issue#47, issue#51. change the layout of composite, don't use contact instead of folders list
 	}

Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/FolderListView.ui.xml
URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/FolderListView.ui.xml?rev=1522374&r1=1522373&r2=1522374&view=diff
==============================================================================
--- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/FolderListView.ui.xml (original)
+++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/FolderListView.ui.xml Thu Sep 12 04:39:59 2013
@@ -12,6 +12,7 @@
 <ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
 <<<<<<< HEAD
 <<<<<<< HEAD
+<<<<<<< HEAD
 	xmlns:g='urn:import:com.google.gwt.user.client.ui'>
 <<<<<<< HEAD
 	<g:SimplePanel ui:field="thisView" />
@@ -34,6 +35,9 @@
 	</g:SimplePanel>
 >>>>>>> make login page as one part of the overall layout & splite layout to little one
 =======
+=======
+	xmlns:g='urn:import:com.google.gwt.user.client.ui'>
+>>>>>>> change message list view to make it not refresh the whole list when click one of the messages
 	<g:SimplePanel ui:field="thisView" />
 >>>>>>> make compose panel left another widget rather than cell tree
 </ui:UiBinder>
\ No newline at end of file

Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/FoldersTreeViewModel.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/FoldersTreeViewModel.java?rev=1522374&r1=1522373&r2=1522374&view=diff
==============================================================================
--- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/FoldersTreeViewModel.java (original)
+++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/FoldersTreeViewModel.java Thu Sep 12 04:39:59 2013
@@ -22,6 +22,7 @@ package org.apache.hupa.client.ui;
 import java.util.List;
 
 import org.apache.hupa.client.HupaController;
+import org.apache.hupa.client.activity.MessageListActivity;
 import org.apache.hupa.client.activity.NotificationActivity;
 import org.apache.hupa.client.activity.ToolBarActivity;
 import org.apache.hupa.client.place.FolderPlace;
@@ -52,6 +53,7 @@ public class FoldersTreeViewModel implem
 	@Inject private PlaceController placeController;
 	@Inject private NotificationActivity.Displayable notice;
 	@Inject private ToolBarActivity.Displayable toolBar;
+	@Inject private MessageListActivity.Displayable msgListDisplay;
 
 	@Inject
 	public FoldersTreeViewModel() {
@@ -63,6 +65,7 @@ public class FoldersTreeViewModel implem
 				SingleSelectionModel<ImapFolder> selectionModel = (SingleSelectionModel<ImapFolder>) event.getSource();
 				toolBar.enableAllTools(false);
 				placeController.goTo(new FolderPlace(selectionModel.getSelectedObject().getFullName()));
+				msgListDisplay.refresh();
 			}
 		});
 	}
@@ -109,13 +112,13 @@ public class FoldersTreeViewModel implem
 		}
 
 		// TODO is this a click event?
-		@Override
-		public void onBrowserEvent(Context context, Element parent, ImapFolder value, NativeEvent event,
-				ValueUpdater<ImapFolder> valueUpdater) {
-			super.onBrowserEvent(context, parent, value, event, valueUpdater);
-				placeController.goTo(new FolderPlace(value.getFullName()));
-
-		}
+//		@Override
+//		public void onBrowserEvent(Context context, Element parent, ImapFolder value, NativeEvent event,
+//				ValueUpdater<ImapFolder> valueUpdater) {
+//			super.onBrowserEvent(context, parent, value, event, valueUpdater);
+//				placeController.goTo(new FolderPlace(value.getFullName()));
+//
+//		}
 
 	}
 

Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessageListView.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessageListView.java?rev=1522374&r1=1522373&r2=1522374&view=diff
==============================================================================
--- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessageListView.java (original)
+++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessageListView.java Thu Sep 12 04:39:59 2013
@@ -36,6 +36,7 @@ import java.util.logging.Logger;
 import org.apache.hupa.client.activity.MessageListActivity;
 <<<<<<< HEAD
 <<<<<<< HEAD
+<<<<<<< HEAD
 import org.apache.hupa.shared.domain.Message;
 
 import com.google.gwt.core.client.GWT;
@@ -86,28 +87,32 @@ import java.util.Set;
 import org.apache.hupa.client.activity.MessageListActivity;
 >>>>>>> scrub code
 import org.apache.hupa.client.rf.HupaRequestFactory;
+=======
+>>>>>>> change message list view to make it not refresh the whole list when click one of the messages
 import org.apache.hupa.shared.domain.Message;
 
 >>>>>>> integrate all of the views to their corresponding activities and mappers
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.event.shared.EventBus;
-import com.google.gwt.place.shared.PlaceController;
 import com.google.gwt.uibinder.client.UiBinder;
 import com.google.gwt.uibinder.client.UiField;
 import com.google.gwt.user.cellview.client.DataGrid;
 import com.google.gwt.user.client.ui.Composite;
+import com.google.gwt.user.client.ui.SimpleLayoutPanel;
+import com.google.gwt.user.client.ui.SimplePanel;
 import com.google.gwt.view.client.MultiSelectionModel;
 import com.google.inject.Inject;
 
 public class MessageListView extends Composite implements MessageListActivity.Displayable {
 
-	@UiField(provided = true) MessagesCellTable grid;
+	@UiField SimplePanel thisView;
+	private MessagesCellTable grid;
 
 	@Inject
-	public MessageListView(final EventBus eventBus, final HupaRequestFactory requestFactory,
-			final PlaceController placeController, final MessagesCellTable table) {
-		grid = table;
+	public MessageListView(final EventBus eventBus, final MessagesCellTable table) {
 		initWidget(binder.createAndBindUi(this));
+		grid = table;
+		thisView.add(grid);
 	}
 <<<<<<< HEAD
 <<<<<<< HEAD
@@ -171,9 +176,13 @@ public class MessageListView extends Com
 >>>>>>> let messages list activity make use of mvp
 =======
 
+<<<<<<< HEAD
 >>>>>>> fixed issue#59, coupled with fixing some UI refreshment issues in toolsbar
 	interface MessageListUiBinder extends UiBinder<DataGrid<Message>, MessageListView> {
 >>>>>>> coping with reply and forward sending message
+=======
+	interface MessageListUiBinder extends UiBinder<SimpleLayoutPanel, MessageListView> {
+>>>>>>> change message list view to make it not refresh the whole list when click one of the messages
 	}
 
 	private static MessageListUiBinder binder = GWT.create(MessageListUiBinder.class);
@@ -235,6 +244,11 @@ public class MessageListView extends Com
 	public MessagesCellTable getGrid() {
 		return grid;
 	}
+	
+	@Override
+	public void refresh(){
+		grid.refresh();
+	}
 
 <<<<<<< HEAD
 <<<<<<< HEAD
@@ -253,11 +267,6 @@ public class MessageListView extends Com
 		return selecteds;
 	}
 
-	@Override
-	public void refresh() {
-		grid.refresh();
-	}
-
 	@SuppressWarnings("unchecked")
 	@Override
 	public Set<Message> getSelectedMessages() {

Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessageListView.ui.xml
URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessageListView.ui.xml?rev=1522374&r1=1522373&r2=1522374&view=diff
==============================================================================
--- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessageListView.ui.xml (original)
+++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessageListView.ui.xml Thu Sep 12 04:39:59 2013
@@ -14,6 +14,7 @@
 <<<<<<< HEAD
 <<<<<<< HEAD
 <<<<<<< HEAD
+<<<<<<< HEAD
     xmlns:g='urn:import:com.google.gwt.user.client.ui'>
 	<g:SimpleLayoutPanel ui:field="thisView" />
 =======
@@ -52,4 +53,8 @@
 =======
 	<hupa:MessagesCellTable ui:field="grid" />
 >>>>>>> try to link the mark actions to rf services
+=======
+    xmlns:g='urn:import:com.google.gwt.user.client.ui'>
+	<g:SimpleLayoutPanel ui:field="thisView" />
+>>>>>>> change message list view to make it not refresh the whole list when click one of the messages
 </ui:UiBinder>
\ No newline at end of file

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=1522374&r1=1522373&r2=1522374&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 04:39:59 2013
@@ -503,9 +503,21 @@ import java.util.Date;
 import java.util.List;
 
 import org.apache.hupa.client.HupaConstants;
+import org.apache.hupa.client.HupaController;
 import org.apache.hupa.client.activity.ToolBarActivity;
 import org.apache.hupa.client.bundles.HupaImageBundle;
+import org.apache.hupa.client.place.AbstractPlace;
+import org.apache.hupa.client.place.FolderPlace;
+import org.apache.hupa.client.place.MessagePlace;
+import org.apache.hupa.client.rf.FetchMessagesRequest;
+import org.apache.hupa.client.rf.GetMessageDetailsRequest;
+import org.apache.hupa.client.rf.HupaRequestFactory;
 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.GetMessageDetailsAction;
+import org.apache.hupa.shared.domain.GetMessageDetailsResult;
+import org.apache.hupa.shared.domain.ImapFolder;
 import org.apache.hupa.shared.domain.Message;
 
 import com.google.gwt.cell.client.CheckboxCell;
@@ -517,15 +529,23 @@ import com.google.gwt.cell.client.ValueU
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.dom.client.Style.Unit;
 import com.google.gwt.i18n.client.DateTimeFormat;
+import com.google.gwt.place.shared.Place;
+import com.google.gwt.place.shared.PlaceController;
 import com.google.gwt.resources.client.ImageResource;
 import com.google.gwt.user.cellview.client.Column;
 import com.google.gwt.user.cellview.client.DataGrid;
 import com.google.gwt.user.cellview.client.Header;
 import com.google.gwt.user.cellview.client.RowStyles;
+import com.google.gwt.view.client.AsyncDataProvider;
 import com.google.gwt.view.client.DefaultSelectionEventManager;
+import com.google.gwt.view.client.HasData;
 import com.google.gwt.view.client.MultiSelectionModel;
+import com.google.gwt.view.client.NoSelectionModel;
 import com.google.gwt.view.client.ProvidesKey;
+import com.google.gwt.view.client.SelectionChangeEvent;
 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> {
 
@@ -563,13 +583,75 @@ public class MessagesCellTable extends D
 		}
 	};
 	private final MultiSelectionModel<? super Message> selectionModel = new MultiSelectionModel<Message>(KEY_PROVIDER);
+	public final NoSelectionModel<Message> noSelectionModel = new NoSelectionModel<Message>(KEY_PROVIDER);
 
+	PlaceController pc;
+	HupaRequestFactory rf;
+
+	private MessageListDataProvider dataProvider;
+
+	public class MessageListDataProvider extends AsyncDataProvider<Message> implements HasRefresh {
+
+		HasData<Message> display;
+
+		@Override
+		public void addDataDisplay(HasData<Message> display) {
+			super.addDataDisplay(display);
+			this.display = display;
+		}
+
+		@Override
+		public void refresh() {
+			this.onRangeChanged(display);
+		}
+
+		@Override
+		protected void onRangeChanged(HasData<Message> display) {
+			FetchMessagesRequest req = rf.messagesRequest();
+			FetchMessagesAction action = req.create(FetchMessagesAction.class);
+			final ImapFolder f = req.create(ImapFolder.class);
+			f.setFullName(parseFolderName(pc));
+			action.setFolder(f);
+			action.setOffset(display.getVisibleRange().getLength());
+			action.setSearchString(searchValue);
+			action.setStart(display.getVisibleRange().getStart());
+			req.fetch(action).fire(new Receiver<FetchMessagesResult>() {
+				@Override
+				public void onSuccess(final FetchMessagesResult response) {
+					if (response == null || response.getRealCount() == 0) {
+						updateRowCount(-1, true);
+					} else {
+						updateRowData(0, response.getMessages());
+					}
+					hc.hideTopLoading();
+				}
+
+				@Override
+				public void onFailure(ServerFailure error) {
+					if (error.isFatal()) {
+						throw new RuntimeException(error.getMessage());
+					}
+					hc.hideTopLoading();
+				}
+			});
+
+		}
+
+	}
+
+	@Inject private ToolBarActivity.Displayable toolBar;
+	private String folderName;
+	private String searchValue;
+	@Inject protected HupaController hc;
 	@Inject
-	public MessagesCellTable(final HupaImageBundle imageBundle, final HupaConstants constants) {
+	public MessagesCellTable(final HupaImageBundle imageBundle, final HupaConstants constants, 
+			final PlaceController pc,
+			final HupaRequestFactory rf) {
 		super(PAGE_SIZE, Resources.INSTANCE);
-
+		this.pc = pc;
+		this.rf = rf;
 		this.imageBundle = imageBundle;
-
+		
 		CheckboxCell headerCheckbox = new CheckboxCell();
 		ImageResourceCell headerAttached = new ImageResourceCell();
 		Header<Boolean> header = new Header<Boolean>(headerCheckbox) {
@@ -609,8 +691,66 @@ public class MessagesCellTable extends D
 		// redraw();
 		setKeyboardSelectionPolicy(KeyboardSelectionPolicy.DISABLED);
 		setAutoHeaderRefreshDisabled(true);
-		setSelectionModel(selectionModel, DefaultSelectionEventManager.<Message> createCheckboxManager(0));
+//		setSelectionModel(selectionModel, DefaultSelectionEventManager.<Message> createCheckboxManager(0));
+
+		setSelectionModel(noSelectionModel, DefaultSelectionEventManager.<Message> createBlacklistManager(0));
+
+		noSelectionModel.addSelectionChangeHandler(new SelectionChangeEvent.Handler() {
+			@Override
+			public void onSelectionChange(SelectionChangeEvent event) {
+				message = noSelectionModel.getLastSelectedObject();
+				GetMessageDetailsRequest req = rf.messageDetailsRequest();
+				GetMessageDetailsAction action = req.create(GetMessageDetailsAction.class);
+				final ImapFolder f = req.create(ImapFolder.class);
+
+				f.setFullName(parseFolderName(pc));
+				action.setFolder(f);
+				action.setUid(message.getUid());
+				req.get(action).fire(new Receiver<GetMessageDetailsResult>() {
+					@Override
+					public void onSuccess(GetMessageDetailsResult response) {
+						// display.getGrid().getSelectionModel().setSelected(event.getValue(),
+						// true);
+//						noSelectionModel.setSelected(message, true);
+						toolBar.enableAllTools(true);
+						MessagePlace place = new MessagePlace(folderName + AbstractPlace.SPLITTER + message.getUid());
+						refresh();
+						pc.goTo(place);
+					}
+
+					@Override
+					public void onFailure(ServerFailure error) {
+						if (error.isFatal()) {
+							// log.log(Level.SEVERE, error.getMessage());
+							// TODO write the error message to
+							// status bar.
+							// toolBar.enableAllTools(false);
+							throw new RuntimeException(error.getMessage());
+						}
+					}
+				});
+			}
+
+		});
+
+		if (dataProvider == null) {
+			dataProvider = new MessageListDataProvider();
+			dataProvider.addDataDisplay(this);
+		}
+		refresh();
+	}
+
+
+	private String parseFolderName(final PlaceController pc) {
+		Place place = pc.getWhere();
+		if(place instanceof FolderPlace){
+			folderName= ((FolderPlace)place).getToken();
+		}else if (place instanceof MessagePlace){
+			folderName = ((MessagePlace)place).getTokenWrapper().getFolder();
+		}
+		return folderName;
 	}
+	Message message; // the object selected by selectionModel
 
 	public String getMessageStyle(Message row) {
 		return haveRead(row) ? getReadStyle() : getUnreadStyle();
@@ -700,17 +840,6 @@ public class MessagesCellTable extends D
 			return object.getReceivedDate();
 		}
 	}
-	
-	@Override
-	public void onResize(){
-		super.onResize();
-		refresh();
-	}
-
-	public void refresh() {
-//		redraw();
-//		flush();
-	}
 
 	public void setStyleBaseOnTag() {
 		setRowStyles(new RowStyles<Message>() {
@@ -720,6 +849,9 @@ public class MessagesCellTable extends D
 			}
 		});
 	}
+	public void refresh() {
+		dataProvider.refresh();
+	}
 
 }
 >>>>>>> fix some bugs related to RF, and try to use new CellView to replace gwt-incubator 



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