2014-07-01 18 views
1

我已经写了一个插件,将一个组添加到“新文件”菜单中,并且我希望我的操作启动特定的文件模板。从我的理解是所谓的“NewFromTemplate”的动作,但我encoutered两个问题:如何在IntelliJ中调用现有的IDE动作?

  1. 如何调用一个已经存在的动作,在这种情况下NewFromTemplate

  2. 如何将参数传递给它,因为我希望它从特定模板创建文件。

我想出它的最好的是:

ActionManager am = ActionManager.getInstance(); 
AnAction ftAction = am.getAction("NewFromTemplate"); 
ActionManager.getInstance().tryToExecute(
     ftAction, 
     ActionCommand.getInputEvent("NewFromTemplate"), 
     null, 
     ActionPlaces.UNKNOWN, 
     true); 

但它似乎没有任何打开 - 代码执行,但没有打开新窗口。

回答

1

这是我如何(使用硬编码模板名称,以显示所需的方法只是一个例子)

public class FooAction extends AnAction { 

public void actionPerformed(AnActionEvent e) { 
    FileTemplateManager fileTemplateManager = FileTemplateManager.getInstance(); 
    FileTemplate[] templates = fileTemplateManager.getAllTemplates(); 

    for(FileTemplate ft : templates){ 

     if(ft.getName().equals("Singleton")){ 
      AnAction action = new CreateFromTemplateAction(ft); 
      action.actionPerformed(e); 
     } 


    } 

} 

}

做到了
相关问题