我已经有一个独立的 Eclipse RCP 应用程序。下一个任务是集成在 Eclipse 社区中广泛使用的插件,如CDT或PyDev,以在已开发的 RCP 应用程序中提供各自编程语言的编辑和调试工具。只是想知道我该如何完成这项任务。我应该开始玩插件的扩展点并将其添加到MANIFEST.MF吗?
实现这一目标的各种方法是什么?选择哪一个而不是另一个?
我已经有一个独立的 Eclipse RCP 应用程序。下一个任务是集成在 Eclipse 社区中广泛使用的插件,如CDT或PyDev,以在已开发的 RCP 应用程序中提供各自编程语言的编辑和调试工具。只是想知道我该如何完成这项任务。我应该开始玩插件的扩展点并将其添加到MANIFEST.MF吗?
实现这一目标的各种方法是什么?选择哪一个而不是另一个?
您应该考虑的最重要的事情(除了技术)是概念。
像 CDT 这样的插件对它们所集成的环境做出了很多假设。这意味着您的 RCP 应该具有与普通 Eclipse SDK 非常相似的用户界面和行为,以便其他“IDE-ish”插件的集成不会破坏 RCP 的界面原则。
如果您的 RCP 不是基于通用导航器、项目、文件(通常是工作区)和几个编辑器,那么 CDT 等插件的集成对您的用户来说将是一场噩梦,并且感觉就像您的 RCP 中的另一个应用程序。
还要确保来自第三方插件的 ui 贡献是可见的(例如,如果第三方插件正在贡献首选项页面,请确保您的 RCP 具有打开首选项窗口的菜单项)
首先,您必须在现有 RCP 应用程序中加载新功能/插件。为此,您必须调整您的产品定义并加载新的 feature.xml 文件。或者您增强自己的 feature.xml 并将新插件放入其中。
之后,您必须决定新功能/视图/透视图是否是对现有 RCP 扩展点的贡献,以及您是否在 RCP 产品中使用此扩展点。
如果您想以另一种方式使用新功能(因为默认值不够),您必须指向新插件中的特定视图/操作并自行调用它们。你必须调整你自己插件的 MANIFEST.MF 并指向新插件。如果这样做,则无法关闭添加的功能,因为您确实有指向这些插件的 jard 链接。
您的 RCP 产品已经依赖于 RCP 特性 (org.eclipse.rcp) 或其插件的子集。这意味着,它已经包含了定义基本扩展点的插件。
要包含附加特性的功能(扩展),只需将这些特性添加到您的产品配置依赖项中。例如,您必须为 CDT 添加特性 org.eclipse.cdt,为 PyDev 添加特性 org.python.pydev.feature。
当您只需要包含一些功能的插件时,困难的部分就开始了。
您必须隔离提供所需功能的插件。对于 UI 贡献,您可以通过选择所需的 UI 部分并单击 alt+shift+F1 来使用插件选择 spy。对于非 UI 贡献,可以在插件源的 plugin.xml 文件中找到贡献扩展的信息。
这些插件及其依赖项可以添加到自定义功能中,该功能可以包含在您的产品中。
尽管已经过时,但构建基于 CDT 的编辑器的文章也可能会有所帮助。