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

时间:2015-11-27 20:45:35

标签: eclipse scripting keyboard-shortcuts

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

也许,首先我应该创建一个弹出菜单项,然后为该项指定一个键。所以我添加了the context menu item,但我找不到偏好设置>>常规>>键中该项目的任何引用。

1 个答案:

答案 0 :(得分:0)

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

  1. 创建一个eclipse插件项目;
  2. 添加扩展点以定义键绑定,命令处理程序和简易模块;
  3. 编写模块类和命令处理程序类。
  4. 命令处理程序的方法叫做"执行"在键入键序列时调用。因为我可以使用模块同步访问命令处理程序,所以我可以分配代码来运行"执行"方法

    这是 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);
                }
            });
        }
    }