按 ContentTypeId 过滤文件系统文件选择对话框
Filter file system file selection dialog by ContentTypeId
在我们正在开发的 Eclipse 插件中,我们使用 org.eclipse.core.contenttype.contentTypes
扩展点定义了自定义内容类型。我们成功地使用内容类型来启用或禁用 [=23=] 组件,例如,基于用户是否正在编辑该类型的文件。
我想更进一步,也想用它来过滤文件选择对话框中的文件,以便它只显示与内容类型匹配的文件。
我发现以这种方式过滤 JFace Viewer ,因此对于工作区中的文件,我们可以使用 ElementTreeSelectionDialog
并添加 ViewerFilter
.
有没有办法对整个文件系统的文件选择对话框做同样的事情(而不是按文件扩展名过滤)?或者这是不可能的,因为它仅限于 OS 的过滤?
标准SWTFileDialog
只能按文件扩展名过滤,不能扩展。
您可以使用带有树查看器和查看器过滤器的普通 Java File
或 Path
API 编写自己的文件选择对话框。
因为文件位于工作区之外,所以您无法使用任何 IResource
、IFile
、IFolder
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();
在我们正在开发的 Eclipse 插件中,我们使用 org.eclipse.core.contenttype.contentTypes
扩展点定义了自定义内容类型。我们成功地使用内容类型来启用或禁用 [=23=] 组件,例如,基于用户是否正在编辑该类型的文件。
我想更进一步,也想用它来过滤文件选择对话框中的文件,以便它只显示与内容类型匹配的文件。
我发现以这种方式过滤 JFace Viewer ElementTreeSelectionDialog
并添加 ViewerFilter
.
有没有办法对整个文件系统的文件选择对话框做同样的事情(而不是按文件扩展名过滤)?或者这是不可能的,因为它仅限于 OS 的过滤?
标准SWTFileDialog
只能按文件扩展名过滤,不能扩展。
您可以使用带有树查看器和查看器过滤器的普通 Java File
或 Path
API 编写自己的文件选择对话框。
因为文件位于工作区之外,所以您无法使用任何 IResource
、IFile
、IFolder
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();