在Eclipse RCP应用程序中禁用插件贡献
我经常遇到这个问题并且还没有找到解决方案:每当我编写一个基于Eclipse RCP的新应用程序并包含Eclipse平台的插件时,我都会inheritance其中一些插件的UI贡献。
大多数贡献(菜单条目,键盘快捷键,属性页)都很有用,但有时我宁愿禁用其中的一些贡献,只是因为我真的不需要它们而且它们可能会混淆用户。
有谁知道在Eclipse RCP应用程序中禁用/禁止所选贡献的官方或实用方法?
看看Eclipse“Activities”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
接近这样做的唯一方法是:
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转换。