Eclipse 月食-“;虚拟的;资源

Eclipse 月食-“;虚拟的;资源,eclipse,eclipse-plugin,eclipse-rcp,cnf,Eclipse,Eclipse Plugin,Eclipse Rcp,Cnf,我正在编写一个插件,它使用一个虚拟的树状文件结构。基本上,它就像一个包含文件的标准文件系统,不同之处在于这些文件实际上并不存在于文件系统中的特定位置,而是仅仅是java对象 目前,使用SettingProvider的navigator(使用公共navigator框架的自定义实现)支持这些对象,并且与这些对象的交互就像与标准文件的交互一样实现 但是,现在有必要将标记粘贴到这些对象上。根据我对Eclipse框架的理解,标记只能附加到*IResource*s,因此为了实现这一目标,我应该创建IReso

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

目前,使用SettingProvider的navigator(使用公共navigator框架的自定义实现)支持这些对象,并且与这些对象的交互就像与标准文件的交互一样实现

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

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

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


提前谢谢

对,标记只能附加到工作区中的资源。为了实现自定义文件系统,Eclipse提供了EFS机制,提供了“类似文件”的结构,有关更多信息,请参阅-在本页上,您还可以找到指向示例实现的链接,这些链接应该可以让您了解如何实现自己的文件系统贡献者。 但是:依我看,在你的场景中使用日食标记系统是错误的。所有的东西都与工作空间模型紧密耦合,而工作空间模型与自定义数据模型不兼容。根据我的经验,最好的办法是

  • 拥有与您的数据模型完全匹配的标记模型
  • 实现树的装饰器(通过扩展点)
  • 实现类似于Problems视图的功能来可视化标记

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

    实现自定义标记系统听起来确实最合理。非常感谢。@Tom Seidel建议不要使用eclipse标记,因为通常的概念是重用eclipse功能。我有类似的东西,在
    EditorPart
    中有一个
    TableViewer
    和一个编辑器部分,它从文件中获取输入。我可以使用该资源创建一个标记,然后使用
    IGotoMarker
    收听此标记的选择(例如在标记视图中),并将选择设置为
    TableViewer
    。我现在如何向人们解释不使用这种方式来使用eclipse默认视图?在一直鼓吹相反的观点之后。未来会出现什么样的问题?@2c00L好吧,我的信息就是要把这些概念用在它的初衷中。如果不在对象模型中处理
    IResource
    s,则不应添加额外的代码来满足概念和接口,尽管这是不同的。例如,绑定到
    IResource
    EditorPart
    是重用eclipse标记功能的典型场景。