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]

Reply via email to