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 04:06:31 UTC
svn commit: r1522115 - in
/james/hupa/trunk/client/src/main/java/org/apache/hupa/client: activity/
ioc/ mvp/ place/ ui/
Author: dongxu
Date: Thu Sep 12 02:06:30 2013
New Revision: 1522115
URL: http://svn.apache.org/r1522115
Log: (empty)
Added:
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/CachingTopActivityMapper.java
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/CachingWestActivityMapper.java
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/place/IMAPMessagePlace.java
Removed:
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/place/MailPlace.java
Modified:
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/IMAPMessageListActivity.java
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/TopActivity.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/place/MailInboxPlace.java
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/place/MessageSendPlace.java
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/IMAPMessageListView.java
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/WestView.java
Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/IMAPMessageListActivity.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/IMAPMessageListActivity.java?rev=1522115&r1=1522114&r2=1522115&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 02:06:30 2013
@@ -380,25 +380,53 @@ import java.util.ArrayList;
import net.customware.gwt.dispatch.client.DispatchAsync;
+import org.apache.hupa.client.HandlerRegistrationAdapter;
+import org.apache.hupa.client.HupaCallback;
+import org.apache.hupa.client.HupaEvoCallback;
import org.apache.hupa.client.mvp.WidgetDisplayable;
import org.apache.hupa.client.place.MailInboxPlace;
import org.apache.hupa.client.widgets.HasDialog;
import org.apache.hupa.shared.data.IMAPFolder;
import org.apache.hupa.shared.data.Message;
import org.apache.hupa.shared.data.User;
+import org.apache.hupa.shared.data.Message.IMAPFlag;
import org.apache.hupa.shared.events.DecreaseUnseenEvent;
import org.apache.hupa.shared.events.ExpandMessageEvent;
+import org.apache.hupa.shared.events.FolderSelectionEvent;
+import org.apache.hupa.shared.events.FolderSelectionEventHandler;
+import org.apache.hupa.shared.events.IncreaseUnseenEvent;
+import org.apache.hupa.shared.events.LoadMessagesEvent;
import org.apache.hupa.shared.events.LogoutEvent;
import org.apache.hupa.shared.events.LogoutEventHandler;
+import org.apache.hupa.shared.events.MessagesReceivedEvent;
+import org.apache.hupa.shared.events.MessagesReceivedEventHandler;
+import org.apache.hupa.shared.events.MoveMessageEvent;
+import org.apache.hupa.shared.events.MoveMessageEventHandler;
+import org.apache.hupa.shared.events.NewMessageEvent;
+import org.apache.hupa.shared.rpc.DeleteAllMessages;
+import org.apache.hupa.shared.rpc.DeleteMessageByUid;
+import org.apache.hupa.shared.rpc.DeleteMessageResult;
+import org.apache.hupa.shared.rpc.GenericResult;
+import org.apache.hupa.shared.rpc.MoveMessage;
+import org.apache.hupa.shared.rpc.MoveMessageResult;
+import org.apache.hupa.shared.rpc.SetFlag;
import org.apache.hupa.widgets.ui.HasEnable;
import com.google.gwt.activity.shared.AbstractActivity;
+import com.google.gwt.event.dom.client.ChangeEvent;
+import com.google.gwt.event.dom.client.ChangeHandler;
+import com.google.gwt.event.dom.client.ClickEvent;
+import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.dom.client.HasChangeHandlers;
import com.google.gwt.event.dom.client.HasClickHandlers;
import com.google.gwt.event.shared.EventBus;
import com.google.gwt.gen2.table.event.client.HasPageChangeHandlers;
import com.google.gwt.gen2.table.event.client.HasPageLoadHandlers;
import com.google.gwt.gen2.table.event.client.HasRowSelectionHandlers;
+import com.google.gwt.gen2.table.event.client.PageChangeEvent;
+import com.google.gwt.gen2.table.event.client.PageChangeHandler;
+import com.google.gwt.gen2.table.event.client.RowSelectionEvent;
+import com.google.gwt.gen2.table.event.client.RowSelectionHandler;
import com.google.gwt.place.shared.PlaceController;
import com.google.gwt.user.client.ui.AcceptsOneWidget;
import com.google.gwt.user.client.ui.HasValue;
@@ -449,9 +477,220 @@ public class IMAPMessageListActivity ext
}
private void bind(){
-
+ eventBus.addHandler(MessagesReceivedEvent.TYPE, new MessagesReceivedEventHandler() {
+
+ public void onMessagesReceived(MessagesReceivedEvent event) {
+
+ // fill the oracle
+ display.fillSearchOracle(event.getMessages());
+ }
+
+ });
+ display.getSearchClick().addClickHandler(new ClickHandler() {
+
+ public void onClick(ClickEvent event) {
+ String searchValue = null;
+ if (display.getSearchValue().getValue().trim().length() > 0) {
+ searchValue = display.getSearchValue().getValue().trim();
+ }
+ eventBus.fireEvent(new LoadMessagesEvent(user, folder, searchValue));
+ }
+
+ });
+ eventBus.addHandler(MoveMessageEvent.TYPE, new MoveMessageEventHandler() {
+
+ public void onMoveMessageHandler(MoveMessageEvent event) {
+ final Message message = event.getMessage();
+ dispatcher.execute(new MoveMessage(event.getOldFolder(), event.getNewFolder(), message.getUid()), new HupaEvoCallback<MoveMessageResult>(dispatcher, eventBus) {
+ public void callback(MoveMessageResult result) {
+ ArrayList<Message> messageArray = new ArrayList<Message>();
+ messageArray.add(message);
+ display.removeMessages(messageArray);
+ }
+ });
+ }
+
+ });
+ display.getSelectAllClick().addClickHandler(new ClickHandler() {
+
+ public void onClick(ClickEvent event) {
+ display.deselectAllMessages();
+ display.selectAllMessages();
+ }
+
+ });
+ display.getSelectNoneClick().addClickHandler(new ClickHandler() {
+
+ public void onClick(ClickEvent event) {
+ display.deselectAllMessages();
+ }
+
+ });
+ display.getDeleteClick().addClickHandler(new com.google.gwt.event.dom.client.ClickHandler() {
+
+ public void onClick(com.google.gwt.event.dom.client.ClickEvent event) {
+ if (folder.getFullName().equals(user.getSettings().getTrashFolderName())) {
+ display.getConfirmDeleteDialog().show();
+ } else {
+ deleteMessages();
+ }
+
+ }
+
+ });
+ display.getConfirmDeleteDialogClick().addClickHandler(new ClickHandler() {
+
+ public void onClick(ClickEvent event) {
+ deleteMessages();
+ }
+
+ });
+ 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());
+ }
+
+ });
+ display.getDeleteAllClick().addClickHandler(new ClickHandler() {
+
+ public void onClick(ClickEvent event) {
+ display.getConfirmDeleteAllDialog().center();
+ }
+
+ });
+ display.getConfirmDeleteAllDialogClick().addClickHandler(new ClickHandler() {
+
+ public void onClick(ClickEvent event) {
+ dispatcher.execute(new DeleteAllMessages(folder), new HupaEvoCallback<DeleteMessageResult>(dispatcher, eventBus) {
+ public void callback(DeleteMessageResult result) {
+ display.reset();
+ display.reloadData();
+// eventBus.fireEvent(new DecreaseUnseenEvent(user,folder,result.getCount()));
+ }
+ });
+ }
+
+ });
+ display.getMarkSeenClick().addClickHandler( new ClickHandler() {
+ public void onClick(ClickEvent event) {
+ final ArrayList<Message> selectedMessages = new ArrayList<Message>(display.getSelectedMessages());
+ ArrayList<Long> uids = new ArrayList<Long>();
+ for (Message m : selectedMessages) {
+ if (m.getFlags().contains(IMAPFlag.SEEN) == false) {
+ uids.add(m.getUid());
+ } else {
+ selectedMessages.remove(m);
+ }
+ }
+ dispatcher.execute(new SetFlag(folder, IMAPFlag.SEEN, true, uids), new HupaEvoCallback<GenericResult>(dispatcher, eventBus) {
+ public void callback(GenericResult result) {
+ for (Message m : selectedMessages) {
+ if (m.getFlags().contains(IMAPFlag.SEEN) == false) {
+ m.getFlags().add(IMAPFlag.SEEN);
+ }
+ }
+ display.redraw();
+ eventBus.fireEvent(new DecreaseUnseenEvent(user, folder,selectedMessages.size()));
+ }
+ });
+ }
+
+ });
+ display.getMarkUnseenClick().addClickHandler(new ClickHandler() {
+
+ public void onClick(ClickEvent event) {
+ final ArrayList<Message> selectedMessages = new ArrayList<Message>(display.getSelectedMessages());
+ ArrayList<Long> uids = new ArrayList<Long>();
+ for (Message m : selectedMessages) {
+ if (m.getFlags().contains(IMAPFlag.SEEN)) {
+ uids.add(m.getUid());
+ } else {
+ selectedMessages.remove(m);
+ }
+ }
+
+ dispatcher.execute(new SetFlag(folder, IMAPFlag.SEEN, false, uids), new HupaEvoCallback<GenericResult>(dispatcher, eventBus) {
+ public void callback(GenericResult result) {
+ for (Message m : selectedMessages) {
+ if (m.getFlags().contains(IMAPFlag.SEEN)) {
+ m.getFlags().remove(IMAPFlag.SEEN);
+ }
+ }
+ display.redraw();
+ eventBus.fireEvent(new IncreaseUnseenEvent(user, folder,selectedMessages.size()));
+ }
+ });
+ }
+
+
+ });
+ eventBus.addHandler(FolderSelectionEvent.TYPE, new FolderSelectionEventHandler() {//TODO
+
+ public void onFolderSelectionEvent(FolderSelectionEvent event) {
+ folder = event.getFolder();
+ user = event.getUser();
+ }
+
+ });
+ new HandlerRegistrationAdapter(display.getDataTableSelection().addRowSelectionHandler(new RowSelectionHandler() {
+ public void onRowSelection(RowSelectionEvent event) {
+ if (event.getSelectedRows().size() == 0) {
+ display.getDeleteEnable().setEnabled(false);
+ display.getMarkSeenEnable().setEnabled(false);
+ display.getMarkUnseenEnable().setEnabled(false);
+ } else {
+ display.getDeleteEnable().setEnabled(true);
+ display.getMarkSeenEnable().setEnabled(true);
+ display.getMarkUnseenEnable().setEnabled(true);
+ }
+ }
+
+
+
+ }));
+ display.getRefreshClick().addClickHandler(new ClickHandler() {
+
+ public void onClick(ClickEvent event) {
+ display.reset();
+ display.reloadData();
+ }
+
+ });
+ new HandlerRegistrationAdapter(display.getDataTablePageChange().addPageChangeHandler(new PageChangeHandler() {//TODO
+
+ public void onPageChange(PageChangeEvent event) {
+ //firePresenterRevealedEvent(true);
+// firePresenterChangedEvent();
+ }
+
+ }));
+ display.getRowsPerPageChange().addChangeHandler(new ChangeHandler() {
+
+ public void onChange(ChangeEvent event) {
+ //firePresenterRevealedEvent(true);
+// firePresenterChangedEvent();
+ }
+
+ });
+ display.addTableListener(tableListener);
}
+ private void deleteMessages() {
+ final ArrayList<Message> selectedMessages = new ArrayList<Message>(display.getSelectedMessages());
+ ArrayList<Long> uids = new ArrayList<Long>();
+ for (Message m : selectedMessages) {
+ uids.add(m.getUid());
+ }
+ // maybe its better to just remove the messages from the table and expect the removal will work
+ display.removeMessages(selectedMessages);
+
+ dispatcher.execute(new DeleteMessageByUid(folder,uids), new HupaEvoCallback<DeleteMessageResult>(dispatcher, eventBus) {
+ public void callback(DeleteMessageResult result) {
+ eventBus.fireEvent(new DecreaseUnseenEvent(user,folder,result.getCount()));
+ }
+ });
+ }
public IMAPMessageListActivity with(User user){
this.user = user;
this.folder = new IMAPFolder(user.getSettings().getInboxFolderName());
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=1522115&r1=1522114&r2=1522115&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 02:06:30 2013
@@ -36,6 +36,7 @@ import net.customware.gwt.dispatch.clien
import org.apache.hupa.client.HupaConstants;
import org.apache.hupa.client.HupaEvoCallback;
import org.apache.hupa.client.mvp.WidgetDisplayable;
+import org.apache.hupa.client.place.DefaultPlace;
import org.apache.hupa.shared.data.User;
>>>>>>> introduce the top activity
import org.apache.hupa.shared.events.FlashEvent;
@@ -82,6 +83,7 @@ import com.google.gwt.user.client.rpc.As
import com.google.gwt.user.client.ui.AcceptsOneWidget;
import com.google.gwt.user.client.ui.HasText;
import com.google.inject.Inject;
+import com.google.inject.Provider;
public class TopActivity extends AbstractActivity {
@@ -124,6 +126,7 @@ public class TopActivity extends Abstrac
}
showLogin(username);
noopTimer.cancel();
+ TopActivity.this.placeController.goTo(defaultPlaceProvider.get());
}
<<<<<<< HEAD
});
@@ -265,11 +268,12 @@ public class TopActivity extends Abstrac
private Timer noopTimer = new IdleTimer();
@Inject
- public TopActivity(Displayable display, EventBus eventBus, PlaceController placeController,
+ public TopActivity(Displayable display, EventBus eventBus, PlaceController placeController, Provider<DefaultPlace> defaultPlaceProvider,
HupaConstants constants, DispatchAsync dispatcher) {
this.dispatcher = dispatcher;
this.display = display;
this.eventBus = eventBus;
+ this.defaultPlaceProvider = defaultPlaceProvider;
this.constants = constants;
this.placeController = placeController;
@@ -305,6 +309,7 @@ public class TopActivity extends Abstrac
private final EventBus eventBus;
private final PlaceController placeController;
private final DispatchAsync dispatcher;
+ private final Provider<DefaultPlace> defaultPlaceProvider;
private User user;
private ServerStatus serverStatus = ServerStatus.Available;
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=1522115&r1=1522114&r2=1522115&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 02:06:30 2013
@@ -252,14 +252,50 @@ import java.util.List;
import net.customware.gwt.dispatch.client.DispatchAsync;
import org.apache.hupa.client.HupaEvoCallback;
+import org.apache.hupa.client.mvp.MessageSendPresenter.Type;
+import org.apache.hupa.client.mvp.MainPresenter;
import org.apache.hupa.client.mvp.WidgetContainerDisplayable;
+import org.apache.hupa.client.place.IMAPMessagePlace;
+import org.apache.hupa.client.place.MailInboxPlace;
+import org.apache.hupa.client.place.MessageSendPlace;
import org.apache.hupa.client.widgets.HasDialog;
import org.apache.hupa.client.widgets.IMAPTreeItem;
import org.apache.hupa.shared.data.IMAPFolder;
+import org.apache.hupa.shared.data.Message;
+import org.apache.hupa.shared.data.Message.IMAPFlag;
+import org.apache.hupa.shared.data.MessageDetails;
import org.apache.hupa.shared.data.User;
+import org.apache.hupa.shared.events.BackEvent;
+import org.apache.hupa.shared.events.BackEventHandler;
+import org.apache.hupa.shared.events.DecreaseUnseenEvent;
+import org.apache.hupa.shared.events.DecreaseUnseenEventHandler;
+import org.apache.hupa.shared.events.ExpandMessageEvent;
+import org.apache.hupa.shared.events.ExpandMessageEventHandler;
+import org.apache.hupa.shared.events.FolderSelectionEvent;
+import org.apache.hupa.shared.events.FolderSelectionEventHandler;
+import org.apache.hupa.shared.events.ForwardMessageEvent;
+import org.apache.hupa.shared.events.ForwardMessageEventHandler;
+import org.apache.hupa.shared.events.IncreaseUnseenEvent;
+import org.apache.hupa.shared.events.IncreaseUnseenEventHandler;
+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 org.apache.hupa.shared.events.MessagesReceivedEvent;
+import org.apache.hupa.shared.events.MessagesReceivedEventHandler;
+import org.apache.hupa.shared.events.NewMessageEvent;
+import org.apache.hupa.shared.events.NewMessageEventHandler;
+import org.apache.hupa.shared.events.ReplyMessageEvent;
+import org.apache.hupa.shared.events.ReplyMessageEventHandler;
+import org.apache.hupa.shared.events.SentMessageEvent;
+import org.apache.hupa.shared.events.SentMessageEventHandler;
+import org.apache.hupa.shared.rpc.CreateFolder;
+import org.apache.hupa.shared.rpc.DeleteFolder;
import org.apache.hupa.shared.rpc.FetchFolders;
import org.apache.hupa.shared.rpc.FetchFoldersResult;
import org.apache.hupa.shared.rpc.GenericResult;
+import org.apache.hupa.shared.rpc.GetMessageDetails;
+import org.apache.hupa.shared.rpc.GetMessageDetailsResult;
import org.apache.hupa.shared.rpc.RenameFolder;
import org.apache.hupa.widgets.event.EditEvent;
import org.apache.hupa.widgets.event.EditHandler;
@@ -267,33 +303,48 @@ import org.apache.hupa.widgets.ui.HasEdi
import org.apache.hupa.widgets.ui.HasEnable;
import com.google.gwt.activity.shared.AbstractActivity;
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.event.dom.client.ClickEvent;
+import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.dom.client.HasClickHandlers;
import com.google.gwt.event.logical.shared.HasSelectionHandlers;
+import com.google.gwt.event.logical.shared.SelectionEvent;
+import com.google.gwt.event.logical.shared.SelectionHandler;
import com.google.gwt.event.shared.EventBus;
import com.google.gwt.place.shared.PlaceController;
+import com.google.gwt.user.client.Window;
+import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.AcceptsOneWidget;
import com.google.gwt.user.client.ui.TreeItem;
import com.google.inject.Inject;
+import com.google.inject.Provider;
public class WestActivity extends AbstractActivity {
private final Displayable display;
private final EventBus eventBus;
private final PlaceController placeController;
+ private final Provider<MailInboxPlace> mailInboxPlaceProvider;
+ private final Provider<IMAPMessagePlace> IMAPMessagePlaceProvider;
+ private final Provider<MessageSendPlace> messageSendPlaceProvider;
private DispatchAsync dispatcher;
private User user;
private IMAPFolder folder;
private IMAPTreeItem tItem;
private HasEditable editableTreeItem;
+ private String searchValue;
@Inject
public WestActivity(Displayable display, EventBus eventBus, PlaceController placeController,
- DispatchAsync dispatcher){
+ DispatchAsync dispatcher,Provider<MailInboxPlace> mailInboxPlaceProvider,Provider<IMAPMessagePlace> IMAPMessagePlaceProvider,Provider<MessageSendPlace> messageSendPlaceProvider){
this.dispatcher = dispatcher;
this.display = display;
this.eventBus = eventBus;
this.placeController = placeController;
+ this.mailInboxPlaceProvider = mailInboxPlaceProvider;
+ this.IMAPMessagePlaceProvider = IMAPMessagePlaceProvider;
+ this.messageSendPlaceProvider = messageSendPlaceProvider;
}
@@ -384,9 +435,278 @@ public class WestActivity extends Abstra
return tList;
}
private void bind(){
-
+ eventBus.addHandler(LoadMessagesEvent.TYPE, new LoadMessagesEventHandler() {
+
+ public void onLoadMessagesEvent(LoadMessagesEvent loadMessagesEvent) {
+ showMessageTable(loadMessagesEvent.getUser(), loadMessagesEvent.getFolder(), loadMessagesEvent.getSearchValue());
+ }
+
+ });
+ eventBus.addHandler(ExpandMessageEvent.TYPE, new ExpandMessageEventHandler() {
+
+ public void onExpandMessage(ExpandMessageEvent event) {
+ final boolean decreaseUnseen;
+ final Message message = event.getMessage();
+ // check if the message was already seen in the past
+ if (event.getMessage().getFlags().contains(IMAPFlag.SEEN) == false) {
+ decreaseUnseen = true;
+ } else {
+ decreaseUnseen = false;
+ }
+
+ display.setLoadingMessage(true);
+ dispatcher.execute(new GetMessageDetails(event.getFolder(), message.getUid()), new HupaEvoCallback<GetMessageDetailsResult>(dispatcher, eventBus, display) {
+ public void callback(GetMessageDetailsResult result) {
+ if (decreaseUnseen) {
+ eventBus.fireEvent(new DecreaseUnseenEvent(user, folder));
+ }
+ display.setLoadingMessage(false);
+ showMessage(user, folder, message, result.getMessageDetails());
+ }
+ });
+ }
+
+ });
+ eventBus.addHandler(NewMessageEvent.TYPE, new NewMessageEventHandler() {
+
+ public void onNewMessageEvent(NewMessageEvent event) {
+ showNewMessage();
+ }
+
+ });
+ eventBus.addHandler(SentMessageEvent.TYPE, new SentMessageEventHandler() {
+
+ public void onSentMessageEvent(SentMessageEvent ev) {
+ showMessageTable(user, folder, searchValue);
+ }
+
+ });
+ eventBus.addHandler(ForwardMessageEvent.TYPE, new ForwardMessageEventHandler() {
+
+ public void onForwardMessageEvent(ForwardMessageEvent event) {
+ showForwardMessage(event);
+ }
+
+ });
+ eventBus.addHandler(ReplyMessageEvent.TYPE, new ReplyMessageEventHandler() {
+
+ public void onReplyMessageEvent(ReplyMessageEvent event) {
+ showReplyMessage(event);
+ }
+
+ });
+ eventBus.addHandler(FolderSelectionEvent.TYPE, new FolderSelectionEventHandler() {
+
+ public void onFolderSelectionEvent(FolderSelectionEvent event) {
+ user = event.getUser();
+ folder = event.getFolder();
+ showMessageTable(user, event.getFolder(), searchValue);
+ }
+
+ });
+ eventBus.addHandler(BackEvent.TYPE, new BackEventHandler() {
+
+ public void onBackEvent(BackEvent event) {
+ showMessageTable(user, folder, searchValue);
+ }
+
+ });
+ eventBus.addHandler(ExpandMessageEvent.TYPE, new ExpandMessageEventHandler() {
+
+ public void onExpandMessage(ExpandMessageEvent event) {
+ if (editableTreeItem != null && editableTreeItem.isEdit()) {
+ editableTreeItem.cancelEdit();
+ }
+ }
+
+ });
+ eventBus.addHandler(NewMessageEvent.TYPE, new NewMessageEventHandler() {
+
+ public void onNewMessageEvent(NewMessageEvent event) {
+ if (editableTreeItem != null && editableTreeItem.isEdit()) {
+ editableTreeItem.cancelEdit();
+ }
+ }
+
+ });
+ eventBus.addHandler(DecreaseUnseenEvent.TYPE, new DecreaseUnseenEventHandler() {
+
+ public void onDecreaseUnseenEvent(DecreaseUnseenEvent event) {
+ display.decreaseUnseenMessageCount(event.getFolder(), event.getAmount());
+ }
+
+ });
+ eventBus.addHandler(IncreaseUnseenEvent.TYPE, new IncreaseUnseenEventHandler() {
+
+ public void onIncreaseUnseenEvent(IncreaseUnseenEvent event) {
+ display.increaseUnseenMessageCount(event.getFolder(), event.getAmount());
+ }
+
+ });
+ display.getTree().addSelectionHandler(new SelectionHandler<TreeItem>() {
+
+ public void onSelection(SelectionEvent<TreeItem> event) {
+ tItem = (IMAPTreeItem) event.getSelectedItem();
+ if (tItem.isEdit())
+ return;
+ folder = (IMAPFolder) tItem.getUserObject();
+ eventBus.fireEvent(new LoadMessagesEvent(user, folder));
+ }
+
+ });
+ display.getTree().addSelectionHandler(new SelectionHandler<TreeItem>() {
+
+ public void onSelection(SelectionEvent<TreeItem> event) {
+ tItem = (IMAPTreeItem) event.getSelectedItem();
+ if (tItem.isEdit())
+ return;
+ folder = (IMAPFolder) tItem.getUserObject();
+ if (folder.getFullName().equalsIgnoreCase(user.getSettings().getInboxFolderName())) {
+ display.getDeleteEnable().setEnabled(false);
+ display.getRenameEnable().setEnabled(false);
+ } else {
+ display.getDeleteEnable().setEnabled(true);
+ display.getRenameEnable().setEnabled(true);
+ }
+ }
+
+ });
+ display.getRenameClick().addClickHandler(new ClickHandler() {
+
+ public void onClick(ClickEvent event) {
+ tItem.startEdit();
+ }
+
+ });
+ display.getDeleteClick().addClickHandler(new ClickHandler() {
+
+ public void onClick(ClickEvent event) {
+ display.getDeleteConfirmDialog().show();
+ }
+
+ });
+ display.getDeleteConfirmClick().addClickHandler(new ClickHandler() {
+
+ public void onClick(ClickEvent event) {
+ dispatcher.execute(new DeleteFolder(folder), new AsyncCallback<GenericResult>() {
+
+ public void onFailure(Throwable caught) {
+ GWT.log("ERROR while deleting", caught);
+ }
+
+ public void onSuccess(GenericResult result) {
+ display.deleteSelectedFolder();
+ }
+
+ });
+ }
+
+ });
+ display.getNewClick().addClickHandler(new ClickHandler() {
+
+ public void onClick(ClickEvent event) {
+ editableTreeItem = display.createFolder(new EditHandler() {
+
+ public void onEditEvent(EditEvent event) {
+ final IMAPTreeItem item = (IMAPTreeItem) event.getSource();
+ final String newValue = (String) event.getNewValue();
+ if (event.getEventType().equals(EditEvent.EventType.Stop)) {
+ dispatcher.execute(new CreateFolder(new IMAPFolder(newValue.trim())), new AsyncCallback<GenericResult>() {
+
+ public void onFailure(Throwable caught) {
+ GWT.log("Error while create folder", caught);
+ item.cancelEdit();
+ }
+
+ public void onSuccess(GenericResult result) {
+ // Nothing todo
+ }
+
+ });
+ }
+ }
+
+ });
+ }
+
+ });
+ eventBus.addHandler(MessagesReceivedEvent.TYPE, new MessagesReceivedEventHandler() {
+
+ public void onMessagesReceived(MessagesReceivedEvent event) {
+ IMAPFolder f = event.getFolder();
+ display.updateTreeItem(f);
+ }
+
+ });
+ eventBus.addHandler(LoginEvent.TYPE, new LoginEventHandler() {
+
+ public void onLogin(LoginEvent event) {
+ user = event.getUser();
+ folder = new IMAPFolder(user.getSettings().getInboxFolderName());;
+ searchValue = null;
+ showMessageTable(user, folder, searchValue);
+ }
+
+ });
+
+ exportJSMethods(this);
}
+
+ public void openLink(String url) {
+ Window.open(url, "_blank", "");
+ }
+
+ public void mailTo(String mailto) {
+// sendPresenter.revealDisplay(user, mailto);
+ }
+ private native void exportJSMethods(WestActivity westactivity) /*-{
+ $wnd.openLink = function(url) {
+ try {
+ westactivity.@org.apache.hupa.client.activity.WestActivity::openLink(Ljava/lang/String;) (url);
+ } catch(e) {}
+ return false;
+ };
+ $wnd.mailTo = function(mail) {
+ try {
+ westactivity.@org.apache.hupa.client.activity.WestActivity::mailTo(Ljava/lang/String;) (mail);
+ } catch(e) {}
+ return false;
+ };
+ }-*/;
+ private void showMessageTable(User user, IMAPFolder folder, String searchValue) {
+ this.user = user;
+ this.folder = folder;
+ this.searchValue = searchValue;
+ placeController.goTo(mailInboxPlaceProvider.get().with(user));
+ }
+
+ private void showMessage(User user, IMAPFolder folder, Message message, MessageDetails details) {
+ placeController.goTo(IMAPMessagePlaceProvider.get());
+ }
+
+ private void showNewMessage() {
+ placeController.goTo(this.messageSendPlaceProvider.get());
+// sendPresenter.revealDisplay(user);
+ }
+
+ private void showForwardMessage(ForwardMessageEvent event) {
+ placeController.goTo(this.messageSendPlaceProvider.get());
+// sendPresenter.revealDisplay(event.getUser(), event.getFolder(), event.getMessage(), event.getMessageDetails(), Type.FORWARD);
+ }
+
+ private void showReplyMessage(ReplyMessageEvent event) {
+ if (event.getReplyAll()) {
+ placeController.goTo(this.messageSendPlaceProvider.get());
+// sendPresenter.revealDisplay(event.getUser(), event.getFolder(), event.getMessage(), event.getMessageDetails(), Type.REPLY_ALL);
+ } else {
+ placeController.goTo(this.messageSendPlaceProvider.get());
+// sendPresenter.revealDisplay(event.getUser(), event.getFolder(), event.getMessage(), event.getMessageDetails(), Type.REPLY);
+
+ }
+ placeController.goTo(this.messageSendPlaceProvider.get());
+// sendPresenter.revealDisplay();
+ }
public interface Displayable extends WidgetContainerDisplayable {
public HasSelectionHandlers<TreeItem> getTree();
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=1522115&r1=1522114&r2=1522115&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 02:06:30 2013
@@ -107,8 +107,8 @@ import org.apache.hupa.client.activity.T
import org.apache.hupa.client.activity.WestActivity;
import org.apache.hupa.client.dnd.PagingScrollTableRowDragController;
import org.apache.hupa.client.mvp.AppPlaceHistoryMapper;
+import org.apache.hupa.client.mvp.CachingTopActivityMapper;
import org.apache.hupa.client.mvp.MainContentActivityMapper;
-import org.apache.hupa.client.mvp.TopActivityMapper;
import org.apache.hupa.client.mvp.WestActivityMapper;
import org.apache.hupa.client.place.DefaultPlace;
import org.apache.hupa.client.ui.AppLayout;
@@ -330,7 +330,7 @@ public class AppGinModule extends Abstra
@Provides
@Singleton
@Named("TopRegion")
- public ActivityManager getTopRegionActivityMapper(TopActivityMapper activityMapper,
+ public ActivityManager getTopRegionActivityMapper(CachingTopActivityMapper activityMapper,
EventBus eventBus) {
return new ActivityManager(activityMapper, eventBus);
}
Added: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/CachingTopActivityMapper.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/CachingTopActivityMapper.java?rev=1522115&view=auto
==============================================================================
--- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/CachingTopActivityMapper.java (added)
+++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/CachingTopActivityMapper.java Thu Sep 12 02:06:30 2013
@@ -0,0 +1,33 @@
+package org.apache.hupa.client.mvp;
+
+import com.google.gwt.activity.shared.Activity;
+import com.google.gwt.activity.shared.ActivityMapper;
+import com.google.gwt.activity.shared.CachingActivityMapper;
+import com.google.gwt.activity.shared.FilteredActivityMapper;
+import com.google.gwt.place.shared.Place;
+import com.google.inject.Inject;
+
+public class CachingTopActivityMapper implements ActivityMapper {
+
+ private ActivityMapper filteredActivityMapper;
+
+ @Inject
+ public CachingTopActivityMapper(TopActivityMapper topActivityMapper) {
+
+ FilteredActivityMapper.Filter filter = new FilteredActivityMapper.Filter() {
+ @Override
+ public Place filter(Place place) {
+ return place;
+ }
+ };
+
+ CachingActivityMapper cachingActivityMapper = new CachingActivityMapper(topActivityMapper);
+ filteredActivityMapper = new FilteredActivityMapper(filter, cachingActivityMapper);
+ }
+
+ @Override
+ public Activity getActivity(Place place) {
+ return filteredActivityMapper.getActivity(place);
+ }
+
+}
Added: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/CachingWestActivityMapper.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/CachingWestActivityMapper.java?rev=1522115&view=auto
==============================================================================
--- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/CachingWestActivityMapper.java (added)
+++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/CachingWestActivityMapper.java Thu Sep 12 02:06:30 2013
@@ -0,0 +1,36 @@
+package org.apache.hupa.client.mvp;
+
+import org.apache.hupa.client.place.DefaultPlace;
+import org.apache.hupa.client.place.MailInboxPlace;
+
+import com.google.gwt.activity.shared.Activity;
+import com.google.gwt.activity.shared.ActivityMapper;
+import com.google.gwt.activity.shared.CachingActivityMapper;
+import com.google.gwt.activity.shared.FilteredActivityMapper;
+import com.google.gwt.place.shared.Place;
+import com.google.inject.Inject;
+
+public class CachingWestActivityMapper implements ActivityMapper {
+
+ private ActivityMapper filteredActivityMapper;
+
+ @Inject
+ public CachingWestActivityMapper(WestActivityMapper westActivityMapper) {
+
+ FilteredActivityMapper.Filter filter = new FilteredActivityMapper.Filter() {
+ @Override
+ public Place filter(Place place) {
+ return place instanceof DefaultPlace ? place : new MailInboxPlace(null); // FIXME with user
+ }
+ };
+
+ CachingActivityMapper cachingActivityMapper = new CachingActivityMapper(westActivityMapper);
+ filteredActivityMapper = new FilteredActivityMapper(filter, cachingActivityMapper);
+ }
+
+ @Override
+ public Activity getActivity(Place place) {
+ return filteredActivityMapper.getActivity(place);
+ }
+
+}
Added: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/place/IMAPMessagePlace.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/place/IMAPMessagePlace.java?rev=1522115&view=auto
==============================================================================
--- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/place/IMAPMessagePlace.java (added)
+++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/place/IMAPMessagePlace.java Thu Sep 12 02:06:30 2013
@@ -0,0 +1,27 @@
+package org.apache.hupa.client.place;
+
+import com.google.gwt.place.shared.Place;
+import com.google.gwt.place.shared.PlaceTokenizer;
+import com.google.gwt.place.shared.Prefix;
+
+public class IMAPMessagePlace extends Place {
+
+ @Prefix("IMAPMessage")
+ public static class Tokenizer implements PlaceTokenizer<IMAPMessagePlace> {
+
+ @Override
+ public IMAPMessagePlace getPlace(String token) {
+ return new IMAPMessagePlace();
+ }
+
+ @Override
+ public String getToken(IMAPMessagePlace place) {
+ return "IMAPMessage";
+ }
+ }
+
+ public String toString(){
+ return this.getClass().getName()+"->[IMAPMessage]";
+ }
+
+}
Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/place/MailInboxPlace.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/place/MailInboxPlace.java?rev=1522115&r1=1522114&r2=1522115&view=diff
==============================================================================
--- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/place/MailInboxPlace.java (original)
+++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/place/MailInboxPlace.java Thu Sep 12 02:06:30 2013
@@ -2,13 +2,25 @@ package org.apache.hupa.client.place;
import org.apache.hupa.shared.data.User;
+import com.google.gwt.place.shared.Place;
import com.google.gwt.place.shared.PlaceTokenizer;
import com.google.gwt.place.shared.Prefix;
-public class MailInboxPlace extends MailPlace {
+public class MailInboxPlace extends Place {
private static final String PREFIX = "inbox";
private User user;
+ private String mailId;
+
+ public MailInboxPlace(){
+ this.mailId = "";
+ }
+ public MailInboxPlace(String token){
+ this.mailId = token;
+ }
+ public String getMailId(){
+ return mailId;
+ }
/**
* equality test based on Class type, to let different instance of this
@@ -46,12 +58,12 @@ public class MailInboxPlace extends Mail
@Override
public MailInboxPlace getPlace(String token) {
- return new MailInboxPlace();
+ return new MailInboxPlace(token);
}
@Override
public String getToken(MailInboxPlace place) {
- return PREFIX;
+ return place.getMailId();
}
}
}
Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/place/MessageSendPlace.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/place/MessageSendPlace.java?rev=1522115&r1=1522114&r2=1522115&view=diff
==============================================================================
--- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/place/MessageSendPlace.java (original)
+++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/place/MessageSendPlace.java Thu Sep 12 02:06:30 2013
@@ -1,3 +1,4 @@
+<<<<<<< HEAD
/****************************************************************
* Licensed to the Apache Software Foundation (ASF) under one *
* or more contributor license agreements. See the NOTICE file *
@@ -25,10 +26,15 @@ import org.apache.hupa.shared.domain.Mes
import org.apache.hupa.shared.domain.MessageDetails;
import org.apache.hupa.shared.domain.User;
+=======
+package org.apache.hupa.client.place;
+
+>>>>>>>
import com.google.gwt.place.shared.Place;
import com.google.gwt.place.shared.PlaceTokenizer;
import com.google.gwt.place.shared.Prefix;
+<<<<<<< HEAD
public class MessageSendPlace extends AbstractPlace {
@@ -86,4 +92,26 @@ public class MessageSendPlace extends Ab
+=======
+public class MessageSendPlace extends Place {
+
+ @Prefix("MessageSend")
+ public static class Tokenizer implements PlaceTokenizer<MessageSendPlace> {
+
+ @Override
+ public MessageSendPlace getPlace(String token) {
+ return new MessageSendPlace();
+ }
+
+ @Override
+ public String getToken(MessageSendPlace place) {
+ return "MessageSend";
+ }
+ }
+
+ public String toString(){
+ return this.getClass().getName()+"->[MessageSend]";
+ }
+
+>>>>>>>
}
Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/IMAPMessageListView.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/IMAPMessageListView.java?rev=1522115&r1=1522114&r2=1522115&view=diff
==============================================================================
--- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/IMAPMessageListView.java (original)
+++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/IMAPMessageListView.java Thu Sep 12 02:06:30 2013
@@ -756,6 +756,7 @@ import com.google.gwt.gen2.table.event.c
import com.google.gwt.gen2.table.event.client.RowCountChangeEvent;
import com.google.gwt.gen2.table.event.client.RowCountChangeHandler;
import com.google.gwt.i18n.client.DateTimeFormat;
+import com.google.gwt.user.client.ui.Anchor;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.HasValue;
@@ -794,9 +795,9 @@ public class IMAPMessageListView extends
private EnableButton markUnSeenButton;
private ListBox pageBox = new ListBox();
- private Hyperlink allLink;
- private Hyperlink noneLink;
- private Hyperlink refreshLink;
+ private Anchor allLink;
+ private Anchor noneLink;
+ private Anchor refreshLink;
private MultiWordSuggestOracle oracle = new MultiWordSuggestOracle(" ,@");
private SuggestBox searchBox = new SuggestBox(oracle);
private Button searchButton;
@@ -812,9 +813,9 @@ public class IMAPMessageListView extends
deleteAllMailButton = new Button(constants.deleteAll());
markSeenButton = new EnableButton(constants.markSeen());
markUnSeenButton = new EnableButton(constants.markUnseen());
- allLink = new Hyperlink(constants.all(),"");
- noneLink = new Hyperlink(constants.none(),"");
- refreshLink = new Hyperlink(constants.refresh(),"");
+ allLink = new Anchor(constants.all());
+ noneLink = new Anchor(constants.none());
+ refreshLink = new Anchor(constants.refresh());
searchButton = new Button(constants.searchButton());
loading = new Loading(constants.loading());
this.cTableModel = new CachedTableModel<Message>(mTableModel);
Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/WestView.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/WestView.java?rev=1522115&r1=1522114&r2=1522115&view=diff
==============================================================================
--- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/WestView.java (original)
+++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/WestView.java Thu Sep 12 02:06:30 2013
@@ -163,9 +163,9 @@ public class WestView extends Composite
this.controller = controllerProvider;
this.bus = bus;
loader = new Loading(constants.loading());
- newFolderButton = new EnableHyperlink(constants.newFolder(), "");
- renameFolderButton = new EnableHyperlink(constants.renameFolder(), "");
- deleteFolderButton = new EnableHyperlink(constants.deleteFolder(), "");
+ newFolderButton = new EnableHyperlink(constants.newFolder(), null);
+ renameFolderButton = new EnableHyperlink(constants.renameFolder(), null);
+ deleteFolderButton = new EnableHyperlink(constants.deleteFolder(), null);
dockPanel = new DockPanel();
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org