0
我很好奇是否可以分配快捷鍵來運行特定的EASE腳本。我知道我可以add scripts to UI,但對於我來說,應用快捷鍵是更熟悉和便捷的方式來完成我的工作。如何分配快捷鍵來運行特定的EASE腳本
也許,首先我應該創建一個彈出式菜單項,然後爲該項分配一個鍵。所以我已經添加了the context menu item,但是我找不到首選項>>常規>>鍵。
我很好奇是否可以分配快捷鍵來運行特定的EASE腳本。我知道我可以add scripts to UI,但對於我來說,應用快捷鍵是更熟悉和便捷的方式來完成我的工作。如何分配快捷鍵來運行特定的EASE腳本
也許,首先我應該創建一個彈出式菜單項,然後爲該項分配一個鍵。所以我已經添加了the context menu item,但是我找不到首選項>>常規>>鍵。
我發現運行特定EASE腳本輸入鍵序列方式:
當我輸入密鑰序列時,會調用命令處理程序的名爲「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);
}
});
}
}