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