在Eclipse RCP应用程序中禁用插件贡献

我经常遇到这个问题并且还没有找到解决方案:每当我编写一个基于Eclipse RCP的新应用程序并包含Eclipse平台的插件时,我都会inheritance其中一些插件的UI贡献。

大多数贡献(菜单条目,键盘快捷键,属性页)都很有用,但有时我宁愿禁用其中的一些贡献,只是因为我真的不需要它们而且它们可能会混淆用户。

有谁知道在Eclipse RCP应用程序中禁用/禁止所选贡献的官方或实用方法?

接近这样做的唯一方法是:

IMenuService::removeContributionFactory()

Paul Webster一直在调用IMenuService::addOverride()来改变菜单的可见性,防止任何贡献,但这个想法还没有被整合。

您可以在此org.eclipse.ui.tests.menus.MenuBuilder类中看到删除贡献的示例;

 public static void removeMenuContribution() { if (!PlatformUI.isWorkbenchRunning()) { return; } IMenuService menuService = (IMenuService) PlatformUI.getWorkbench() .getService(IMenuService.class); if (menuService==null) { return; } menuService.removeContributionFactory(viewMenuAddition); viewMenuAddition = null; menuService.removeContributionFactory(viewToolbarAddition); viewMenuAddition = null; } 

Equinox转换还可用于提供删除不需要的UI贡献的XLST转换。