2009-09-12 86 views
6

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

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

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

+0

我不认为removeContributionFactory()是禁用*所有*的贡献,相反却是使用非注册一个视图/菜单贡献“'dispose'”机制,我提议使用显式删除来自其他*插件的贡献。 – VonC 2009-09-13 08:37:36

+0

所以它是:a /不*完全*你在找什么,b /不容易,因为你必须检测这些贡献并将其删除。但这是迄今为止我所拥有的。 – VonC 2009-09-13 08:39:32

+0

重新阅读你的评论:不,你没有禁用*所有*贡献(来自*所有*其他插件),但你可能会结束从一个给定的外部插件禁用所有贡献。 – VonC 2009-09-13 08:41:08

回答

3

其接近做的唯一方法是:

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; 
} 
+0

谢谢!但是,我是否正确 - 我通过这种方式禁用了所有*贡献?没有办法禁用个人捐款,也许由他们的ID识别? – 2009-09-13 07:51:16

0

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