如何为“自定义”定义自定义操作;公开声明;Eclipse中的(快捷方式F3)

如何为“自定义”定义自定义操作;公开声明;Eclipse中的(快捷方式F3),eclipse,eclipse-plugin,eclipse-jdt,Eclipse,Eclipse Plugin,Eclipse Jdt,如何在插件中为“开放声明”(又称F3)注册额外的处理程序/操作/命令 我想对Java代码中的字符串文本使用F3,以导航到声明资源包密钥的文件。我已经准备好了一个上下文菜单操作来完成这项工作。缺少的只是将其绑定到用户习惯使用的密钥的方法 完整的扩展点注释列表的额外积分。我已经厌倦了花半天的时间来寻找一个特性的扩展点。我所说的“注释”不仅仅是指 Identifier: org.eclipse.ui.workbench.texteditor.quickdiffReferenceProvider Des

如何在插件中为“开放声明”(又称F3)注册额外的处理程序/操作/命令

我想对Java代码中的字符串文本使用F3,以导航到声明资源包密钥的文件。我已经准备好了一个上下文菜单操作来完成这项工作。缺少的只是将其绑定到用户习惯使用的密钥的方法

完整的扩展点注释列表的额外积分。我已经厌倦了花半天的时间来寻找一个特性的扩展点。我所说的“注释”不仅仅是指

Identifier: org.eclipse.ui.workbench.texteditor.quickdiffReferenceProvider
Description: Allows contributors to add reference providers for the quick diff display.

有关如何实现命令处理程序并将其绑定到键、菜单和工具栏的详细说明,请参见中的键绑定部分


Eclipse帮助中提供了一个示例,不过您必须深入查看以获得完整的描述和代码示例。plugin editor中还有一个“添加扩展点”向导,它显示了一个简短的描述、指向完整帮助的链接以及一些扩展点的预定义模板。

也许您知道这一点,但尽管F3键盘快捷键不会将您带到声明的资源包键,但有两个类似的功能可以工作:

  • 用鼠标悬停在字符串上会显示已转换的字符串
  • 控件单击该字符串将跳转到声明的资源束键
显然,这两者都需要使用鼠标;如果你是一个只使用键盘的人,你可能会对这些不满意


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

不幸的是,您没有扩展此功能的扩展点。我建议您停止尝试使用Eclipse命令框架。JavaEditor不使用该框架注册其命令,而是在编辑器打开时注册命令。第三方也没有简单的方法来扩展/改变这一点

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

虽然没有简单的方法来扩展或更改JavaEditor,但是有一些方法可以做到这一点。我为你推荐的一种方法是通过春分相位(http://www.eclipse.org/equinox/incubator/aspects/). 这允许您使用AspectJ嵌入Eclipse并在需要时进行更改

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

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


如果这是您正在寻找的解决方案,那么我可以详细介绍如何做到这一点。

事实上,我对这些很满意,但也希望使用F3快捷方式。只是它们不适合我们,因为我们没有直接使用ResourceBundle。我们使用的是一个包装类,eclipse不知道如何处理对它的调用,除非我实现一些扩展点。我已经为控件单击做了这些。我所需要的只是用于快捷方式的扩展点。我尝试了,并且我能够添加一个上下文菜单项,显示我为F3注册了它,但是当我实际按F3时,我的代码没有被调用。只有当我直接选择菜单项时,我才这么做。虽然这听起来可能有效,但我不想使用方面来扩展eclipse。这难道不比实现扩展点接口更容易突破eclipse代码中的更改吗?是的,如果依赖插件公开了一个扩展点,那么在未来的eclipse版本中会更健壮。但是,不存在允许您执行所需操作的扩展点。您可以打开一个bug报告并为此提交一个补丁,但不能保证JDT UI团队会接受该补丁。因此,实现所需功能的更可靠方法是使用编织。此外,在未来的Eclipse版本中,这种情况发生变化的风险很低。JDT的这一部分非常稳定,您使用的任何方面都不可能需要更改。我也在寻找类似的东西。我想扩展或覆盖开放声明扩展点(如果存在)。