如何在Eclipse中定义“打开声明”(快捷键F3)的自定义操作?

9
我该如何在插件中为“打开声明”(也称为F3)注册其他处理程序/操作/命令?
我想在Java代码中的字符串文字上使用F3,以导航到声明资源包键的文件。我已经准备好了一个上下文菜单操作来完成这项工作。现在唯一缺少的是将其绑定到用户习惯的键的方法。
额外加分的是完整的扩展点注释列表。我已经厌倦了花费半天时间查找必须用于某个功能的扩展点。而且,“注释”不仅仅是指。
Identifier: org.eclipse.ui.workbench.texteditor.quickdiffReferenceProvider
Description: Allows contributors to add reference providers for the quick diff display.

我也在寻找类似的东西。如果存在,我想扩展或覆盖开放声明扩展点。 - Kasturi
3个回答

1

请参阅Eclipse命令教程中的按键绑定部分,了解如何实现命令处理程序并将其绑定到键、菜单和工具栏的详细说明。

Eclipse帮助中提供了扩展点的完整列表,但您需要深入了解才能获得完整的描述和代码示例。插件编辑器中还有一个“添加扩展点”向导,显示简要描述、链接到完整帮助以及对于某些扩展点甚至具有预定义模板。


我尝试过这个,我成功添加了一个上下文菜单项,并显示我已经为F3注册了它,但是当我实际按下F3时,我的代码并没有被调用。只有当我直接选择菜单项时才会被调用。 - Stroboskop

1

也许你已经知道了,虽然 F3 快捷键不能带你到声明资源束键,但有两个类似的方法可以实现:

  • 用鼠标悬停在字符串上会显示转换后的字符串。
  • 按住 Control 键并单击字符串将跳转到声明资源束键。

显然,这两种方法都需要使用鼠标;如果你只想用键盘,可能不太满意。

这并没有直接回答你的问题,但我希望它能有所帮助。


实际上,我对这些很满意,但也想要 F3 快捷键。只是它们对我们不起作用,因为我们没有直接使用 Resourcebundles。我们正在使用一个包装类,而且 Eclipse 不知道如何处理对该类的调用,除非我实现一些扩展点。我已经为控制单击完成了这个操作。我所需要的就是用于快捷键的扩展点。 - Stroboskop

1

很遗憾,没有扩展点供您为此功能进行扩展。我建议您停止尝试深入研究Eclipse命令框架,并且JavaEditor不使用该框架来注册其命令,而是在编辑器打开时注册命令。第三方很难扩展/更改这一点。

F3按下后运行的操作是org.eclipse.jdt.ui.actions.OpenAction

虽然没有容易扩展或更改JavaEditor的方法,但有办法可以做到这一点。对于你的情况,我推荐通过Equinox Aspects(http://www.eclipse.org/equinox/incubator/aspects/)实现。这允许您使用AspectJ编织到Eclipse中,并在需要时进行更改。

这就是AJDT(http://eclipse.org/ajdt)能够改变JDT工作方式的原因。

在您特定的情况下,我建议创建一个切入点,以目标化OpenAction类的实例化并将其替换为您创建的实现。它通常委托给JDT的实现,或者在您需要时运行您的命令。

如果这是您正在寻找的解决方案类型,那么我可以详细说明如何实现它。

虽然这听起来可能行得通,但我还是不想使用Aspect扩展Eclipse。相比实现扩展点接口,这样做会更容易在Eclipse代码更改时出现问题。 - Stroboskop
是的,如果依赖插件公开了扩展点,那么在未来的Eclipse版本中它会更加健壮。然而,不存在允许您执行所需操作的扩展点。您可以打开错误报告并提交补丁,但不能保证JDT UI团队会接受该补丁。因此,实现您所需的更可靠的方法是使用织入。此外,像这样的东西在未来的Eclipse版本中发生变化的风险很低。JDT的这一部分相当稳定,您使用的任何Aspect都不太可能需要更改。 - Andrew Eisenberg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接