2013-10-29 57 views
1

我已經做了一個eclipse RCP應用程序,一切正常,但我最近注意到菜單中的Refractor選項。我想擺脫它。我在ActionBarAdvisor.java如下:如何在eclipse rcp應用程序中刪除不需要的菜單貢獻?

@Override 
    protected void fillMenuBar(IMenuManager menu) { 

     menu.add(createFile()); 
     menu.add(createEdit()); 
     menu.add(createNavigate()); 
     menu.add(createProject()); 
     menu.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS)); 
     menu.add(createWindow()); 
     menu.add(createHelp()); 

    } 

上述功能菜單添加動作爲:

edit.add(undoAct); 

也undoAct被定義爲:

private IWorkbenchAction undoAction 

makeActions功能有內容作爲:

@Override 
    protected void makeActions(IWorkbenchWindow window) { 
     undoAction = ActionFactory.UNDO.create(window); 
     undoAction.setText("Undo Menu"); 
     register(undoAction); 
} 

我發現了一個建議,它說使用hideActionSets來隱藏菜單。但我無法隱藏整個菜單,只是它的操作! Remove "File, edit,...etc" menus from Eclipse RCP application

如何刪除Refractor選項? 謝謝。

回答

3

您可以使用活動,如here所述。 首先,你需要find the ID of the menu

  1. 使用插件間諜

第一種方式是使用插件間諜。按alt-shift-F2,然後單擊要隱藏的菜單項或工具欄按鈕 。如果標題「活動動作定義標識符」下有一個ID 字符串,那麼運氣好的話就是 。此項目已使用命令擴展添加,您可以使用此ID作爲活動擴展的模式參數。但不是 使用命令擴展添加的所有項目都將其ID 字符串呈現給插件間諜。

作爲附註,ID字符串是週期分隔的。例如, 的ID可能是「org.eclipse.ui.navigate.backwardHistory」按鈕。常規 表達式使用句點來表示任何字符。幸運的是,用作通配符的期間 與實際時期字符匹配,因此如果您不想要,您不需要 即可將其轉義。我發現如果它們沒有被轉義並且極不可能會導致任何 模糊匹配,那麼它可以更容易地閱讀 。

  • 使用插件註冊表和plugin.xml中文件
  • 的第二種方式是使用插件註冊表。您可以通過 打開此視圖:

    窗口/顯示視圖.../其它/插件開發/插件註冊表

    你想做些什麼做的是試圖獲得的信息對夫婦件:

    一)是促進UI元素 B中的插件)什麼樣的擴展的插件被用來創建 UI元素

    如果有與UI元素或它的工具 提示相關的非常獨特的詞,那麼你可以在插件註冊表的過濾器領域使用該信息嘗試 確定哪個插件貢獻了UI元素。過濾器字段是 不是一個非常強大的工具,所以使用它可能有點令人沮喪。它不允許通配符 並且不匹配空格字符。

    當您追查哪個插件對UI元素有貢獻時,您從 中打開插件視圖,該插件發現 與插件開發透視圖中的包資源管理器分組在一起。 然後轉到擴展選項卡並搜索ID字符串,通常可以在Command或ActionSet擴展的用法中找到 。如果使用ActionSet添加了UI 元素,則您將插件ID添加到UI ID 中給予Activities Extension的模式參數中。例如, org.eclipse.ui.actionsets.foo變成了模式 org.eclipse.ui/org.eclipse.ui.actionsets.foo。

    然後創建一個新Activity,將永遠不會被激活,並與您在上一步中找到的id相應activityPatternBinding。它會看起來像這樣在你的plugin.xml

    <extension point="org.eclipse.ui.activities"> 
        <activity id="myActivity" name="MenuHidingActivity"> 
         <enabledWhen> 
         <with variable="activePartId">  
          <equals value="nonExistentPartId"></equals>  
         </with> 
         </enabledWhen> 
        </activity> 
        <activityPatternBinding activityId="myActivity" pattern="menuItemID"> 
        </activityPatternBinding> 
    </extension> 
    
    +1

    menuItemID是我想隱藏的菜單的ID?什麼是activePartId和nonExistentPartId。另外我發現Refactor是通過org.eclipse.ltk.ui.refactoring添加的,並且在命令擴展中,相應類別的id是:org.eclipse.ltk.ui.category.refactoring SO是什麼內容? – Destructor

    +1

    「menuItemID是我想要隱藏的菜單的ID?」是。這不一定與命令類別的ID相同,請查看「org.eclipse.ui.menus」擴展名。 activePartId是變量的名稱,它保持原樣。 nonExistentPartId是一些不存在的零件ID。您也可以將下的標籤替換爲始終爲false的任何其他表達式(例如「某些東西的計數爲-1」) –

    相關問題