在我们正在开发的Eclipse插件中,我们使用org.eclipse.core.contenttype.contentTypes
扩展点定义了自定义内容类型。我们已成功使用内容类型启用或禁用UI组件,具体取决于用户是否正在编辑该类型的文件。
我希望更进一步,并使用它来过滤文件选择对话框中的文件,这样它只显示与内容类型匹配的文件。
我发现以这种方式过滤JFace Viewer is possible,因此对于工作区中的文件,我们可以使用ElementTreeSelectionDialog
并添加ViewerFilter
。
有没有办法对整个文件系统的文件选择对话框执行相同的操作(而不是按文件扩展名进行过滤)?或者这是不可能的,因为它仅限于操作系统的过滤?
答案 0 :(得分:1)
标准SWT FileDialog
只能通过文件扩展名进行过滤,无法扩展。
您可以使用普通的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();