From 063bccfec54f34229412c303d34b3002e063530d Mon Sep 17 00:00:00 2001 From: Stephan Bergmann Date: Mon, 18 Oct 2021 14:37:05 +0200 Subject: Revert incompatible ScriptEditor change ...from interface to abstract class, in 1c42afc194da2288c5a738b727952e80c323885c "Respect DisableMacrosExecution option in javascript editor". It caused 3rd- party code like ScriptProviderForooRexx.oxt to fail to install. Change-Id: I532f27fdce806e471a8551646adbb3aecf80bcee Reviewed-on: https://gerrit.libreoffice.org/c/core/+/123745 Tested-by: Jenkins Reviewed-by: Stephan Bergmann (cherry picked from commit d425cd604cb4d30862640851b11a31e742d81336) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/123770 Reviewed-by: Michael Stahl (cherry picked from commit df9e57d43df5d948c81188ad4cc47166e50ada2a) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/124009 Reviewed-by: Noel Grandin Reviewed-by: Adolfo Jayme Barrientos Tested-by: Adolfo Jayme Barrientos --- scripting/Jar_ScriptFramework.mk | 1 + .../script/framework/provider/ScriptEditor.java | 61 ++---------------- .../framework/provider/ScriptEditorBase.java | 73 ++++++++++++++++++++++ .../beanshell/ScriptEditorForBeanShell.java | 4 +- .../javascript/ScriptEditorForJavaScript.java | 4 +- 5 files changed, 84 insertions(+), 59 deletions(-) create mode 100644 scripting/java/com/sun/star/script/framework/provider/ScriptEditorBase.java diff --git a/scripting/Jar_ScriptFramework.mk b/scripting/Jar_ScriptFramework.mk index 397de3ccbc72..bd15b243f9b2 100644 --- a/scripting/Jar_ScriptFramework.mk +++ b/scripting/Jar_ScriptFramework.mk @@ -46,6 +46,7 @@ $(eval $(call gb_Jar_add_sourcefiles,ScriptFramework,\ scripting/java/com/sun/star/script/framework/provider/PathUtils \ scripting/java/com/sun/star/script/framework/provider/ScriptContext \ scripting/java/com/sun/star/script/framework/provider/ScriptEditor \ + scripting/java/com/sun/star/script/framework/provider/ScriptEditorBase \ scripting/java/com/sun/star/script/framework/provider/ScriptProvider \ scripting/java/com/sun/star/script/framework/provider/SwingInvocation \ scripting/java/Framework/com/sun/star/script/framework/security/SecurityDialog \ diff --git a/scripting/java/com/sun/star/script/framework/provider/ScriptEditor.java b/scripting/java/com/sun/star/script/framework/provider/ScriptEditor.java index 395a1b6a8abb..32ebd2fefb41 100644 --- a/scripting/java/com/sun/star/script/framework/provider/ScriptEditor.java +++ b/scripting/java/com/sun/star/script/framework/provider/ScriptEditor.java @@ -18,62 +18,13 @@ package com.sun.star.script.framework.provider; -import com.sun.star.beans.NamedValue; -import com.sun.star.configuration.theDefaultProvider; -import com.sun.star.container.XNameAccess; -import com.sun.star.lang.XMultiServiceFactory; import com.sun.star.script.framework.container.ScriptMetaData; import com.sun.star.script.provider.XScriptContext; -import com.sun.star.uno.AnyConverter; -import com.sun.star.uno.UnoRuntime; -import javax.swing.JOptionPane; -import javax.swing.JDialog; - -public abstract class ScriptEditor { - public XScriptContext context; - - public abstract Object execute() throws Exception; - public abstract void indicateErrorLine(int lineNum); - public abstract void edit(XScriptContext context, ScriptMetaData entry); - public abstract String getTemplate(); - public abstract String getExtension(); - - public void setContext(XScriptContext context) { - this.context = context; - } - - public boolean isMacroExecutionEnabled() { - XNameAccess xNameAccess = null; - try { - String sAccess = "com.sun.star.configuration.ConfigurationAccess"; - XMultiServiceFactory xMSFCfg = theDefaultProvider.get(context.getComponentContext()); - Object oAccess = xMSFCfg.createInstanceWithArguments(sAccess, - new Object[] { new NamedValue("nodepath", "org.openoffice.Office.Common/Security/Scripting") }); - xNameAccess = UnoRuntime.queryInterface(XNameAccess.class, oAccess); - Object result = xNameAccess.getByName("DisableMacrosExecution"); - boolean bMacrosDisabled = AnyConverter.toBoolean(result); - if (bMacrosDisabled) - return false; - } catch (com.sun.star.uno.Exception e) { - return false; - } - return true; - } - - // Wraps long error messages - private static class NarrowOptionPane extends JOptionPane { - private static final long serialVersionUID = 1L; - public int getMaxCharactersPerLineCount() { - return 100; - } - } - - public void showErrorMessage(String message) { - JOptionPane optionPane = new NarrowOptionPane(); - optionPane.setMessage(message); - optionPane.setMessageType(JOptionPane.ERROR_MESSAGE); - JDialog dialog = optionPane.createDialog(null, "Error"); - dialog.setVisible(true); - } +public interface ScriptEditor { + Object execute() throws Exception; + void indicateErrorLine(int lineNum); + void edit(XScriptContext context, ScriptMetaData entry); + String getTemplate(); + String getExtension(); } \ No newline at end of file diff --git a/scripting/java/com/sun/star/script/framework/provider/ScriptEditorBase.java b/scripting/java/com/sun/star/script/framework/provider/ScriptEditorBase.java new file mode 100644 index 000000000000..1a8bf33a5395 --- /dev/null +++ b/scripting/java/com/sun/star/script/framework/provider/ScriptEditorBase.java @@ -0,0 +1,73 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you 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 . + */ + +package com.sun.star.script.framework.provider; + +import com.sun.star.beans.NamedValue; +import com.sun.star.configuration.theDefaultProvider; +import com.sun.star.container.XNameAccess; +import com.sun.star.lang.XMultiServiceFactory; +import com.sun.star.script.framework.container.ScriptMetaData; +import com.sun.star.script.provider.XScriptContext; +import com.sun.star.uno.AnyConverter; +import com.sun.star.uno.UnoRuntime; + +import javax.swing.JOptionPane; +import javax.swing.JDialog; + +public abstract class ScriptEditorBase implements ScriptEditor { + public XScriptContext context; + + public void setContext(XScriptContext context) { + this.context = context; + } + + public boolean isMacroExecutionEnabled() { + XNameAccess xNameAccess = null; + try { + String sAccess = "com.sun.star.configuration.ConfigurationAccess"; + XMultiServiceFactory xMSFCfg = theDefaultProvider.get(context.getComponentContext()); + Object oAccess = xMSFCfg.createInstanceWithArguments(sAccess, + new Object[] { new NamedValue("nodepath", "org.openoffice.Office.Common/Security/Scripting") }); + xNameAccess = UnoRuntime.queryInterface(XNameAccess.class, oAccess); + Object result = xNameAccess.getByName("DisableMacrosExecution"); + boolean bMacrosDisabled = AnyConverter.toBoolean(result); + if (bMacrosDisabled) + return false; + } catch (com.sun.star.uno.Exception e) { + return false; + } + return true; + } + + // Wraps long error messages + private static class NarrowOptionPane extends JOptionPane { + private static final long serialVersionUID = 1L; + public int getMaxCharactersPerLineCount() { + return 100; + } + } + + public void showErrorMessage(String message) { + JOptionPane optionPane = new NarrowOptionPane(); + optionPane.setMessage(message); + optionPane.setMessageType(JOptionPane.ERROR_MESSAGE); + JDialog dialog = optionPane.createDialog(null, "Error"); + dialog.setVisible(true); + } +} \ No newline at end of file diff --git a/scripting/java/com/sun/star/script/framework/provider/beanshell/ScriptEditorForBeanShell.java b/scripting/java/com/sun/star/script/framework/provider/beanshell/ScriptEditorForBeanShell.java index 2a972df92ff6..0ab265ecc799 100644 --- a/scripting/java/com/sun/star/script/framework/provider/beanshell/ScriptEditorForBeanShell.java +++ b/scripting/java/com/sun/star/script/framework/provider/beanshell/ScriptEditorForBeanShell.java @@ -19,7 +19,7 @@ package com.sun.star.script.framework.provider.beanshell; import com.sun.star.script.framework.container.ScriptMetaData; import com.sun.star.script.framework.provider.ClassLoaderFactory; -import com.sun.star.script.framework.provider.ScriptEditor; +import com.sun.star.script.framework.provider.ScriptEditorBase; import com.sun.star.script.framework.provider.SwingInvocation; import com.sun.star.script.provider.XScriptContext; @@ -49,7 +49,7 @@ import javax.swing.JPanel; import javax.swing.JToolBar; import javax.swing.BorderFactory; -public class ScriptEditorForBeanShell extends ScriptEditor implements ActionListener { +public class ScriptEditorForBeanShell extends ScriptEditorBase implements ActionListener { private JFrame frame; private String filename; diff --git a/scripting/java/com/sun/star/script/framework/provider/javascript/ScriptEditorForJavaScript.java b/scripting/java/com/sun/star/script/framework/provider/javascript/ScriptEditorForJavaScript.java index 8bb0828aff03..1f0e8fd72a16 100644 --- a/scripting/java/com/sun/star/script/framework/provider/javascript/ScriptEditorForJavaScript.java +++ b/scripting/java/com/sun/star/script/framework/provider/javascript/ScriptEditorForJavaScript.java @@ -20,7 +20,7 @@ package com.sun.star.script.framework.provider.javascript; import com.sun.star.script.framework.container.ScriptMetaData; import com.sun.star.script.framework.log.LogUtils; -import com.sun.star.script.framework.provider.ScriptEditor; +import com.sun.star.script.framework.provider.ScriptEditorBase; import com.sun.star.script.framework.provider.SwingInvocation; import com.sun.star.script.provider.XScriptContext; @@ -40,7 +40,7 @@ import org.mozilla.javascript.Scriptable; import org.mozilla.javascript.tools.debugger.Main; import org.mozilla.javascript.tools.debugger.ScopeProvider; -public class ScriptEditorForJavaScript extends ScriptEditor { +public class ScriptEditorForJavaScript extends ScriptEditorBase { // global ScriptEditorForJavaScript instance private static ScriptEditorForJavaScript theScriptEditorForJavaScript; -- cgit