我刚开始在IntelliJ插件开发中冒险。 我需要做的是根据所选java文件的代码生成一些代码。 我已经设置了environemt并且我可以成功运行我的插件,我只能在java文件的上下文菜单上显示我的操作:我不知道怎么做是如何读取所选文件的代码,其中对于“阅读”我指的是确定领域,方法等。 我可以很好地使用反射api,但是如何选择加载类?
这是显示仅适用于java文件的菜单项的当前代码
public class MyConditionalAction extends AnAction {
public void actionPerformed(AnActionEvent e) {
DataContext dataContext = e.getDataContext();
VirtualFile virtualFile = PlatformDataKeys.VIRTUAL_FILE.getData(dataContext);
Project project = e.getData(PlatformDataKeys.PROJECT);
//show popup with file path
Messages.showMessageDialog(project, virtualFile.getPath(), "Information", Messages.getInformationIcon());
}
@Override
public void update(AnActionEvent e) {
super.update(e);
determineVisibility(e);
}
private void determineVisibility(AnActionEvent e) {
DataContext dataContext = e.getDataContext();
VirtualFile virtualFile = PlatformDataKeys.VIRTUAL_FILE.getData(dataContext);
e.getPresentation().setVisible(isJava(virtualFile));
}
private boolean isJava(VirtualFile file) {
if (file == null) {
return false;
}
return JavaFileType.INSTANCE.equals(file.getFileType());
}
感谢任何帮助
答案 0 :(得分:2)
您不能使用反射,因为正在编辑的类未编译且未加载到IntelliJ IDEA JVM中。相反,您需要使用PSI API。
DefaultComboBoxModel