]>
git.argeo.org Git - lgpl/argeo-commons.git/blob - eclipse/runtime/org.argeo.eclipse.ui.rap/src/main/java/org/argeo/eclipse/ui/specific/FileHandler.java
f873f1a524cf0c078dfa73a120f929cde74916df
1 package org
.argeo
.eclipse
.ui
.specific
;
5 import org
.apache
.commons
.logging
.Log
;
6 import org
.apache
.commons
.logging
.LogFactory
;
7 import org
.eclipse
.rwt
.RWT
;
8 import org
.eclipse
.rwt
.service
.IServiceHandler
;
9 import org
.eclipse
.rwt
.service
.IServiceManager
;
10 import org
.eclipse
.ui
.PlatformUI
;
13 * RAP SPECIFIC handler to enable the opening of a download dialog box triggered
14 * by whatever action in the UI
16 * Manages the registration of the effective DownloadServiceHandler at
19 * Manages the process of forwarding the request to the handler at runtime to
25 public class FileHandler
{
27 private final static Log log
= LogFactory
.getLog(FileHandler
.class);
29 public FileHandler(FileProvider provider
) {
30 // Instantiate and register the DownloadServicHandler.
31 IServiceManager manager
= RWT
.getServiceManager();
32 IServiceHandler handler
= new DownloadServiceHandler(provider
);
33 manager
.registerServiceHandler("downloadServiceHandler", handler
);
36 public void openFile(String fileName
, String fileId
) {
39 // http://wiki.eclipse.org/RAP/FAQ#How_to_provide_download_link.3F
40 // And forum discussion :
41 // http://www.eclipse.org/forums/index.php?t=msg&th=205487&start=0&S=43d85dacc88b505402420592109c7240
44 if (log
.isDebugEnabled())
45 log
.debug("URL : " + createFullDownloadUrl(fileName
, fileId
));
47 URL url
= new URL(createFullDownloadUrl(fileName
, fileId
));
48 PlatformUI
.getWorkbench().getBrowserSupport()
49 .createBrowser("DownloadDialog").openURL(url
);
50 } catch (Exception e
) {
54 // These lines are useless in the current use case but might be
55 // necessary with new browsers. Stored here for memo
56 // response.setContentType("application/force-download");
57 // response.setHeader("Content-Disposition", contentDisposition);
58 // response.setHeader("Content-Transfer-Encoding", "binary");
59 // response.setHeader("Pragma", "no-cache");
60 // response.setHeader("Cache-Control", "no-cache, must-revalidate");
63 private String
createFullDownloadUrl(String fileName
, String fileId
) {
64 StringBuilder url
= new StringBuilder();
65 url
.append(RWT
.getRequest().getRequestURL());
66 url
.append(createParamUrl(fileName
, fileId
));
67 return url
.toString();
70 private String
createParamUrl(String filename
, String fileId
) {
71 StringBuilder url
= new StringBuilder();
73 url
.append(IServiceHandler
.REQUEST_PARAM
);
74 url
.append("=downloadServiceHandler");
75 url
.append("&filename=");
77 url
.append("&fileid=");
79 String encodedURL
= RWT
.getResponse().encodeURL(url
.toString());