X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.eclipse.ui.rap%2Fsrc%2Forg%2Fargeo%2Feclipse%2Fui%2Fspecific%2FOpenFile.java;h=10682c4ce554ab6071eaf73b3753da79f3f85918;hb=c149774fa220fe69f430f7b230ac4c442ea6d0fe;hp=b55521b126d804b07ca2332f2600f9dda9bbae4d;hpb=e71b1737815da9f0fdaff1ee1c69773a8c073ef1;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.eclipse.ui.rap/src/org/argeo/eclipse/ui/specific/OpenFile.java b/org.argeo.eclipse.ui.rap/src/org/argeo/eclipse/ui/specific/OpenFile.java index b55521b12..10682c4ce 100644 --- a/org.argeo.eclipse.ui.rap/src/org/argeo/eclipse/ui/specific/OpenFile.java +++ b/org.argeo.eclipse.ui.rap/src/org/argeo/eclipse/ui/specific/OpenFile.java @@ -17,53 +17,64 @@ package org.argeo.eclipse.ui.specific; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.argeo.eclipse.ui.utils.SingleSourcingConstants; import org.eclipse.core.commands.AbstractHandler; import org.eclipse.core.commands.ExecutionEvent; -import org.eclipse.core.commands.ExecutionException; import org.eclipse.rap.rwt.RWT; import org.eclipse.rap.rwt.client.service.UrlLauncher; /** - * Rap specific command handler to open a file retrieved from the server. It - * forwards the request to the correct service after encoding file name and path - * in the request URI. + * RWT specific object to open a file retrieved from the server. It forwards the + * request to the correct service after encoding file name and path in the + * request URI. * + *

* The parameter "URI" is used to determine the correct file service, the path - * and the file name. An optional file name can be precised to present a - * different file name as the one used to retrieve it to the end user/ + * and the file name. An optional file name can be added to present the end user + * with a different file name as the one used to retrieve it. + *

* - * Various instances of this handler with different command ID might coexist in - * order to provide context specific download service. * + *

* The instance specific service is called by its ID and must have been * externally created + *

*/ public class OpenFile extends AbstractHandler { private final static Log log = LogFactory.getLog(OpenFile.class); + public final static String ID = SingleSourcingConstants.OPEN_FILE_CMD_ID; + public final static String PARAM_FILE_NAME = SingleSourcingConstants.PARAM_FILE_NAME; + public final static String PARAM_FILE_URI = SingleSourcingConstants.PARAM_FILE_URI;; /* DEPENDENCY INJECTION */ private String openFileServiceId; - public final static String PARAM_FILE_NAME = OpenFileService.PARAM_FILE_NAME; - public final static String PARAM_FILE_URI = OpenFileService.PARAM_FILE_URI; // "param.fileURI"; - - public Object execute(ExecutionEvent event) throws ExecutionException { + public Object execute(ExecutionEvent event) { String fileName = event.getParameter(PARAM_FILE_NAME); String fileUri = event.getParameter(PARAM_FILE_URI); - - // sanity check - if (fileUri == null || "".equals(fileUri.trim()) - || openFileServiceId == null + // Sanity check + if (fileUri == null || "".equals(fileUri.trim()) || openFileServiceId == null || "".equals(openFileServiceId.trim())) return null; + org.argeo.eclipse.ui.specific.OpenFile openFileClient = new org.argeo.eclipse.ui.specific.OpenFile(); + openFileClient.execute(openFileServiceId, fileUri, fileName); + return null; + } + + public Object execute(String openFileServiceId, String fileUri, String fileName) { + // // Sanity check + // if (fileUri == null || "".equals(fileUri.trim()) + // || openFileServiceId == null + // || "".equals(openFileServiceId.trim())) + // return null; + StringBuilder url = new StringBuilder(); - url.append(RWT.getServiceManager().getServiceHandlerUrl( - openFileServiceId)); + url.append(RWT.getServiceManager().getServiceHandlerUrl(openFileServiceId)); - url.append("&").append(PARAM_FILE_NAME).append("="); + url.append("&").append(SingleSourcingConstants.PARAM_FILE_NAME).append("="); url.append(fileName); - url.append("&").append(PARAM_FILE_URI).append("="); + url.append("&").append(SingleSourcingConstants.PARAM_FILE_URI).append("="); url.append(fileUri); String downloadUrl = url.toString(); @@ -72,14 +83,6 @@ public class OpenFile extends AbstractHandler { UrlLauncher launcher = RWT.getClient().getService(UrlLauncher.class); launcher.openURL(downloadUrl); - - // 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"); - // response.setHeader("Content-Disposition", contentDisposition); - // response.setHeader("Content-Transfer-Encoding", "binary"); - // response.setHeader("Pragma", "no-cache"); - // response.setHeader("Cache-Control", "no-cache, must-revalidate"); return null; } @@ -87,4 +90,4 @@ public class OpenFile extends AbstractHandler { public void setOpenFileServiceId(String openFileServiceId) { this.openFileServiceId = openFileServiceId; } -} \ No newline at end of file +}