在Eclipse(3.6)中,是否可以隐藏/删除任意上下文菜单项?

22

我的问题可以分为三个部分:

在Eclipse(3.6)中,是否可能通过以下方法隐藏/删除任意上下文菜单项:

  1. 标准UI?
  2. 某些现有的插件?
  3. 自定义插件?

我尝试了方法1和方法2,但没有找到解决方案。如果唯一的选择是创建自定义插件,请问有没有人能够指导我从哪里开始(我有一些Java经验,但没有Eclipse插件开发经验)。

1个回答

24
您可以通过标准 GUI 隐藏菜单或菜单项:参见帮助文档

要隐藏一个菜单项或工具栏按钮:

  • 切换到您想要配置的透视图。
  • 选择 窗口 > 自定义透视图…
  • 打开“菜单可见性”或“工具栏可见性”选项卡。
  • 找到要隐藏的项。
  • 取消该项旁边的复选框。取消菜单以隐藏其所有子项。
  • 点击确定使更改生效。

但这将在出现该项的所有菜单(上下文相关或不相关)中都隐藏它。
因此,它可能不如您通过 GUI 想要的那样精细。


您也可以尝试使用插件来实现此功能(也请参阅菜单贡献)。

使用扩展在 Eclipse 中进行的前几个步骤非常标准。

  • 打开 plugin.xml 文件并添加 org.eclipse.ui.activities extension
  • 然后创建一个活动节点并为其分配唯一的 ID。
  • 接着,创建一个 activityPatternBinding 节点,并使用该活动的唯一 ID 来查找与该活动节点相关联的模式节点。
    activityPatternBinding 节点要求您提供 UI 元素 ID 字符串的正则表达式,以便隐藏它。
问题在于似乎至少有3种方法可以向UI中添加菜单项和工具栏按钮。
  • 第一种方法是通过新的Command/Menu Extensions。
  • 第二种方法是通过旧的ActionSets Extension。
  • 然后还有其他一些UI元素,它们似乎是硬编码到Workbench中的,并且没有ID字符串,也不能使用Activities Extension来隐藏它们。幸运的是,这种第三种类型的UI元素很少见。
考虑到您谈论的是最新的Eclipse,我将只复制第一种方法:

1/ 使用插件侦察器

第一种方法是使用插件侦察器。
按下 alt-shift-F2 并单击要隐藏的菜单项或工具栏按钮。
如果在“活动操作定义标识符”标题下有ID字符串,则您很幸运。
此项目已使用Command Extension添加,您可以使用此ID作为Activities Extension的模式参数。
但不是所有使用Command Extension添加其ID字符串的项目都会将其ID字符串呈现给插件侦察器。

顺便提一下,ID字符串使用句点分隔。
例如,按钮的ID可能是“org.eclipse.ui.navigate.backwardHistory”。
正则表达式使用句点代表任何字符。幸运的是,用作通配符的句点与实际句点字符匹配,因此如果您不想转义它们,则无需转义它们。我发现如果不转义它们,阅读起来会更容易,而且它几乎不可能导致任何歧义匹配。


你可以通过标准GUI隐藏菜单或菜单项。我尝试过了。即使在透视定制器中取消选中所有项目,我的上下文菜单仍然没有改变。只有主菜单似乎受到影响。我还尝试了取消选中命令组,但那也没有帮助。今晚我会尝试另一种方法。 - Vilius Normantas
和Vilius看到的一样 - 什么也不影响上下文菜单。alt-shift-f2似乎没有任何作用...不确定是否需要做些什么来启用“插件间谍”?真的很想自定义这些巨大的上下文菜单。 - sosiouxme
要运行Plugin-Spy,您需要将插件“org.eclipse.pde.runtime”添加到您的目标平台。 - cornz
1
@sosiouxme:你使用的是哪个版本的Eclipse?我在我的Eclipse EE和Eclipse SDK中都检查过,它们都默认安装了Plugin Spy(尽管cornz提到了相反的情况)。要使用Plugin Spy,你必须在按下alt-shift-f2后选择一个菜单栏或上下文菜单项。当你在菜单中悬停时,你会看到光标变成放大镜和一个白色框。只有当你用这个光标点击一个对象时,Plugin Spy窗口才会弹出。在你点击或悬停在菜单项之前,没有明显的迹象表明你处于“Plugin Spy模式”。 - StockB
@wearybands 九年后,我对那个机制的记忆有些模糊了。最好在一个新的单独问题中讨论它。 - VonC
显示剩余2条评论

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