【问题标题】:Eclipse RCP Compare with each other commandEclipse RCP 相互比较命令
【发布时间】:2013-10-10 22:52:57
【问题描述】:

我正在开发一个基于 3.x 构建的 Eclipse RCP 应用程序,并已被软合并到 4.x 中。

我希望将像包资源管理器中的“相互比较”菜单项添加到我创建的目录视图中。 Eclipse 的可用命令中没有用于此操作的选项。通过一些 Eclipse 代码,他们所做的方式是通过 org.eclipse.ui.popupMenus 扩展使用 objectContribution,但已被弃用。

这是否意味着我必须与“从头开始”进行比较?

【问题讨论】:

    标签: java eclipse eclipse-rcp


    【解决方案1】:

    查看比较操作org.eclipse.compare.internal.CompareAction,它使用CompareUI.openCompareEditorOnPage,这是一个已定义的API,因此可以使用。使用的比较编辑器输入是 org.eclipse.compare.internal.ResourceCompareInput,它是内部的,但似乎没有使用任何其他内部类 - 因此您可以编写自己的 ResourceCompareInput 版本而不会太麻烦。

    【讨论】:

      【解决方案2】:

      现在,您不再为 popupMenu 扩展点做出贡献,而是使用指向 popupMenu 位置的位置 URI 为菜单扩展点做出贡献。

      See this StackOverflow post to get a better explanation of the solution.

      就实际实现相互比较命令的相互比较处理程序的代码而言,如果您有权访问旧代码,您可能可以重用菜单事件的处理,前提是您将其连接到新菜单事件。

      【讨论】:

      • 我知道如何为弹出菜单做贡献。我的问题更多的是包资源管理器的上下文菜单中提供的“相互比较”菜单项。
      • 如果有,那么您只需要找到实现监听上下文菜单的菜单监听器的代码,并找到它调度请求的位置。该接收处理程序具有代码,并且可能会提供您正在寻找的大部分内容;但是,如果您甚至有一点“与现有的不同”的需求,那么在查看该处理程序之前,您可能无法确定什么是可重用的。可能是一个简单的调整,也可能不是。
      • 动作在 Eclipse 的内部类之一中。所以这意味着我可能不得不自己编写与编辑器的比较。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-24
      相关资源
      最近更新 更多