按ContentTypeId过滤文件系统文件选择对话框

时间:2015-03-07 14:03:39

标签: eclipse eclipse-plugin

在我们正在开发的Eclipse插件中,我们使用org.eclipse.core.contenttype.contentTypes扩展点定义了自定义内容类型。我们已成功使用内容类型启用或禁用UI组件,具体取决于用户是否正在编辑该类型的文件。

我希望更进一步,并使用它来过滤文件选择对话框中的文件,这样它只显示与内容类型匹配的文件。

我发现以这种方式过滤JFace Viewer is possible,因此对于工作区中的文件,我们可以使用ElementTreeSelectionDialog并添加ViewerFilter

有没有办法对整个文件系统的文件选择对话框执行相同的操作(而不是按文件扩展名进行过滤)?或者这是不可能的,因为它仅限于操作系统的过滤?

1 个答案:

答案 0 :(得分:1)

标准SWT FileDialog只能通过文件扩展名进行过滤,无法扩展。

您可以使用普通的Java FilePath API编写自己的文件选择对话框,其中包含树查看器和查看器过滤器。

由于文件位于工作区之外,因此您无法使用任何IResourceIFileIFolder API。但是,您仍然可以使用IContentTypeManager界面来访问您的内容类型。

IContentTypeManager manager = Platform.getContentTypeManager();

如果文件扩展名足以区分您可以使用的文件:

IContentType contentType = manager.findContentTypeFor("the file name");

如果您需要使用内容描述者使用:

InputStream stream = ... new FileInputStream(....

IContentType contentType = manager.findContentTypeFor(stream, "the file name");

stream.close();