Author: norman
Date: Sat Sep 5 21:02:52 2009
New Revision: 811713
URL: http://svn.apache.org/viewvc?rev=811713&view=rev
Log:
Add support for viewing the original message (LABS-435)
Added:
labs/hupa/trunk/client/src/main/java/org/apache/hupa/client/widgets/MyDialogBox.java
labs/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/GetRawMessageHandler.java
labs/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/RawMessage.java
labs/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/RawMessageResult.java
Modified:
labs/hupa/trunk/client/src/main/java/org/apache/hupa/client/HupaConstants.java
labs/hupa/trunk/client/src/main/java/org/apache/hupa/client/HupaConstants.properties
labs/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/IMAPMessagePresenter.java
labs/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/IMAPMessageView.java
labs/hupa/trunk/client/src/main/java/org/apache/hupa/client/widgets/ConfirmDialogBox.java
labs/hupa/trunk/server/src/main/java/org/apache/hupa/server/guice/ServerModul.java
Modified:
labs/hupa/trunk/client/src/main/java/org/apache/hupa/client/HupaConstants.java
URL:
http://svn.apache.org/viewvc/labs/hupa/trunk/client/src/main/java/org/apache/hupa/client/HupaConstants.java?rev=811713&r1=811712&r2=811713&view=diff
==============================================================================
---
labs/hupa/trunk/client/src/main/java/org/apache/hupa/client/HupaConstants.java
(original)
+++
labs/hupa/trunk/client/src/main/java/org/apache/hupa/client/HupaConstants.java
Sat Sep 5 21:02:52 2009
@@ -99,4 +99,6 @@
public String loginAs();
public String backButton();
+
+ public String rawButton();
}
Modified:
labs/hupa/trunk/client/src/main/java/org/apache/hupa/client/HupaConstants.properties
URL:
http://svn.apache.org/viewvc/labs/hupa/trunk/client/src/main/java/org/apache/hupa/client/HupaConstants.properties?rev=811713&r1=811712&r2=811713&view=diff
==============================================================================
---
labs/hupa/trunk/client/src/main/java/org/apache/hupa/client/HupaConstants.properties
(original)
+++
labs/hupa/trunk/client/src/main/java/org/apache/hupa/client/HupaConstants.properties
Sat Sep 5 21:02:52 2009
@@ -39,3 +39,4 @@
pageFirst=First
loginAs=Login as
backButton=Back
+rawButton=Show raw message
Modified:
labs/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/IMAPMessagePresenter.java
URL:
http://svn.apache.org/viewvc/labs/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/IMAPMessagePresenter.java?rev=811713&r1=811712&r2=811713&view=diff
==============================================================================
---
labs/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/IMAPMessagePresenter.java
(original)
+++
labs/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/IMAPMessagePresenter.java
Sat Sep 5 21:02:52 2009
@@ -22,14 +22,16 @@
import java.util.ArrayList;
import java.util.List;
-import net.customware.gwt.dispatch.client.DispatchAsync;
+import net.customware.gwt.presenter.client.DisplayCallback;
import net.customware.gwt.presenter.client.EventBus;
import net.customware.gwt.presenter.client.place.Place;
import net.customware.gwt.presenter.client.place.PlaceRequest;
import net.customware.gwt.presenter.client.widget.WidgetDisplay;
import net.customware.gwt.presenter.client.widget.WidgetPresenter;
+import org.apache.hupa.client.CachingDispatchAsync;
import org.apache.hupa.client.MyAsyncCallback;
+import org.apache.hupa.client.widgets.HasDialog;
import org.apache.hupa.shared.Util;
import org.apache.hupa.shared.data.IMAPFolder;
import org.apache.hupa.shared.data.Message;
@@ -42,6 +44,8 @@
import org.apache.hupa.shared.events.ReplyMessageEvent;
import org.apache.hupa.shared.rpc.DeleteMessage;
import org.apache.hupa.shared.rpc.DeleteMessageResult;
+import org.apache.hupa.shared.rpc.RawMessage;
+import org.apache.hupa.shared.rpc.RawMessageResult;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
@@ -60,9 +64,10 @@
public HasText getCc();
public HasText getSubject();
-
+ public HasText getShowRawMessageText();
+ public HasDialog getShowRawMessageDialog();
public HasHTML getContent();
-
+ public HasClickHandlers getShowRawMessageClick();
public HasClickHandlers getDeleteButtonClick();
public HasClickHandlers getReplyButtonClick();
public HasClickHandlers getReplyAllButtonClick();
@@ -74,13 +79,13 @@
public static final Place PLACE = new Place("IMAPMessage");
private MessageDetails messageDetails;
private Message message;
- private DispatchAsync dispatcher;
+ private CachingDispatchAsync dispatcher;
private IMAPFolder folder;
private User user;
private boolean isBound = false;
@Inject
- private IMAPMessagePresenter(IMAPMessagePresenter.Display
display,EventBus bus, DispatchAsync dispatcher) {
+ private IMAPMessagePresenter(IMAPMessagePresenter.Display
display,EventBus bus, CachingDispatchAsync dispatcher) {
super(display,bus);
this.dispatcher = dispatcher;
}
@@ -163,6 +168,28 @@
}
}));
+
registerHandler(display.getShowRawMessageClick().addClickHandler(new
ClickHandler() {
+
+ public void onClick(ClickEvent event) {
+ dispatcher.executeWithCache(new
RawMessage(user.getSessionId(),folder,message.getUid()), new
DisplayCallback<RawMessageResult>(display) {
+
+ @Override
+ protected void handleFailure(Throwable
e) {
+ // TODO Auto-generated method
stub
+
+ }
+
+ @Override
+ protected void
handleSuccess(RawMessageResult result) {
+
display.getShowRawMessageText().setText(result.getRawMessage());
+
display.getShowRawMessageDialog().show();
+ }
+
+
+ });
+ }
+
+ }));
isBound = true;
}
Modified:
labs/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/IMAPMessageView.java
URL:
http://svn.apache.org/viewvc/labs/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/IMAPMessageView.java?rev=811713&r1=811712&r2=811713&view=diff
==============================================================================
---
labs/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/IMAPMessageView.java
(original)
+++
labs/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/IMAPMessageView.java
Sat Sep 5 21:02:52 2009
@@ -24,6 +24,9 @@
import org.apache.hupa.client.HupaConstants;
import org.apache.hupa.client.bundles.HupaImageBundle;
import org.apache.hupa.client.mvp.IMAPMessagePresenter.Display;
+import org.apache.hupa.client.widgets.HasDialog;
+import org.apache.hupa.client.widgets.Loading;
+import org.apache.hupa.client.widgets.MyDialogBox;
import org.apache.hupa.shared.data.MessageAttachment;
import org.cobogw.gwt.user.client.ui.Button;
import org.cobogw.gwt.user.client.ui.ButtonBar;
@@ -47,6 +50,7 @@
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.ScrollPanel;
+import com.google.gwt.user.client.ui.SimplePanel;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
@@ -64,13 +68,16 @@
private Button replyMsgButton = new Button();
private Button replyAllMsgButton = new Button();
private Button forwardMsgButton = new Button();
+ private Hyperlink showRawButton = new
Hyperlink(constants.rawButton(),"");
private Hyperlink backButton = new Hyperlink(constants.backButton(),"");
private FlowPanel attachments = new FlowPanel();
-
+ private MyDialogBox rawDialogBox = new MyDialogBox();
+ private Label rawLabel = new Label();
public final static int DELETE_BUTTON = 0;
public final static int REPLY_BUTTON = 1;
public final static int REPLY_ALL_BUTTON = 2;
-
+ private Loading loading = new Loading(true);
+ private SimplePanel container = new SimplePanel();
public IMAPMessageView() {
final VerticalPanel mPanel = new VerticalPanel();
mPanel.setWidth(Window.getClientWidth() -200 +"px");
@@ -138,6 +145,7 @@
buttonPanel.addStyleName("hupa-IMAPMessageWidget-ButtonBar");
+ container.setWidget(showRawButton);
ButtonBar buttonBar = new ButtonBar();
buttonBar.add(replyMsgButton);
@@ -146,6 +154,9 @@
buttonBar.add(forwardMsgButton);
buttonBar.setWidth("100%");
buttonPanel.add(buttonBar);
+
+ buttonPanel.add(container);
+ buttonPanel.setCellHorizontalAlignment(container,
HorizontalPanel.ALIGN_RIGHT);
buttonPanel.add(backButton);
buttonPanel.setCellHorizontalAlignment(backButton,
HorizontalPanel.ALIGN_RIGHT);
mPanel.add(buttonPanel);
@@ -156,6 +167,13 @@
sPanel.add(msgArea);
mPanel.add(sPanel);
+ DOM.setStyleAttribute(rawLabel.getElement(), "whiteSpace", "pre");
+ ScrollPanel rawPanel = new ScrollPanel(rawLabel);
+ rawPanel.setAlwaysShowScrollBars(false);
+ rawPanel.setHeight("500px");
+ rawDialogBox.add(rawPanel);
+ rawDialogBox.setAnimationEnabled(true);
+ rawDialogBox.setAutoHideEnabled(true);
initWidget(mPanel);
}
@@ -184,11 +202,13 @@
}
public void startProcessing() {
-
+ container.setWidget(loading);
+ loading.show();
}
public void stopProcessing() {
-
+ container.setWidget(showRawButton);
+ loading.hide();
}
public HasClickHandlers getDeleteButtonClick() {
@@ -239,5 +259,17 @@
public HasClickHandlers getBackButtonClick() {
return backButton;
}
+
+ public HasClickHandlers getShowRawMessageClick() {
+ return showRawButton;
+ }
+
+ public HasDialog getShowRawMessageDialog() {
+ return rawDialogBox;
+ }
+
+ public HasText getShowRawMessageText() {
+ return rawLabel;
+ }
}
Modified:
labs/hupa/trunk/client/src/main/java/org/apache/hupa/client/widgets/ConfirmDialogBox.java
URL:
http://svn.apache.org/viewvc/labs/hupa/trunk/client/src/main/java/org/apache/hupa/client/widgets/ConfirmDialogBox.java?rev=811713&r1=811712&r2=811713&view=diff
==============================================================================
---
labs/hupa/trunk/client/src/main/java/org/apache/hupa/client/widgets/ConfirmDialogBox.java
(original)
+++
labs/hupa/trunk/client/src/main/java/org/apache/hupa/client/widgets/ConfirmDialogBox.java
Sat Sep 5 21:02:52 2009
@@ -28,11 +28,10 @@
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.dom.client.HasClickHandlers;
import com.google.gwt.event.shared.HandlerRegistration;
-import com.google.gwt.user.client.ui.DialogBox;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.VerticalPanel;
-public class ConfirmDialogBox extends DialogBox implements
HasClickHandlers,HasDialog{
+public class ConfirmDialogBox extends MyDialogBox implements HasClickHandlers {
private HupaConstants constants = GWT.create(HupaConstants.class);
private Label text = new Label();
private ButtonBar bar = new ButtonBar();
Added:
labs/hupa/trunk/client/src/main/java/org/apache/hupa/client/widgets/MyDialogBox.java
URL:
http://svn.apache.org/viewvc/labs/hupa/trunk/client/src/main/java/org/apache/hupa/client/widgets/MyDialogBox.java?rev=811713&view=auto
==============================================================================
---
labs/hupa/trunk/client/src/main/java/org/apache/hupa/client/widgets/MyDialogBox.java
(added)
+++
labs/hupa/trunk/client/src/main/java/org/apache/hupa/client/widgets/MyDialogBox.java
Sat Sep 5 21:02:52 2009
@@ -0,0 +1,7 @@
+package org.apache.hupa.client.widgets;
+
+import com.google.gwt.user.client.ui.DialogBox;
+
+public class MyDialogBox extends DialogBox implements HasDialog{
+
+}
Modified:
labs/hupa/trunk/server/src/main/java/org/apache/hupa/server/guice/ServerModul.java
URL:
http://svn.apache.org/viewvc/labs/hupa/trunk/server/src/main/java/org/apache/hupa/server/guice/ServerModul.java?rev=811713&r1=811712&r2=811713&view=diff
==============================================================================
---
labs/hupa/trunk/server/src/main/java/org/apache/hupa/server/guice/ServerModul.java
(original)
+++
labs/hupa/trunk/server/src/main/java/org/apache/hupa/server/guice/ServerModul.java
Sat Sep 5 21:02:52 2009
@@ -38,6 +38,7 @@
import org.apache.hupa.server.handler.FetchMessagesHandler;
import org.apache.hupa.server.handler.FetchRecentMessagesHandler;
import org.apache.hupa.server.handler.ForwardMessageHandler;
+import org.apache.hupa.server.handler.GetRawMessageHandler;
import org.apache.hupa.server.handler.LoginSessionHandler;
import org.apache.hupa.server.handler.LoginUserHandler;
import org.apache.hupa.server.handler.LogoutUserHandler;
@@ -82,6 +83,7 @@
bindHandler(DeleteFolderHandler.class);
bindHandler(CreateFolderHandler.class);
bindHandler(TagMessagesHandler.class);
+ bindHandler(GetRawMessageHandler.class);
bind(FileItemRegistry.class).in(Singleton.class);
bind(IMAPStoreCache.class).to(InMemoryIMAPStoreCache.class).in(Singleton.class);
bind(Log.class).toProvider(LogProvider.class).in(Singleton.class);
Added:
labs/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/GetRawMessageHandler.java
URL:
http://svn.apache.org/viewvc/labs/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/GetRawMessageHandler.java?rev=811713&view=auto
==============================================================================
---
labs/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/GetRawMessageHandler.java
(added)
+++
labs/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/GetRawMessageHandler.java
Sat Sep 5 21:02:52 2009
@@ -0,0 +1,87 @@
+/****************************************************************
+ * 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.server.handler;
+
+import java.io.ByteArrayOutputStream;
+
+import javax.mail.Folder;
+import javax.mail.Message;
+import javax.servlet.http.HttpSession;
+
+import net.customware.gwt.dispatch.server.ExecutionContext;
+import net.customware.gwt.dispatch.shared.ActionException;
+
+import org.apache.commons.logging.Log;
+import org.apache.hupa.server.IMAPStoreCache;
+import org.apache.hupa.shared.data.User;
+import org.apache.hupa.shared.rpc.RawMessage;
+import org.apache.hupa.shared.rpc.RawMessageResult;
+
+import com.google.inject.Inject;
+import com.google.inject.Provider;
+import com.sun.mail.imap.IMAPFolder;
+import com.sun.mail.imap.IMAPStore;
+
+public class GetRawMessageHandler extends AbstractSessionHandler<RawMessage,
RawMessageResult>{
+
+ @Inject
+ public GetRawMessageHandler(IMAPStoreCache cache, Log logger,
+ Provider<HttpSession> sessionProvider) {
+ super(cache, logger, sessionProvider);
+ }
+
+ @Override
+ protected RawMessageResult executeInternal(RawMessage action,
+ ExecutionContext context) throws ActionException {
+ User user = getUser(action.getSessionId());
+ long uid = action.getUid();
+ org.apache.hupa.shared.data.IMAPFolder folder =
action.getFolder();
+ try {
+ IMAPStore store = cache.get(user);
+ IMAPFolder f = (IMAPFolder)
store.getFolder(folder.getFullName());
+ if (f.isOpen() == false) {
+ f.open(Folder.READ_ONLY);
+ }
+ Message m = f.getMessageByUID(action.getUid());
+
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ m.writeTo(out);
+ if (f.isOpen()) {
+ f.close(false);
+ }
+ return new RawMessageResult(out.toString());
+ } catch (Exception e) {
+ logger.error("Unable to get raw content of msg for user
" + user
+ + " in folder " + folder + " with uid "
+ uid, e);
+ throw new ActionException("Unable to et raw content of
msg for user " + user
+ + " in folder " + folder + " with uid "
+ uid);
+ }
+
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see net.customware.gwt.dispatch.server.ActionHandler#getActionType()
+ */
+ public Class<RawMessage> getActionType() {
+ return RawMessage.class;
+ }
+
+}
Added:
labs/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/RawMessage.java
URL:
http://svn.apache.org/viewvc/labs/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/RawMessage.java?rev=811713&view=auto
==============================================================================
---
labs/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/RawMessage.java
(added)
+++
labs/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/RawMessage.java
Sat Sep 5 21:02:52 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.rpc;
+
+import org.apache.hupa.shared.data.IMAPFolder;
+
+public class RawMessage extends Session<RawMessageResult>{
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 5826298202494313834L;
+ private IMAPFolder folder;
+ private long uid;
+
+ public RawMessage(String sessionId, IMAPFolder folder, long uid) {
+ super(sessionId);
+ this.folder = folder;
+ this.uid = uid;
+ }
+
+ @SuppressWarnings("unused")
+ private RawMessage() {
+ }
+
+ public IMAPFolder getFolder() {
+ return folder;
+ }
+
+ public long getUid() {
+ return uid;
+ }
+
+ public boolean equals(Object obj) {
+ if (obj instanceof RawMessage) {
+ RawMessage action = (RawMessage) obj;
+ if (action.getSessionId().equals(getSessionId()) &&
action.getFolder().equals(getFolder()) && action.getUid() == getUid()) {
+ return true;
+ }
+ }
+ return false;
+
+ }
+
+ public int hashCode() {
+ return (int) (getSessionId().hashCode() *
getFolder().hashCode() * getUid());
+ }
+
+}
Added:
labs/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/RawMessageResult.java
URL:
http://svn.apache.org/viewvc/labs/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/RawMessageResult.java?rev=811713&view=auto
==============================================================================
---
labs/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/RawMessageResult.java
(added)
+++
labs/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/RawMessageResult.java
Sat Sep 5 21:02:52 2009
@@ -0,0 +1,45 @@
+/****************************************************************
+ * 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.rpc;
+
+import net.customware.gwt.dispatch.shared.Result;
+
+public class RawMessageResult implements Result{
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = -6244846164658274324L;
+ private String rawMessage;
+
+ protected RawMessageResult() {
+
+ }
+
+ public RawMessageResult(String rawMessage) {
+ this.rawMessage = rawMessage;
+ }
+
+
+ public String getRawMessage() {
+ return rawMessage;
+ }
+
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]