From 62507968a52ea82a8a0ec91a3f16826f111e7d9a Mon Sep 17 00:00:00 2001 From: Bruno Sinou Date: Sat, 17 Oct 2015 15:20:32 +0000 Subject: [PATCH] Move the workbench specific OpenFile command to the appropriate bundle git-svn-id: https://svn.argeo.org/commons/trunk@8503 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- .../argeo/eclipse/ui/specific/OpenFile.java | 59 +++++++-------- .../ui/workbench/commands/DumpNode.java | 4 +- .../ui/workbench/commands/OpenFile.java | 75 +++++++++++++++++++ .../META-INF/spring/commands.xml | 4 +- org.argeo.security.ui.rap/bnd.bnd | 2 +- org.argeo.security.ui.rap/plugin.xml | 2 +- 6 files changed, 106 insertions(+), 40 deletions(-) create mode 100644 org.argeo.eclipse.ui.workbench/src/org/argeo/eclipse/ui/workbench/commands/OpenFile.java 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 409b96ded..46de2c918 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,59 +17,52 @@ package org.argeo.eclipse.ui.specific; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -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; /** - * RWT 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 precized 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 { +public class OpenFile { private final static Log log = LogFactory.getLog(OpenFile.class); - /* 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"; + // /* 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 { - String fileName = event.getParameter(PARAM_FILE_NAME); - String fileUri = event.getParameter(PARAM_FILE_URI); - - // Sanity check - if (fileUri == null || "".equals(fileUri.trim()) - || openFileServiceId == null - || "".equals(openFileServiceId.trim())) - 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("&").append(PARAM_FILE_NAME).append("="); + url.append("&").append(OpenFileService.PARAM_FILE_NAME).append("="); url.append(fileName); - url.append("&").append(PARAM_FILE_URI).append("="); + url.append("&").append(OpenFileService.PARAM_FILE_URI).append("="); url.append(fileUri); String downloadUrl = url.toString(); @@ -81,8 +74,8 @@ public class OpenFile extends AbstractHandler { return null; } - /* DEPENDENCY INJECTION */ - public void setOpenFileServiceId(String openFileServiceId) { - this.openFileServiceId = openFileServiceId; - } + // /* DEPENDENCY INJECTION */ + // public void setOpenFileServiceId(String openFileServiceId) { + // this.openFileServiceId = openFileServiceId; + // } } \ No newline at end of file diff --git a/org.argeo.eclipse.ui.workbench/src/org/argeo/eclipse/ui/workbench/commands/DumpNode.java b/org.argeo.eclipse.ui.workbench/src/org/argeo/eclipse/ui/workbench/commands/DumpNode.java index 9712e727e..4943ccbf3 100644 --- a/org.argeo.eclipse.ui.workbench/src/org/argeo/eclipse/ui/workbench/commands/DumpNode.java +++ b/org.argeo.eclipse.ui.workbench/src/org/argeo/eclipse/ui/workbench/commands/DumpNode.java @@ -30,7 +30,6 @@ import javax.jcr.RepositoryException; import javax.jcr.Session; import org.argeo.ArgeoException; -import org.argeo.eclipse.ui.specific.OpenFile; import org.argeo.eclipse.ui.workbench.CommandUtils; import org.argeo.eclipse.ui.workbench.WorkbenchUiPlugin; import org.argeo.eclipse.ui.workbench.jcr.internal.model.SingleJcrNodeElem; @@ -105,7 +104,6 @@ public class DumpNode extends AbstractHandler { Map params = new HashMap(); params.put(OpenFile.PARAM_FILE_NAME, fileName); params.put(OpenFile.PARAM_FILE_URI, "file://" + path); - CommandUtils.callCommand("org.argeo.security.ui.specific.openFile", - params); + CommandUtils.callCommand(OpenFile.ID, params); } } diff --git a/org.argeo.eclipse.ui.workbench/src/org/argeo/eclipse/ui/workbench/commands/OpenFile.java b/org.argeo.eclipse.ui.workbench/src/org/argeo/eclipse/ui/workbench/commands/OpenFile.java new file mode 100644 index 000000000..6d745715b --- /dev/null +++ b/org.argeo.eclipse.ui.workbench/src/org/argeo/eclipse/ui/workbench/commands/OpenFile.java @@ -0,0 +1,75 @@ +/* + * 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. + * 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.argeo.eclipse.ui.workbench.commands; + +import org.argeo.eclipse.ui.specific.OpenFileService; +import org.argeo.eclipse.ui.workbench.WorkbenchUiPlugin; +import org.eclipse.core.commands.AbstractHandler; +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.commands.ExecutionException; + +/** + * RWT 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. + * + *

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

+ * + *

+ * 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); + + /* DEPENDENCY INJECTION */ + private String openFileServiceId; + + public final static String ID = WorkbenchUiPlugin.ID + ".dumpNode"; + 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 { + + String fileName = event.getParameter(PARAM_FILE_NAME); + String fileUri = event.getParameter(PARAM_FILE_URI); + // 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; + } + + /* DEPENDENCY INJECTION */ + public void setOpenFileServiceId(String openFileServiceId) { + this.openFileServiceId = openFileServiceId; + } +} \ No newline at end of file diff --git a/org.argeo.security.ui.rap/META-INF/spring/commands.xml b/org.argeo.security.ui.rap/META-INF/spring/commands.xml index 0dc74d0f4..802d31de6 100644 --- a/org.argeo.security.ui.rap/META-INF/spring/commands.xml +++ b/org.argeo.security.ui.rap/META-INF/spring/commands.xml @@ -12,8 +12,8 @@ - + diff --git a/org.argeo.security.ui.rap/bnd.bnd b/org.argeo.security.ui.rap/bnd.bnd index dffe8ff61..87c4eca4c 100644 --- a/org.argeo.security.ui.rap/bnd.bnd +++ b/org.argeo.security.ui.rap/bnd.bnd @@ -4,7 +4,7 @@ Bundle-ActivationPolicy: lazy Require-Bundle: org.eclipse.rap.ui,org.eclipse.core.runtime Import-Package: org.argeo.eclipse.spring,\ -org.argeo.eclipse.ui.specific,\ +org.argeo.eclipse.ui.workbench.commands,\ org.argeo.cms,\ org.argeo.cms.auth,\ org.argeo.security.ui,\ diff --git a/org.argeo.security.ui.rap/plugin.xml b/org.argeo.security.ui.rap/plugin.xml index 693a4ddf0..5f99d7f57 100644 --- a/org.argeo.security.ui.rap/plugin.xml +++ b/org.argeo.security.ui.rap/plugin.xml @@ -38,7 +38,7 @@