2015-11-27 19 views

回答

0

我發現運行特定EASE腳本輸入鍵序列方式:

  1. 創建一個Eclipse插件項目;
  2. 添加擴展點以定義鍵綁定,命令處理程序和緩動模塊;
  3. 編寫一個模塊類和一個命令處理程序類。

當我輸入密鑰序列時,會調用命令處理程序的名爲「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); 
      } 
     }); 
    } 
} 
相關問題