in client/src/main/java/org/apache/hupa/client/activity/MessageListActivity.java [167:294]
private void bindTo(final EventBus eventBus) {
registerHandler(eventBus.addHandler(DeleteClickEvent.TYPE, new DeleteClickEventHandler() {
@Override
public void onDeleteClickEvent(DeleteClickEvent event) {
deleteSelectedMessages();
}
}));
registerHandler(eventBus.addHandler(RefreshMessagesEvent.TYPE, new RefreshMessagesEventHandler() {
@Override
public void onRefresh(RefreshMessagesEvent event) {
display.setSearchValue(event.getSearchValue());
display.refresh();
System.out.println("REFRESH DISPLAY");
}
}));
registerHandler(eventBus.addHandler(MoveMessageEvent.TYPE, new MoveMessageEventHandler() {
@Override
public void onMoveMessageHandler(final MoveMessageEvent event) {
hc.showTopLoading("Moving...");
MoveMessageRequest req = rf.moveMessageRequest();
ImapFolder f = req.create(ImapFolder.class);
ImapFolder newF = req.create(ImapFolder.class);
String fullName = null;
if (pc.getWhere() instanceof FolderPlace) {
fullName = ((FolderPlace) pc.getWhere()).getToken();
} else {
fullName = ((MessagePlace) pc.getWhere()).getTokenWrapper().getFolder();
}
f.setFullName(fullName);
newF.setFullName(event.getNewFolder().getFullName());
MoveMessageAction action = req.create(MoveMessageAction.class);
final List<Long> uids = display.getSelectedMessagesIds();
// TODO can move more than one message once.
if (uids.isEmpty() || uids.size() > 1) {
hc.hideTopLoading();
hc.showNotice("Please select one and only one message", 10000);
return;
}
action.setMessageUid(uids.get(0));
action.setNewFolder(newF);
action.setOldFolder(f);
req.move(action).fire(new Receiver<GenericResult>() {
@Override
public void onSuccess(GenericResult response) {
display.refresh();
eventBus.fireEvent(new RefreshFoldersEvent());
hc.hideTopLoading();
hc.showNotice("The conversation has been moved to \"" + event.getNewFolder() + "\"", 10000);
}
@Override
public void onFailure(ServerFailure error) {
super.onFailure(error);
hc.hideTopLoading();
hc.showNotice(error.getMessage(), 10000);
}
});
}
}));
registerHandler(eventBus.addHandler(MessageViewEvent.TYPE, new MessageViewEventHandler() {
public void onMessageViewEvent(final MessageViewEvent event) {
if (event.messageDetails != null && gettingMessages != null) {
gettingMessages.done(new Function() {
public void f() {
List<Message> messages = currentFechResult.getMessages();
int l = messages.size();
for (int i = 0; i < l; i++){
Message m = messages.get(i);
MessageListActivity.this.onMessageSelected(m);//FIXME for fixing https://issues.apache.org/jira/browse/HUPA-110
if (m.getUid() == event.messageDetails.getUid()) {
List<IMAPFlag> flags = m.getFlags();
if (!flags.contains(IMAPFlag.SEEN)) {
flags.add(IMAPFlag.SEEN);
m = rf.deleteMessageByUidRequest().edit(m);
m.setFlags(flags);
messages.set(i, m);
display.getDataProvider().setFechMessagesResult(currentFechResult);
}
display.getGrid().getSelectionModel().setSelected(m, true);
display.getGrid().getRowElement(i).scrollIntoView();
ToolBarView.Parameters p = new ToolBarView.Parameters(user, folderName, m, event.messageDetails);
toolBar.setParameters(p);
break;
}
}
}
});
}
}
}));
registerHandler(eventBus.addHandler(MessageListRangeChangedEvent.TYPE, new MessageListRangeChangedEventHandler() {
public void onRangeChangedEvent(MessageListRangeChangedEvent event) {
gettingMessages = hupaStorage
.gettingMessages(true, folderName, event.start, event.size, event.search)
.done(new Function() {
public void f() {
FetchMessagesResult response = arguments(0);
display.getDataProvider().setFechMessagesResult(response);
currentFechResult = response;
cacheContacts();
}
})
.fail(new Function() {
public void f() {
hc.showNotice("" + arguments(0), 3000);
}
})
.always(new Function() {
public void f() {
hc.hideTopLoading();
}
});
}
}));
}