diff options
Diffstat (limited to 'scripting/java/com/sun/star/script/framework/provider/ScriptEditor.java')
-rw-r--r-- | scripting/java/com/sun/star/script/framework/provider/ScriptEditor.java | 61 |
1 files changed, 55 insertions, 6 deletions
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 32ebd2fefb41..dbcb3b0bc7a9 100644 --- a/scripting/java/com/sun/star/script/framework/provider/ScriptEditor.java +++ b/scripting/java/com/sun/star/script/framework/provider/ScriptEditor.java @@ -18,13 +18,62 @@ 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; -public interface ScriptEditor { - Object execute() throws Exception; - void indicateErrorLine(int lineNum); - void edit(XScriptContext context, ScriptMetaData entry); - String getTemplate(); - String getExtension(); +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 isMacroExectionEnabled() { + 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 |