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

标签 java plugins intellij-idea

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

  1. 如何调用已经存在的操作(在本例中为 NewFromTemplate)?

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

我想出的最好的办法是:

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


    }

}

}

关于java - 如何在 IntelliJ 中调用现有的 IDE 操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24511026/

相关文章:

php - WordPress 错误 "A variable mismatch has been detected."

macos - 插件和框架的区别

intellij-idea - 如何管理 IntelliJ IDEA 上下文

java - 如何让TCP和UDP服务器同时启动?只有其中任何一个开始的地方

php - WordPress - 插件页面上的更新通知

intellij-idea - 如何将 intellij 32bit xmlx 增加超过 1GB?

java - IntellIj IDEA 找不到源文件

java - NumberFormatException Android Java

java - java 提供字节数据而不复制它的首选方式是什么

java - 使用 Spring,如何将子 bean 注入(inject)父 bean 中?