Author: dongxu Date: Thu Sep 12 04:24:21 2013 New Revision: 1522342 URL: http://svn.apache.org/r1522342 Log: fixed issue#59, coupled with fixing some UI refreshment issues in toolsbar
Modified: 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/ToolBarActivity.java james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ioc/AppGinModule.java james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessageListView.java james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/ToolBarView.java 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=1522342&r1=1522341&r2=1522342&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:24:21 2013 @@ -23,6 +23,7 @@ package org.apache.hupa.client.activity; <<<<<<< HEAD <<<<<<< HEAD <<<<<<< HEAD +<<<<<<< HEAD import java.util.Collection; import java.util.List; import java.util.Set; @@ -252,10 +253,15 @@ import org.apache.hupa.client.rf.GetMess import org.apache.hupa.client.place.MailFolderPlace; >>>>>>> make reload message content work, use the same place with folder list, >>>>>>> while separated with slash, that looks like Gmail's ======= +======= +import java.util.Collection; +>>>>>>> fixed issue#59, coupled with fixing some UI refreshment issues in toolsbar import java.util.List; +import java.util.Set; import org.apache.hupa.client.place.DefaultPlace; import org.apache.hupa.client.place.MailFolderPlace; +import org.apache.hupa.client.rf.DeleteMessageByUidRequest; import org.apache.hupa.client.rf.FetchMessagesRequest; import org.apache.hupa.client.rf.GetMessageDetailsRequest; import org.apache.hupa.client.rf.HupaRequestFactory; @@ -263,6 +269,8 @@ import org.apache.hupa.client.ui.Message >>>>>>> let messages list activity make use of mvp import org.apache.hupa.client.ui.WidgetDisplayable; import org.apache.hupa.shared.data.ImapFolderImpl; +import org.apache.hupa.shared.domain.DeleteMessageByUidAction; +import org.apache.hupa.shared.domain.DeleteMessageResult; import org.apache.hupa.shared.domain.FetchMessagesAction; import org.apache.hupa.shared.domain.FetchMessagesResult; import org.apache.hupa.shared.domain.GetMessageDetailsAction; @@ -305,11 +313,7 @@ public class MessageListActivity extends @Override public void onCellPreview(final CellPreviewEvent<Message> event) { if (hasClickedButFirstCol(event)) { - List<Message> displayedItems = display.getGrid().getVisibleItems(); - for (Message msg : displayedItems) { - display.getGrid().getSelectionModel().setSelected(msg, false); - toolBarDisplay.enableAllTools(false); - } + antiSelectMessages(display.getGrid().getVisibleItems()); GetMessageDetailsRequest req = requestFactory.messageDetailsRequest(); GetMessageDetailsAction action = req.create(GetMessageDetailsAction.class); final ImapFolder f = req.create(ImapFolder.class); @@ -424,12 +428,41 @@ 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(); + + List<Long> getSelectedMessagesIds(); + + void refresh(); + + Set<Message> getSelectedMessages(); } public void setFolder(ImapFolder folder) { this.folder = folder; - // if (folder != null) - // fetch(0); + } + + private void antiSelectMessages(Collection<Message> c) { + for (Message msg : c) { + display.getGrid().getSelectionModel().setSelected(msg, false); + toolBarDisplay.enableAllTools(false); + } + } + public void deleteSelectedMessages() { + MailFolderPlace currentPlace = (MailFolderPlace) placeController.getWhere(); + final List<Long> uids = display.getSelectedMessagesIds(); + DeleteMessageByUidRequest req = requestFactory.deleteMessageByUidRequest(); + DeleteMessageByUidAction action = req.create(DeleteMessageByUidAction.class); + ImapFolder f = req.create(ImapFolder.class); + f.setFullName(currentPlace.getFullName()); + action.setMessageUids(uids); + action.setFolder(f); + req.delete(action).fire(new Receiver<DeleteMessageResult>() { + @Override + public void onSuccess(DeleteMessageResult response) { + fetch(0); + antiSelectMessages(display.getSelectedMessages()); + display.refresh(); + } + }); } >>>>>>> prepare for message content panel } 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=1522342&r1=1522341&r2=1522342&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:24:21 2013 @@ -26,7 +26,11 @@ package org.apache.hupa.client.activity; import java.util.ArrayList; import java.util.List; +<<<<<<< HEAD import org.apache.hupa.client.place.FolderPlace; +======= +import org.apache.hupa.client.place.MailFolderPlace; +>>>>>>> fixed issue#59, coupled with fixing some UI refreshment issues in toolsbar import org.apache.hupa.client.rf.SetFlagRequest; import org.apache.hupa.client.ui.MessagesCellTable; import org.apache.hupa.client.ui.ToolBarView.Parameters; @@ -169,10 +173,6 @@ import org.apache.hupa.shared.domain.Gen import org.apache.hupa.shared.domain.ImapFolder; import org.apache.hupa.shared.domain.Message; import org.apache.hupa.shared.domain.SetFlagAction; -import org.apache.hupa.shared.events.LoadMessagesEvent; -import org.apache.hupa.shared.events.LoadMessagesEventHandler; -import org.apache.hupa.shared.events.LoginEvent; -import org.apache.hupa.shared.events.LoginEventHandler; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; @@ -188,6 +188,9 @@ public class ToolBarActivity extends App @Inject private Displayable display; @Inject private MessagesCellTable table; + @Inject private MessageListActivity.Displayable messagesDisplay; + @Inject private MessageListActivity messageListActivity; + //FIXME messagesDisplay can not be injected into ToolBarView, why? private String folderName; @Override @@ -208,17 +211,6 @@ public class ToolBarActivity extends App >>>>>>> integrate all of the views to their corresponding activities and >>>>>>> mappers ======= private void bindTo(EventBus eventBus) { - eventBus.addHandler(LoginEvent.TYPE, new LoginEventHandler() { - @Override - public void onLogin(LoginEvent e) { - display.setParameters(new Parameters(e.getUser(), null, null, null)); - } - }); - eventBus.addHandler(LoadMessagesEvent.TYPE, new LoadMessagesEventHandler() { - public void onLoadMessagesEvent(LoadMessagesEvent loadMessagesEvent) { - display.enableAllTools(false); - } - }); registerHandler(display.getMark().addClickHandler(new ClickHandler() { public void onClick(ClickEvent event) { // Reposition the popup relative to the button @@ -244,6 +236,15 @@ public class ToolBarActivity extends App display.getPopup().hide(); } })); + registerHandler(display.getDelete().addClickHandler(new ClickHandler(){ + + @Override + public void onClick(ClickEvent event) { + if (!(placeController.getWhere() instanceof MailFolderPlace)) + return; + messageListActivity.deleteSelectedMessages(); + } + })); } protected void toMarkRead(boolean read) { @@ -289,6 +290,7 @@ public class ToolBarActivity extends App HasClickHandlers getMarkRead(); HasClickHandlers getMark(); + HasClickHandlers getDelete(); PopupPanel getPopup(); } 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=1522342&r1=1522341&r2=1522342&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:24:21 2013 @@ -515,7 +515,7 @@ public class AppGinModule extends Abstra bind(NavigationActivity.Displayable.class).to(NavigationView.class); bind(ToolBarActivity.Displayable.class).to(ToolBarView.class).in(Singleton.class); // bind(FolderListActivity.Displayable.class).to(FolderListView.class); - bind(MessageListActivity.Displayable.class).to(MessageListView.class); + bind(MessageListActivity.Displayable.class).to(MessageListView.class).in(Singleton.class); bind(MessageListFooterActivity.Displayable.class).to(MessageListFooterView.class); bind(MessageContentActivity.Displayable.class).to(MessageContentView.class); bind(StatusActivity.Displayable.class).to(StatusView.class); 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=1522342&r1=1522341&r2=1522342&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:24:21 2013 @@ -23,6 +23,7 @@ package org.apache.hupa.client.ui; <<<<<<< HEAD <<<<<<< HEAD <<<<<<< HEAD +<<<<<<< HEAD import java.util.ArrayList; import java.util.List; <<<<<<< HEAD @@ -76,6 +77,12 @@ import org.apache.hupa.client.place.Mail import org.apache.hupa.client.rf.FetchMessagesRequest; import org.apache.hupa.client.rf.GetMessageDetailsRequest; ======= +======= +import java.util.ArrayList; +import java.util.List; +import java.util.Set; + +>>>>>>> fixed issue#59, coupled with fixing some UI refreshment issues in toolsbar import org.apache.hupa.client.activity.MessageListActivity; >>>>>>> scrub code import org.apache.hupa.client.rf.HupaRequestFactory; @@ -89,12 +96,12 @@ import com.google.gwt.uibinder.client.Ui 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.view.client.MultiSelectionModel; import com.google.inject.Inject; public class MessageListView extends Composite implements MessageListActivity.Displayable { @UiField(provided = true) MessagesCellTable grid; - @Inject public MessageListView(final EventBus eventBus, final HupaRequestFactory requestFactory, @@ -103,6 +110,7 @@ public class MessageListView extends Com initWidget(binder.createAndBindUi(this)); } <<<<<<< HEAD +<<<<<<< HEAD public void fetch(final int start) { FetchMessagesRequest req = requestFactory.messagesRequest(); @@ -161,6 +169,9 @@ public class MessageListView extends Com ======= ======= >>>>>>> let messages list activity make use of mvp +======= + +>>>>>>> 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 } @@ -170,6 +181,7 @@ public class MessageListView extends Com <<<<<<< HEAD <<<<<<< HEAD <<<<<<< HEAD +<<<<<<< HEAD @Override public MessagesCellTable getGrid() { return grid; @@ -217,14 +229,43 @@ public class MessageListView extends Com ======= >>>>>>> let messages list activity make use of mvp +======= +>>>>>>> fixed issue#59, coupled with fixing some UI refreshment issues in toolsbar @Override public MessagesCellTable getGrid() { return grid; } <<<<<<< HEAD +<<<<<<< HEAD >>>>>>> prepare for place management and history controller ======= +======= + @Override + public List<Long> getSelectedMessagesIds() { + List<Long> selecteds = new ArrayList<Long>(); + MultiSelectionModel<? super Message> selectionModel = (MultiSelectionModel<? super Message>) grid + .getSelectionModel(); + selectionModel.getSelectedSet(); + for (Message msg : getSelectedMessages()) { + selecteds.add(msg.getUid()); + } + return selecteds; + } + + @Override + public void refresh() { + grid.refresh(); + } + + @SuppressWarnings("unchecked") + @Override + public Set<Message> getSelectedMessages() { + MultiSelectionModel<? super Message> selectionModel = (MultiSelectionModel<? super Message>) grid + .getSelectionModel(); + return (Set<Message>) selectionModel.getSelectedSet(); + } +>>>>>>> fixed issue#59, coupled with fixing some UI refreshment issues in toolsbar >>>>>>> let messages list activity make use of mvp } Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/ToolBarView.java URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/ToolBarView.java?rev=1522342&r1=1522341&r2=1522342&view=diff ============================================================================== --- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/ToolBarView.java (original) +++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/ToolBarView.java Thu Sep 12 04:24:21 2013 @@ -22,6 +22,7 @@ package org.apache.hupa.client.ui; <<<<<<< HEAD <<<<<<< HEAD <<<<<<< HEAD +<<<<<<< HEAD import org.apache.hupa.client.activity.ToolBarActivity; import org.apache.hupa.client.place.ComposePlace; <<<<<<< HEAD @@ -35,13 +36,17 @@ import org.apache.hupa.shared.events.Del ======= import java.util.ArrayList; +======= +>>>>>>> fixed issue#59, coupled with fixing some UI refreshment issues in toolsbar import org.apache.hupa.client.activity.ToolBarActivity; import org.apache.hupa.client.place.ComposePlace; -import org.apache.hupa.client.rf.DeleteMessageByUidRequest; import org.apache.hupa.client.rf.HupaRequestFactory; +<<<<<<< HEAD import org.apache.hupa.shared.domain.DeleteMessageByUidAction; import org.apache.hupa.shared.domain.DeleteMessageResult; >>>>>>> fill the empty compose view with the old message when the composing >>>>>>> type are reply, replyAll, forward and preparing for about & deleting >>>>>>> operation +======= +>>>>>>> fixed issue#59, coupled with fixing some UI refreshment issues in toolsbar import org.apache.hupa.shared.domain.ImapFolder; import org.apache.hupa.shared.domain.Message; import org.apache.hupa.shared.domain.MessageDetails; @@ -375,12 +380,11 @@ import com.google.gwt.user.client.ui.Pop import com.google.gwt.user.client.ui.VerticalPanel; import com.google.gwt.user.client.ui.Widget; import com.google.inject.Inject; -import com.google.web.bindery.requestfactory.shared.Receiver; public class ToolBarView extends Composite implements ToolBarActivity.Displayable { - @Inject PlaceController placeController; - @Inject protected HupaRequestFactory requestFactory; + @Inject private PlaceController placeController; + @Inject private HupaRequestFactory requestFactory; @UiField Anchor refresh; @UiField Anchor compose; @@ -487,27 +491,6 @@ public class ToolBarView extends Composi placeController.goTo(new ComposePlace("forward").with(parameters)); } - @UiHandler("delete") - void handleDeleteClick(ClickEvent e) { - if (null == parameters) - return; - ArrayList<Long> uidList = new ArrayList<Long>(); - uidList.add(parameters.getOldmessage().getUid()); - DeleteMessageByUidRequest req = requestFactory.deleteMessageByUidRequest(); - DeleteMessageByUidAction action = req.create(DeleteMessageByUidAction.class); - ImapFolder f = req.create(ImapFolder.class); - f.setFullName(parameters.getFolder().getFullName()); - action.setMessageUids(uidList); - action.setFolder(f); - req.delete(action).fire(new Receiver<DeleteMessageResult>() { - @Override - public void onSuccess(DeleteMessageResult response) { - // TODO how to refresh the message list - placeController.goTo(placeController.getWhere()); - } - }); - } - public ToolBarView() { initWidget(binder.createAndBindUi(this)); <<<<<<< HEAD @@ -586,6 +569,11 @@ public class ToolBarView extends Composi } @Override + public HasClickHandlers getDelete() { + return delete; + } + + @Override public void enableAllTools(boolean is) { this.enableSendingTools(is); this.enableDealingTools(is); --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org