在Eclipse RCP应用程序禁用插件贡献(Disable plugin contribution

2019-08-05 13:57发布

我经常有这个问题,并没有找到一个解决方案尚未:每当我写一个新的基于Eclipse RCP应用程序,包括从Eclipse平台的插件,我“继承”一些这些插件的UI贡献。

这其中大部分贡献(菜单项,键盘快捷方式属性页)是有用的,但有时我宁愿禁用其中的一些贡献,只是因为我真的不需要他们,他们可能会混淆用户。

有谁知道官方或禁用/禁止在Eclipse RCP应用程序选定的贡献一条可行之路的?

Answer 1:

看看Eclipse的“活动”的API。 它允许您隐藏基于ID的贡献。

几个环节:

  • http://wiki.eclipse.org/FAQ_How_do_I_add_activities_to_my_plug-in%3F
  • http://www.vogella.de/blog/2009/07/13/eclipse-activities/
  • http://random-eclipse-tips.blogspot.com/2009/02/eclipse-rcp-removing-unwanted_02.html
  • http://help.eclipse.org/helios/index.jsp?topic=/org.eclipse.platform.doc.isv/guide/workbench_scalability.htm


Answer 2:

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

IMenuService::removeContributionFactory()

保罗·韦伯斯特已经呼吁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;
}


Answer 3:

春分变换也可用于提供XLST变换是删除不需要的UI贡献。



文章来源: Disable plugin contributions in Eclipse RCP Application