Author: norman
Date: Tue Sep 22 17:48:01 2009
New Revision: 817743
URL: http://svn.apache.org/viewvc?rev=817743&view=rev
Log:
Add support for mark messages as seen/unseen (HUPA-11)
Added:
james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/events/IncreaseUnseenEvent.java
james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/events/IncreaseUnseenEventHandler.java
Modified:
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/HupaConstants.java
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/HupaConstants.properties
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/IMAPFolderPresenter.java
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/IMAPMessageListPresenter.java
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/IMAPMessageListView.java
james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/JavamailUtil.java
james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/SetFlagsHandler.java
james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/SetFlag.java
Modified:
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/HupaConstants.java
URL:
http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/HupaConstants.java?rev=817743&r1=817742&r2=817743&view=diff
==============================================================================
---
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/HupaConstants.java
(original)
+++
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/HupaConstants.java
Tue Sep 22 17:48:01 2009
@@ -108,4 +108,7 @@
public String rawTitle();
public String deleteAll();
+
+ public String markSeen();
+ public String markUnseen();
}
Modified:
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/HupaConstants.properties
URL:
http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/HupaConstants.properties?rev=817743&r1=817742&r2=817743&view=diff
==============================================================================
---
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/HupaConstants.properties
(original)
+++
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/HupaConstants.properties
Tue Sep 22 17:48:01 2009
@@ -64,3 +64,5 @@
rawTitle=Raw message view
deleteAll=Delete all messages
sessionTimedOut=Your session is timed out. Please login again!
+markSeen=Mark seen
+markUnseen=Mark unseen
Modified:
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/IMAPFolderPresenter.java
URL:
http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/IMAPFolderPresenter.java?rev=817743&r1=817742&r2=817743&view=diff
==============================================================================
---
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/IMAPFolderPresenter.java
(original)
+++
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/IMAPFolderPresenter.java
Tue Sep 22 17:48:01 2009
@@ -41,6 +41,8 @@
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.IncreaseUnseenEvent;
+import org.apache.hupa.shared.events.IncreaseUnseenEventHandler;
import org.apache.hupa.shared.events.LoadMessagesEvent;
import org.apache.hupa.shared.events.NewMessageEvent;
import org.apache.hupa.shared.events.NewMessageEventHandler;
@@ -226,6 +228,14 @@
}
}));
+ registerHandler(eventBus.addHandler(IncreaseUnseenEvent.TYPE,
new IncreaseUnseenEventHandler() {
+
+ public void onIncreaseUnseenEvent(IncreaseUnseenEvent
event) {
+
display.increaseUnseenMessageCount(event.getFolder(),event.getAmount());
+ }
+
+
+ }));
registerHandler(display.getTree().addSelectionHandler(new
SelectionHandler<TreeItem>() {
public void onSelection(SelectionEvent<TreeItem> event)
{
Modified:
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/IMAPMessageListPresenter.java
URL:
http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/IMAPMessageListPresenter.java?rev=817743&r1=817742&r2=817743&view=diff
==============================================================================
---
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/IMAPMessageListPresenter.java
(original)
+++
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/IMAPMessageListPresenter.java
Tue Sep 22 17:48:01 2009
@@ -33,16 +33,20 @@
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.IncreaseUnseenEvent;
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.EmptyResult;
import org.apache.hupa.shared.rpc.MoveMessage;
import org.apache.hupa.shared.rpc.MoveMessageResult;
+import org.apache.hupa.shared.rpc.SetFlag;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
@@ -82,6 +86,8 @@
public void deselectAllMessages();
public HasClickHandlers getSelectAllClick();
public HasClickHandlers getSelectNoneClick();
+ public HasClickHandlers getMarkSeenClick();
+ public HasClickHandlers getMarkUnseenClick();
public void redraw();
}
@@ -199,6 +205,77 @@
}
}));
+ registerHandler(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 (int i = 0; i < selectedMessages.size();
i++) {
+ Message m = selectedMessages.get(i);
+ if
(m.getFlags().contains(IMAPFlag.SEEN) == false) {
+ uids.add(m.getUid());
+ } else {
+ selectedMessages.remove(m);
+ }
+ }
+ dispatcher.execute(new
SetFlag(user.getSessionId(), folder, IMAPFlag.SEEN, true, uids), new
SessionAsyncCallback<EmptyResult>(new AsyncCallback<EmptyResult>() {
+ public void onFailure(Throwable caught)
{
+ GWT.log("ERR=", caught);
+ }
+
+ public void onSuccess(EmptyResult
result) {
+
GWT.log("S="+selectedMessages.size(), null);
+ for (int i = 0; i <
selectedMessages.size(); i++) {
+ Message m =
selectedMessages.get(i);
+ if
(m.getFlags().contains(IMAPFlag.SEEN) == false) {
+
m.getFlags().add(IMAPFlag.SEEN);
+ }
+ }
+ display.redraw();
+ eventBus.fireEvent(new
DecreaseUnseenEvent(user, folder,selectedMessages.size()));
+
+ }
+
+ }, eventBus, user));
+ }
+
+ }));
+
+
registerHandler(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 (int i = 0; i < selectedMessages.size();
i++) {
+ Message m = selectedMessages.get(i);
+ if
(m.getFlags().contains(IMAPFlag.SEEN)) {
+ uids.add(m.getUid());
+ } else {
+ selectedMessages.remove(m);
+ }
+ }
+
+ dispatcher.execute(new
SetFlag(user.getSessionId(), folder, IMAPFlag.SEEN, false, uids), new
SessionAsyncCallback<EmptyResult>(new AsyncCallback<EmptyResult>() {
+ public void onFailure(Throwable caught)
{
+ GWT.log("ERR=", caught);
+ }
+
+ public void onSuccess(EmptyResult
result) {
+ for (int i = 0; i <
selectedMessages.size(); i++) {
+ Message m =
selectedMessages.get(i);
+ if
(m.getFlags().contains(IMAPFlag.SEEN)) {
+
m.getFlags().remove(IMAPFlag.SEEN);
+ }
+ }
+ display.redraw();
+ eventBus.fireEvent(new
IncreaseUnseenEvent(user, folder,selectedMessages.size()));
+
+ }
+
+ }, eventBus, user));
+ }
+
+
+ }));
display.addTableListener(tableListener);
isBound = true;
Modified:
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/IMAPMessageListView.java
URL:
http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/IMAPMessageListView.java?rev=817743&r1=817742&r2=817743&view=diff
==============================================================================
---
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/IMAPMessageListView.java
(original)
+++
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/IMAPMessageListView.java
Tue Sep 22 17:48:01 2009
@@ -111,6 +111,8 @@
private Button deleteAllMailButton = new Button(constants.deleteAll());
private ConfirmDialogBox confirmBox = new ConfirmDialogBox();
private ConfirmDialogBox confirmDeleteAllBox = new ConfirmDialogBox();
+ private Button markSeenButton = new Button(constants.markSeen());
+ private Button markUnSeenButton = new Button(constants.markUnseen());
private ListBox pageBox = new ListBox();
private Hyperlink allLink = new Hyperlink(constants.all(),"");
@@ -206,7 +208,11 @@
buttonBar.add(navigatorBar);
buttonBar.add(deleteAllMailButton);
-
+ ButtonBar markButtonBar = new ButtonBar();
+ markButtonBar.add(markSeenButton);
+ markButtonBar.add(markUnSeenButton);
+ buttonBar.add(markButtonBar);
+
pageBox.addItem("20");
pageBox.addItem("50");
pageBox.addItem("100");
@@ -734,4 +740,20 @@
public HasClickHandlers getDeleteAllClick() {
return deleteAllMailButton;
}
+
+ /*
+ * (non-Javadoc)
+ * @see
org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getMarkSeenClick()
+ */
+ public HasClickHandlers getMarkSeenClick() {
+ return markSeenButton;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see
org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getMarkUnseenClick()
+ */
+ public HasClickHandlers getMarkUnseenClick() {
+ return markUnSeenButton;
+ }
}
Modified:
james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/JavamailUtil.java
URL:
http://svn.apache.org/viewvc/james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/JavamailUtil.java?rev=817743&r1=817742&r2=817743&view=diff
==============================================================================
---
james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/JavamailUtil.java
(original)
+++
james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/JavamailUtil.java
Tue Sep 22 17:48:01 2009
@@ -43,20 +43,24 @@
Flag[] flagArray = flags.getSystemFlags();
for (int i = 0; i < flagArray.length; i++) {
Flag flag = flagArray[i];
- if (flag.equals(Flag.SEEN)) {
- fList.add(IMAPFlag.SEEN);
- } else if (flag.equals(Flag.RECENT)) {
- fList.add(IMAPFlag.RECENT);
- } else if (flag.equals(Flag.ANSWERED)) {
- fList.add(IMAPFlag.ANSWERED);
- } else if (flag.equals(Flag.DELETED)) {
- fList.add(IMAPFlag.DELETED);
- }
+ fList.add(convert(flag));
}
return fList;
}
+ public static IMAPFlag convert(Flag flag) {
+ if (flag.equals(Flag.SEEN)) {
+ return IMAPFlag.SEEN;
+ } else if (flag.equals(Flag.RECENT)) {
+ return IMAPFlag.RECENT;
+ } else if (flag.equals(Flag.ANSWERED)) {
+ return IMAPFlag.ANSWERED;
+ } else if (flag.equals(Flag.DELETED)) {
+ return IMAPFlag.DELETED;
+ }
+ throw new IllegalArgumentException("Flag not supported");
+ }
/**
* Convert the given ArrayList of IMAPFlags to a Flags object
*
@@ -66,22 +70,25 @@
public static Flags convert(ArrayList<IMAPFlag> imapFlags) {
Flags iFlags = new Flags();
for ( int i = 0; i< imapFlags.size(); i++) {
- Flag f = null;
IMAPFlag flag = imapFlags.get(i);
- if (flag.equals(IMAPFlag.SEEN)) {
- f = Flag.SEEN;
- } else if (flag.equals(IMAPFlag.RECENT)) {
- f = Flag.RECENT;
- } else if (flag.equals(IMAPFlag.ANSWERED)) {
- f = Flag.ANSWERED;
- } else if (flag.equals(IMAPFlag.DELETED)) {
- f = Flag.DELETED;
- }
- if (f != null) {
- iFlags.add(f);
- }
+
+ iFlags.add(convert(flag));
+
}
return iFlags;
}
+ public static Flag convert(IMAPFlag flag) {
+ if (flag.equals(IMAPFlag.SEEN)) {
+ return Flag.SEEN;
+ } else if (flag.equals(IMAPFlag.RECENT)) {
+ return Flag.RECENT;
+ } else if (flag.equals(IMAPFlag.ANSWERED)) {
+ return Flag.ANSWERED;
+ } else if (flag.equals(IMAPFlag.DELETED)) {
+ return Flag.DELETED;
+ }
+ throw new IllegalArgumentException("Flag not supported");
+
+ }
}
Modified:
james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/SetFlagsHandler.java
URL:
http://svn.apache.org/viewvc/james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/SetFlagsHandler.java?rev=817743&r1=817742&r2=817743&view=diff
==============================================================================
---
james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/SetFlagsHandler.java
(original)
+++
james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/SetFlagsHandler.java
Tue Sep 22 17:48:01 2009
@@ -25,6 +25,7 @@
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.MessagingException;
+import javax.mail.Flags.Flag;
import javax.servlet.http.HttpSession;
import net.customware.gwt.dispatch.server.ExecutionContext;
@@ -63,8 +64,11 @@
f.open(Folder.READ_WRITE);
}
Message[] msgs = f.getMessagesByUID(toArray(uids));
- Flags flags = JavamailUtil.convert(action.getFlags());
- f.setFlags(msgs, flags, true);
+ Flag flag = JavamailUtil.convert(action.getFlag());
+ Flags flags = new Flags();
+ flags.add(flag);
+
+ f.setFlags(msgs, flags, action.getValue());
f.close(false);
return new EmptyResult();
} catch (MessagingException e) {
Added:
james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/events/IncreaseUnseenEvent.java
URL:
http://svn.apache.org/viewvc/james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/events/IncreaseUnseenEvent.java?rev=817743&view=auto
==============================================================================
---
james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/events/IncreaseUnseenEvent.java
(added)
+++
james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/events/IncreaseUnseenEvent.java
Tue Sep 22 17:48:01 2009
@@ -0,0 +1,67 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you under the Apache License, Version 2.0 (the *
+ * "License"); you may not use this file except in compliance *
+ * with the License. You may obtain a copy of the License at *
+ * *
+ * http://www.apache.org/licenses/LICENSE-2.0 *
+ * *
+ * Unless required by applicable law or agreed to in writing, *
+ * software distributed under the License is distributed on an *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
+ * KIND, either express or implied. See the License for the *
+ * specific language governing permissions and limitations *
+ * under the License. *
+ ****************************************************************/
+
+package org.apache.hupa.shared.events;
+
+import org.apache.hupa.shared.data.IMAPFolder;
+import org.apache.hupa.shared.data.User;
+
+import com.google.gwt.event.shared.GwtEvent;
+
+public class IncreaseUnseenEvent extends GwtEvent<IncreaseUnseenEventHandler>{
+
+ public final static Type<IncreaseUnseenEventHandler> TYPE = new
Type<IncreaseUnseenEventHandler>();
+ private User user;
+ private IMAPFolder folder;
+ private int amount;
+
+ public IncreaseUnseenEvent(User user, IMAPFolder folder) {
+ this(user, folder, 1);
+ }
+
+ public IncreaseUnseenEvent(User user, IMAPFolder folder, int amount) {
+ this.user =user;
+ this.folder = folder;
+ this.amount = amount;
+ }
+
+ public IMAPFolder getFolder() {
+ return folder;
+ }
+
+ public User getUser() {
+ return user;
+ }
+
+ public int getAmount() {
+ return amount;
+ }
+
+ @Override
+ protected void dispatch(IncreaseUnseenEventHandler handler) {
+ handler.onIncreaseUnseenEvent(this);
+
+ }
+
+ @Override
+ public
com.google.gwt.event.shared.GwtEvent.Type<IncreaseUnseenEventHandler>
getAssociatedType() {
+ return TYPE;
+ }
+
+}
Added:
james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/events/IncreaseUnseenEventHandler.java
URL:
http://svn.apache.org/viewvc/james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/events/IncreaseUnseenEventHandler.java?rev=817743&view=auto
==============================================================================
---
james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/events/IncreaseUnseenEventHandler.java
(added)
+++
james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/events/IncreaseUnseenEventHandler.java
Tue Sep 22 17:48:01 2009
@@ -0,0 +1,27 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you under the Apache License, Version 2.0 (the *
+ * "License"); you may not use this file except in compliance *
+ * with the License. You may obtain a copy of the License at *
+ * *
+ * http://www.apache.org/licenses/LICENSE-2.0 *
+ * *
+ * Unless required by applicable law or agreed to in writing, *
+ * software distributed under the License is distributed on an *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
+ * KIND, either express or implied. See the License for the *
+ * specific language governing permissions and limitations *
+ * under the License. *
+ ****************************************************************/
+
+package org.apache.hupa.shared.events;
+
+import com.google.gwt.event.shared.EventHandler;
+
+public interface IncreaseUnseenEventHandler extends EventHandler{
+
+ public void onIncreaseUnseenEvent(IncreaseUnseenEvent event);
+}
Modified:
james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/SetFlag.java
URL:
http://svn.apache.org/viewvc/james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/SetFlag.java?rev=817743&r1=817742&r2=817743&view=diff
==============================================================================
---
james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/SetFlag.java
(original)
+++
james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/SetFlag.java
Tue Sep 22 17:48:01 2009
@@ -30,17 +30,18 @@
*
*/
private static final long serialVersionUID = 662741801793895357L;
- private ArrayList<IMAPFlag> flags;
+ private IMAPFlag flag;
private ArrayList<Long> uids;
private IMAPFolder folder;
-
- public SetFlag(String session, IMAPFolder folder, ArrayList<IMAPFlag>
flags, ArrayList<Long> uids) {
+ private boolean value;
+
+ public SetFlag(String session, IMAPFolder folder, IMAPFlag flag,
boolean value, ArrayList<Long> uids) {
super(session);
- this.flags = flags;
+ this.flag = flag;
+ this.value = value;
this.uids = uids;
this.folder = folder;
}
-
protected SetFlag() {
}
@@ -49,8 +50,11 @@
return folder;
}
- public ArrayList<IMAPFlag> getFlags() {
- return flags;
+ public boolean getValue() {
+ return value;
+ }
+ public IMAPFlag getFlag() {
+ return flag;
}
public ArrayList<Long> getUids() {
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]