【问题标题】:Filter file system file selection dialog by ContentTypeId按 ContentTypeId 过滤文件系统文件选择对话框
【发布时间】:2015-03-07 22:59:22
【问题描述】:

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

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

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

有没有办法对整个文件系统的文件选择对话框做同样的事情(而不是按文件扩展名过滤)?还是因为受限于操作系统的过滤所以这是不可能的?

【问题讨论】:

  • 如果你的意思是 SWT FileDialog 你只能使用文件扩展名过滤。

标签: eclipse eclipse-plugin


【解决方案1】:

标准SWTFileDialog只能通过文件扩展名过滤,不能扩展。

您可以使用带有树查看器和查看器过滤器的普通 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();

【讨论】:

  • 很高兴除了回答(不)为此目的使用标准FileDialog 的可能性之外,您还清楚地解释了如何创建适合我们需要的对话框。谢谢。
猜你喜欢
  • 2012-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-05
  • 2011-04-05
相关资源
最近更新 更多