2009-09-12 85 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貢獻。