Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Eclipse 按ContentTypeId筛选文件系统文件选择对话框_Eclipse_Eclipse Plugin - Fatal编程技术网

Eclipse 按ContentTypeId筛选文件系统文件选择对话框

Eclipse 按ContentTypeId筛选文件系统文件选择对话框,eclipse,eclipse-plugin,Eclipse,Eclipse Plugin,在我们正在开发的Eclipse插件中,我们使用扩展点org.Eclipse.core.contenttype.contentTypes定义了一个自定义内容类型。我们成功地使用内容类型来启用或禁用UI组件,例如,基于用户是否正在编辑该类型的文件 我想更进一步,并使用它在文件选择对话框中过滤文件,这样它只显示与内容类型匹配的文件 我发现用这种方式过滤JFace查看器,因此对于工作区中的文件,我们可以使用ElementTreeSelectionDialog并添加ViewerFilter 是否有方法对整

在我们正在开发的Eclipse插件中,我们使用扩展点
org.Eclipse.core.contenttype.contentTypes
定义了一个自定义内容类型。我们成功地使用内容类型来启用或禁用UI组件,例如,基于用户是否正在编辑该类型的文件

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

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


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

标准SWT
FileDialog
只能按文件扩展名过滤,不能扩展

您可以使用带有树查看器和查看器过滤器的普通Java
文件
路径
API编写自己的文件选择对话框

由于文件位于工作区之外,因此不能使用任何
IResource
IFile
IFolder
API。但是,您仍然可以使用允许您访问内容类型的
IContentTypeManager
界面

IContentTypeManager=Platform.getContentTypeManager();
如果文件扩展名足以区分您可以使用的文件:

IContentType contentType=manager.findContentTypeFor(“文件名”);
如果需要使用内容描述符,请使用:

InputStream=。。。新文件输入流(。。。。
IContentType contentType=manager.findContentTypeFor(流,“文件名”);
stream.close();

如果您指的是SWT
FileDialog
您只能使用文件扩展名筛选。除了回答使用标准
FileDialog
实现此目的的可能性之外,您还清楚地解释了如何创建符合我们需要的对话框。谢谢。