コード例 #1
0
ファイル: ScriptingWindow.java プロジェクト: ryancar/OmegaT
  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;
  }
コード例 #2
0
ファイル: ScriptingWindow.java プロジェクト: ryancar/OmegaT
  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();
    }
  }
コード例 #3
0
ファイル: ScriptingWindow.java プロジェクト: ryancar/OmegaT
  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());
  }