我编写了一个插件,将一个组添加到“新文件”菜单,并且我希望我的操作启动特定的文件模板。据我了解,该操作称为“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);
}
}
}
}
关于java - 如何在 IntelliJ 中调用现有的 IDE 操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24511026/