如何将快捷键分配给 运行 特定的 EASE 脚本

How to assign a shortcut key to run a particular EASE script

我很好奇是否可以将快捷键分配给 运行 特定的 EASE 脚本。我知道我可以 add scripts to UI,但对我来说,应用快捷键是更熟悉和方便的工作方式。

也许,首先我应该创建一个弹出菜单项,然后为该项目分配一个键。所以我添加了 the context menu item 但我在 首选项 >> 常规 >> 键 .

中找不到对该项目的任何引用

我找到了 运行 键入一系列键的特定 EASE 脚本的方法:

  1. 创建一个 eclipse 插件项目;
  2. 添加扩展点以定义键绑定、命令处理程序和简易模块;
  3. 编写模块 class 和命令处理程序 class。

当我键入键序列时调用命令处理程序的方法 "execute"。因为我可以使用该模块同步访问命令处理程序,所以我可以从 "execute" 方法中将代码分配为 运行。

这是plugin.xml:

<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<plugin>
   <extension point="org.eclipse.ui.bindings">
        <key sequence="Ctrl+Shift+D"
            commandId="m5.command_0"
            schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
            contextId="org.eclipse.jdt.ui.javaEditorScope"/>
   </extension>
   <extension point="org.eclipse.ui.commands">
        <command name="Execute custom command"
            defaultHandler="m5.handlers.CustomHandler_0"
            description="Execute custom command"
            categoryId="org.eclipse.jdt.ui.category.source"
            id="m5.command_0">
       </command>
   </extension>
   <extension
         point="org.eclipse.ease.modules">
      <module
            category="org.eclipse.ease.category.system"
            class="m5.handlers.Module1"
            id="M5.module1"
            name="M5.module1"
            visible="true">
      </module>
   </extension>
</plugin>

这是命令处理程序:

package m5.handlers;

import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;

public class CustomHandler_0 extends AbstractHandler {

    private static Runnable runnable;

    protected synchronized static void setRunnableToExecute(Runnable codeToRun){
        runnable = codeToRun;
    }

    @Override
    public Object execute(ExecutionEvent arg0) throws ExecutionException {
        System.out.println("command_0");
        if(runnable != null){
            runnable.run();
        }
        return null;
    }
}

这是模块:

package m5.handlers;

import org.eclipse.ease.modules.AbstractScriptModule;
import org.eclipse.ease.modules.WrapToScript;

import m5.handlers.CustomHandler_0;

public class Module1 extends AbstractScriptModule{

    @WrapToScript
    public void setCommand_0(String code){
        CustomHandler_0.setRunnableToExecute(new Runnable(){
            @Override
            public void run() {
                getScriptEngine().executeAsync(code);
            }
        });
    }
}