如何在IntelliJ中调用现有的IDE操作?

时间:2014-07-01 13:03:30

标签: java plugins intellij-idea

我已经编写了一个插件,可以将一个组添加到"新文件"菜单,我希望我的动作启动一个特定的文件模板。根据我的理解,该行动被称为" NewFromTemplate",但我遇到了两个问题:

  1. 如何调用已存在的操作,在本例中为NewFromTemplate

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

  3. 我提出的最好的是:

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

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

1 个答案:

答案 0 :(得分: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);
        }


    }

}

}