FileChooser 仅适用于当前项目中的单个目录
FileChooser only for single directories in current project
我正在开发 IntelliJ-IDEA 插件。
我正在尝试 select 当前项目中的单个目录,使用它们的 FileChooser
类。
这是我目前的情况:
public class MyAction extends AnAction {
public void actionPerformed(AnActionEvent actionEvent) {
com.intellij.openapi.project.Project project = actionEvent.getProject();
final DataContext dataContext = actionEvent.getDataContext();
assert project != null;
final PsiFile currentFile = DataKeys.PSI_FILE.getData(dataContext);
VirtualFile chooseFile = project.getBaseDir();
if (currentFile != null) {
chooseFile = currentFile.getVirtualFile();
}
FileChooserDescriptor descriptor = FileChooserDescriptorFactory.createSingleFolderDescriptor();
chooseFile = FileChooser.chooseFile(descriptor, project, chooseFile);
if (chooseFile == null) {
return;
}
... do stuff with the file
}
}
我想限制FileChooser只显示当前IDEA项目中的文件。 FileChooser 应该要么使 select 无法执行任何其他操作,要么在用户执行 select 其他操作时显示错误。有办法吗?
您可能会想做这样的事情:
descriptor.setRoots(ProjectRootManager.getInstance(project).getContentRoots());
我正在开发 IntelliJ-IDEA 插件。
我正在尝试 select 当前项目中的单个目录,使用它们的 FileChooser
类。
这是我目前的情况:
public class MyAction extends AnAction {
public void actionPerformed(AnActionEvent actionEvent) {
com.intellij.openapi.project.Project project = actionEvent.getProject();
final DataContext dataContext = actionEvent.getDataContext();
assert project != null;
final PsiFile currentFile = DataKeys.PSI_FILE.getData(dataContext);
VirtualFile chooseFile = project.getBaseDir();
if (currentFile != null) {
chooseFile = currentFile.getVirtualFile();
}
FileChooserDescriptor descriptor = FileChooserDescriptorFactory.createSingleFolderDescriptor();
chooseFile = FileChooser.chooseFile(descriptor, project, chooseFile);
if (chooseFile == null) {
return;
}
... do stuff with the file
}
}
我想限制FileChooser只显示当前IDEA项目中的文件。 FileChooser 应该要么使 select 无法执行任何其他操作,要么在用户执行 select 其他操作时显示错误。有办法吗?
您可能会想做这样的事情:
descriptor.setRoots(ProjectRootManager.getInstance(project).getContentRoots());