From 8ee12c0beec54f7382853853bb8ee1d90bdcbea2 Mon Sep 17 00:00:00 2001 From: Zsombor Gegesy Date: Thu, 12 Jul 2012 23:34:16 +0200 Subject: [PATCH 1/3] Add view image link to the attachment list which opens in a new window --- .../apache/hupa/client/mvp/IMAPMessageView.java | 19 +++++++++++++++---- client/src/main/webapp/Hupa.css | 4 ++++ .../server/servlet/DownloadAttachmentServlet.java | 7 +++++-- .../main/java/org/apache/hupa/shared/SConsts.java | 1 + .../apache/hupa/shared/data/MessageAttachment.java | 4 ++++ .../java/org/apache/hupa/widgets/WidgetsCSS.java | 2 +- 6 files changed, 30 insertions(+), 7 deletions(-) diff --git a/client/src/main/java/org/apache/hupa/client/mvp/IMAPMessageView.java b/client/src/main/java/org/apache/hupa/client/mvp/IMAPMessageView.java index 643c741..b87b523 100644 --- a/client/src/main/java/org/apache/hupa/client/mvp/IMAPMessageView.java +++ b/client/src/main/java/org/apache/hupa/client/mvp/IMAPMessageView.java @@ -41,6 +41,7 @@ import com.google.gwt.event.dom.client.HasClickHandlers; import com.google.gwt.user.client.DOM; import com.google.gwt.user.client.Element; import com.google.gwt.user.client.Window; +import com.google.gwt.user.client.ui.Anchor; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.HTML; @@ -147,10 +148,7 @@ public class IMAPMessageView extends Composite implements Display{ link.setStyleName(HupaCSS.C_hyperlink); link.addClickHandler(new ClickHandler() { public void onClick(ClickEvent event) { - String url = GWT.getModuleBaseURL() + SConsts.SERVLET_DOWNLOAD - + "?" + SConsts.PARAM_NAME + "=" + messageAttachment.getName() - + "&" + SConsts.PARAM_FOLDER + "=" + folder - + "&" + SConsts.PARAM_UID + "=" + uid; + String url = getUrl(messageAttachment, folder, uid, false); if (downloadIframe == null) Window.open(url,"_blank", ""); else @@ -161,10 +159,23 @@ public class IMAPMessageView extends Composite implements Display{ aPanel.addStyleName(HupaCSS.C_attachment); aPanel.add(new Image(imageBundle.attachmentIcon())); aPanel.add(link); + if (messageAttachment.isImage()) { + Anchor viewImageLink = new Anchor("View",getUrl(messageAttachment, folder, uid, true), "_blank"); + viewImageLink.setStyleName(HupaCSS.C_attachment_view); + aPanel.add(viewImageLink); + } attachments.add(aPanel); } } } + + private String getUrl(MessageAttachment messageAttachment, String folder, long uid, boolean inline) { + return GWT.getModuleBaseURL() + SConsts.SERVLET_DOWNLOAD + + "?" + SConsts.PARAM_NAME + "=" + messageAttachment.getName() + + "&" + SConsts.PARAM_FOLDER + "=" + folder + + "&" + SConsts.PARAM_UID + "=" + uid + + (inline ? "&" + SConsts.PARAM_MODE + "=inline" : ""); + } public HasClickHandlers getForwardButtonClick() { return forwardMsgButton; diff --git a/client/src/main/webapp/Hupa.css b/client/src/main/webapp/Hupa.css index ab00b50..5aa17b3 100644 --- a/client/src/main/webapp/Hupa.css +++ b/client/src/main/webapp/Hupa.css @@ -288,6 +288,10 @@ div.hupa-msgview-content { cursor: pointer; } +.hupa-attachment-view { + margin-left: 10px; +} + /************[ view: MessageSendView ]*******************/ table.hupa-msgsend { width: 100%; diff --git a/server/src/main/java/org/apache/hupa/server/servlet/DownloadAttachmentServlet.java b/server/src/main/java/org/apache/hupa/server/servlet/DownloadAttachmentServlet.java index cf440c2..8bc3f67 100644 --- a/server/src/main/java/org/apache/hupa/server/servlet/DownloadAttachmentServlet.java +++ b/server/src/main/java/org/apache/hupa/server/servlet/DownloadAttachmentServlet.java @@ -79,8 +79,11 @@ public class DownloadAttachmentServlet extends HttpServlet { String message_uuid = request.getParameter(SConsts.PARAM_UID); String attachmentName = request.getParameter(SConsts.PARAM_NAME); String folderName = request.getParameter(SConsts.PARAM_FOLDER); - response.setHeader("Content-disposition", "attachment; filename=" - + attachmentName + ""); + String mode = request.getParameter(SConsts.PARAM_MODE); + if (!"inline".equals(mode)) { + response.setHeader("Content-disposition", "attachment; filename=" + + attachmentName + ""); + } InputStream in = null; OutputStream out = response.getOutputStream(); diff --git a/shared/src/main/java/org/apache/hupa/shared/SConsts.java b/shared/src/main/java/org/apache/hupa/shared/SConsts.java index eb62b9f..2e5bad3 100644 --- a/shared/src/main/java/org/apache/hupa/shared/SConsts.java +++ b/shared/src/main/java/org/apache/hupa/shared/SConsts.java @@ -30,6 +30,7 @@ public class SConsts { public static final String PARAM_NAME = "name"; public static final String PARAM_FOLDER = "folder"; public static final String PARAM_UID = "uid"; + public static final String PARAM_MODE = "mode"; public static final String USER_SESS_ATTR = "user"; public static final String CONTACTS_SESS_ATTR = "contacts"; diff --git a/shared/src/main/java/org/apache/hupa/shared/data/MessageAttachment.java b/shared/src/main/java/org/apache/hupa/shared/data/MessageAttachment.java index a165d97..f8e54e0 100644 --- a/shared/src/main/java/org/apache/hupa/shared/data/MessageAttachment.java +++ b/shared/src/main/java/org/apache/hupa/shared/data/MessageAttachment.java @@ -72,6 +72,10 @@ public class MessageAttachment implements Serializable { public String getContentType() { return cType; } + + public boolean isImage() { + return cType != null && cType.toLowerCase().startsWith("image/"); + } /** * Set the content size in bytes diff --git a/widgets/src/main/java/org/apache/hupa/widgets/WidgetsCSS.java b/widgets/src/main/java/org/apache/hupa/widgets/WidgetsCSS.java index c71820e..2301d06 100644 --- a/widgets/src/main/java/org/apache/hupa/widgets/WidgetsCSS.java +++ b/widgets/src/main/java/org/apache/hupa/widgets/WidgetsCSS.java @@ -25,5 +25,5 @@ public class WidgetsCSS { public static final String C_loading = "hupa-loading"; public static final String C_hupa_rnd_container = "hupa-rounded"; public static final String C_attachment = "hupa-attachment"; - + public static final String C_attachment_view = "hupa-attachment-view"; } -- 1.7.9.5