我编写了一个插件,将一个组添加到“新文件”菜单,我希望我的操作启动一个特定的文件模板。据我了解,该操作称为“ NewFromTemplate”,但是我遇到了两个问题:


如何调用已经存在的动作(在本例中为NewFromTemplate)?
由于我希望它从特定模板创建文件,因此如何将参数传递给它。


我想出的最好的是:

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


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

最佳答案

这就是我的操作方式(仅是一个使用硬编码模板名称显示所需方法的示例)

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


    }

}


}

09-27 18:44