public static Object executeScriptFileHeadless( ScriptItem scriptItem, boolean forceFromFile, Map<String, Object> additionalBindings) { ScriptEngineManager manager = new ScriptEngineManager(ScriptingWindow.class.getClassLoader()); ScriptEngine scriptEngine = manager.getEngineByExtension(getFileExtension(scriptItem.getName())); if (scriptEngine == null) { scriptEngine = manager.getEngineByName(DEFAULT_SCRIPT); } SimpleBindings bindings = new SimpleBindings(); bindings.put(VAR_PROJECT, Core.getProject()); bindings.put(VAR_EDITOR, Core.getEditor()); bindings.put(VAR_GLOSSARY, Core.getGlossary()); bindings.put(VAR_MAINWINDOW, Core.getMainWindow()); bindings.put(VAR_RESOURCES, scriptItem.getResourceBundle()); if (additionalBindings != null) { bindings.putAll(additionalBindings); } Object eval = null; try { eval = scriptEngine.eval(scriptItem.getText(), bindings); if (eval != null) { Log.logRB("SCW_SCRIPT_RESULT"); Log.log(eval.toString()); } } catch (Throwable e) { Log.logErrorRB(e, "SCW_SCRIPT_ERROR"); } return eval; }
public void executeScriptFile( ScriptItem scriptItem, boolean forceFromFile, Map<String, Object> additionalBindings) { ScriptLogger scriptLogger = new ScriptLogger(m_txtResult); ScriptEngine scriptEngine = manager.getEngineByExtension(getFileExtension(scriptItem.getName())); if (scriptEngine == null) { scriptEngine = manager.getEngineByName(DEFAULT_SCRIPT); } // logResult(StaticUtils.format(OStrings.getString("SCW_SELECTED_LANGUAGE"), // scriptEngine.getFactory().getEngineName())); SimpleBindings bindings = new SimpleBindings(); bindings.put(VAR_PROJECT, Core.getProject()); bindings.put(VAR_EDITOR, Core.getEditor()); bindings.put(VAR_GLOSSARY, Core.getGlossary()); bindings.put(VAR_MAINWINDOW, Core.getMainWindow()); bindings.put(VAR_CONSOLE, scriptLogger); bindings.put(VAR_RESOURCES, scriptItem.getResourceBundle()); if (additionalBindings != null) { bindings.putAll(additionalBindings); } // evaluate JavaScript code from String try { String scriptString; if (forceFromFile) { scriptString = scriptItem.getText(); } else if ("".equals(m_txtScriptEditor.getText().trim())) { scriptString = scriptItem.getText(); m_txtScriptEditor.setText(scriptString); } else { scriptString = m_txtScriptEditor.getText(); } if (!scriptString.endsWith("\n")) { scriptString += "\n"; } Object eval = scriptEngine.eval(scriptString, bindings); if (eval != null) { logResult(OStrings.getString("SCW_SCRIPT_RESULT")); logResult(eval.toString()); } } catch (Throwable e) { logResult(OStrings.getString("SCW_SCRIPT_ERROR")); logResult(e.getMessage()); // e.printStackTrace(); } }
private void setQuickScriptMenu(ScriptItem scriptItem, int index) { m_quickScripts[index] = scriptItem.getName(); removeAllQuickScriptActionListenersFrom(m_quickMenus[index]); m_quickMenus[index].addActionListener(new QuickScriptActionListener(index)); // Since the script is run while editing a segment, the shortcut should not interfere // with the segment content, so we set it to a Function key. m_quickMenus[index].setAccelerator(KeyStroke.getKeyStroke("shift ctrl F" + (index + 1))); m_quickMenus[index].setEnabled(true); if ("".equals(scriptItem.getDescription())) { m_quickMenus[index].setToolTipText(scriptItem.getDescription()); } Mnemonics.setLocalizedText( m_quickMenus[index], "&" + scriptKey(index) + " - " + scriptItem.getScriptName()); }