X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=base%2Fruntime%2Forg.argeo.eclipse.ui.rap%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Feclipse%2Fui%2Fspecific%2FFileHandler.java;h=927747e62dd6775d46a5595ce3aa2c876049a152;hb=621ccf3d8ac1cac5b617d9e31161eee75f730713;hp=ad551b47939e657625c8622af6c8830040262ad5;hpb=654a906a9507d52d3f3b8f1505c6ad56ad68334a;p=lgpl%2Fargeo-commons.git diff --git a/base/runtime/org.argeo.eclipse.ui.rap/src/main/java/org/argeo/eclipse/ui/specific/FileHandler.java b/base/runtime/org.argeo.eclipse.ui.rap/src/main/java/org/argeo/eclipse/ui/specific/FileHandler.java index ad551b479..927747e62 100644 --- a/base/runtime/org.argeo.eclipse.ui.rap/src/main/java/org/argeo/eclipse/ui/specific/FileHandler.java +++ b/base/runtime/org.argeo.eclipse.ui.rap/src/main/java/org/argeo/eclipse/ui/specific/FileHandler.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2007-2012 Mathieu Baudier + * Copyright (C) 2007-2012 Argeo GmbH * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,14 +15,12 @@ */ package org.argeo.eclipse.ui.specific; -import java.net.URL; - import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.eclipse.rwt.RWT; -import org.eclipse.rwt.service.IServiceHandler; -import org.eclipse.rwt.service.IServiceManager; -import org.eclipse.ui.PlatformUI; +import org.argeo.ArgeoException; +import org.eclipse.rap.rwt.RWT; +import org.eclipse.rap.rwt.client.service.UrlLauncher; +import org.eclipse.rap.rwt.service.ServiceHandler; /** * RAP SPECIFIC handler to enable the opening of a download dialog box triggered @@ -32,39 +30,36 @@ import org.eclipse.ui.PlatformUI; * instantiation time. * * Manages the process of forwarding the request to the handler at runtime to - * open the dialog box - * + * open the dialog box encodedURL */ +@Deprecated public class FileHandler { - public final static String FORCED_DOWNLOAD_URL_BASE_PROPERTY = "argeo.rap.specific.forcedDownloadUrlBase"; - + public final static String DOWNLOAD_SERVICE_NAME = "argeo.rap.download.service"; private final static Log log = LogFactory.getLog(FileHandler.class); public FileHandler(FileProvider provider) { - // Instantiate and register the DownloadServicHandler. - IServiceManager manager = RWT.getServiceManager(); - IServiceHandler handler = new DownloadServiceHandler(provider); - manager.registerServiceHandler("downloadServiceHandler", handler); + ServiceHandler handler = new DownloadServiceHandler(provider); + try { + RWT.getServiceManager().registerServiceHandler( + DOWNLOAD_SERVICE_NAME, handler); + } catch (IllegalArgumentException iae) { + log.warn("Handler is already registered, clean this registering process"); + } } public void openFile(String fileName, String fileId) { - - // See RAP FAQ: - // http://wiki.eclipse.org/RAP/FAQ#How_to_provide_download_link.3F - // And forum discussion : - // http://www.eclipse.org/forums/index.php?t=msg&th=205487&start=0&S=43d85dacc88b505402420592109c7240 - try { + String downloadUrl = RWT.getServiceManager().getServiceHandlerUrl( + DOWNLOAD_SERVICE_NAME) + + createParamUrl(fileName, fileId); if (log.isTraceEnabled()) - log.trace("URL : " + createFullDownloadUrl(fileName, fileId)); - - URL url = new URL(createFullDownloadUrl(fileName, fileId)); - PlatformUI.getWorkbench().getBrowserSupport() - .createBrowser("DownloadDialog").openURL(url); + log.debug("URL : " + downloadUrl); + UrlLauncher launcher = RWT.getClient() + .getService(UrlLauncher.class); + launcher.openURL(downloadUrl); } catch (Exception e) { - e.printStackTrace(); + throw new ArgeoException("Unable to open file " + fileName, e); } - // These lines are useless in the current use case but might be // necessary with new browsers. Stored here for memo // response.setContentType("application/force-download"); @@ -74,30 +69,12 @@ public class FileHandler { // response.setHeader("Cache-Control", "no-cache, must-revalidate"); } - private String createFullDownloadUrl(String fileName, String fileId) { - StringBuilder url = new StringBuilder(); - // in case RAP is proxied we need to specify the actual base URL - // TODO find a cleaner way - String forcedDownloadUrlBase = System - .getProperty(FORCED_DOWNLOAD_URL_BASE_PROPERTY); - if (forcedDownloadUrlBase != null) - url.append(forcedDownloadUrlBase); - else - url.append(RWT.getRequest().getRequestURL()); - url.append(createParamUrl(fileName, fileId)); - return url.toString(); - } - private String createParamUrl(String filename, String fileId) { StringBuilder url = new StringBuilder(); - url.append("?"); - url.append(IServiceHandler.REQUEST_PARAM); - url.append("=downloadServiceHandler"); url.append("&filename="); url.append(filename); url.append("&fileid="); url.append(fileId); - String encodedURL = RWT.getResponse().encodeURL(url.toString()); - return encodedURL; + return url.toString(); } -} +} \ No newline at end of file