代码之家  ›  专栏  ›  技术社区  ›  Andreas Dolk

在EclipseRCP应用程序中禁用插件贡献

  •  6
  • Andreas Dolk  · 技术社区  · 16 年前

    我经常遇到这个问题,但还没有找到解决方案:每当我编写一个新的基于eclipse rcp的应用程序并包含来自eclipse平台的插件时,我都会“继承”其中一些插件的ui贡献。

    大多数贡献(菜单项、键盘快捷键、属性页)都很有用,但有时我宁愿禁用其中的一些贡献,因为我真的不需要它们,它们可能会让用户感到困惑。

    是否有人知道在EclipseRCP应用程序中禁用/禁止选定贡献的官方或实用方法?

    3 回复  |  直到 8 年前
        2
  •  3
  •   VonC    16 年前

    唯一接近的方法是:

    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;
    }
    
        3
  •  0
  •   tekumara    14 年前

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