【问题标题】:Eclipse - "Virtual" ResourcesEclipse - “虚拟”资源
【发布时间】:2012-09-19 21:04:00
【问题描述】:

我正在编写一个使用虚拟树状文件结构的插件。基本上它就像一个包含文件的标准文件系统,不同之处在于这些文件实际上并不存在于文件系统中的特定位置,而仅仅是 java 对象。

这些目前由使用 SettingProvider 的导航器(使用 Common Navigator 框架的自定义实现)支持,并且与这些对象的交互就像与标准文件的交互一样实现。

但是,现在有必要在这些对象上粘贴标记。根据我对 Eclipse 框架的理解,标记只能附加到 *IResource*s,所以为了实现这个目标,我应该创建 IResource 的实例,而不是使用 *SettingProvider*s。 p>

但是,标准实现只允许从文件系统创建资源。由于存在诸如虚拟文件夹之类的东西,因此必须有可能创建虚拟资源,即在文件系统中没有实际位置的资源。 但是我该怎么做呢?我的研究似乎毫无进展……

或者,是否有可能以不同的方式实现所需的功能(将标记粘贴到 CNF 导航器中的对象)?

提前致谢!

【问题讨论】:

    标签: eclipse eclipse-plugin eclipse-rcp cnf


    【解决方案1】:

    对,标记只能附加到工作区中的资源。为了实现自定义文件系统,Eclipse 提供了 EFS 机制,以提供“类文件”结构,有关更多信息,请参阅http://wiki.eclipse.org/EFS - 在此页面上,您还可以找到示例实现的链接,这些链接应该让您了解如何实现您自己的文件系统贡献者。 但是:恕我直言,在您的场景中使用 Eclipses 标记系统是错误的方法。所有的东西都与工作空间模型紧密耦合,而工作空间模型不适用于自定义数据模型。根据我的经验,最好的方法是

    1. 拥有完全适合您的数据模型的自己的标记模型,
    2. 为你的树实现一个装饰器(通过扩展点)
    3. 实现类似问题视图的功能以可视化标记。

    虽然实现已经存在的类似东西听起来有点奇怪,但它会为您省去很多麻烦,因为您的场景不受工作区模型和 api 边界的限制。

    【讨论】:

    • 实现自定义标记系统听起来确实是最合理的。非常感谢。
    • @Tom Seidel 有趣的建议不要使用 eclipse 标记,因为通常的概念是重用 eclipse 功能。我有类似的东西,我在EditorPart 里面有一个TableViewer 和从文件中获取输入的编辑器部分。我可以使用该资源创建一个标记,然后使用IGotoMarker 收听此标记的选择(例如在标记视图中)并将选择设置为TableViewer。我现在如何向人们解释不要使用这种方式来使用 Eclipse 默认视图?那之后一直主张相反。未来会出现什么样的问题?
    • @2c00L 好吧,我的信息只是按其初衷使用这些概念。如果您不在对象模型中处理IResources,则不应添加额外的代码来满足概念和接口,尽管它有所不同。您的示例,绑定到IResourceEditorPart 是重用eclipse Markers 功能的典型场景。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多