2016-02-17 163 views
0

我有一個使用org.eclipse.ui.popupMenus編寫的上下文菜單。既然它現在已經被棄用了,我想用org.eclipse.ui.menus來做同樣的事情。將對象貢獻轉換爲日食中的菜單貢獻

早些時候實施看起來是這樣的

<extension 
    point="org.eclipse.ui.popupMenus"> 
    <objectContribution 
     adaptable="true" 
     id="com.xyz.plm.analysis.func.gui.popupOnComponentForCA" 
     objectClass="com.xyz.plm.componentmodel.IComponent"> 
    <action 
      class="com.xyz.plm.analysis.my.gui.MyAction" 
      enablesFor="1" 
      id="com.xyz.plm.analysis.my.gui.MyActionion2" 
      label="Run My Action" 
      menubarPath="com.xyz.plm.ide.ui.myToolsPopupMenu/myToolsGroup" 
      tooltip="Run My Action"> 
    </action> 

我試了一下,到目前爲止低於

<extension 
    point="org.eclipse.ui.commands"> 
    <command 
     id="com.xyz.plm.analysis.my.commandmygui" 
     name="Run My Action"> 
    </command> 
</extension> 

<extension 
    point="org.eclipse.ui.handlers"> 
    <handler 
     class="com.xyz.plm.analysis.my.gui.MyAnalysisGui" 
     commandId="com.xyz.plm.analysis.my.commandmygui"> 
    <enabledWhen> 
     <with 
       variable="selection"> 
      <iterate 
       ifEmpty="false" 
       operator="or"> 
       <instanceof 
        value="com.xyz.plm.componentmodel.IComponent"> 
       </instanceof> 
      </iterate> 
     </with> 
    </enabledWhen> 
    </handler> 
</extension> 

<extension 
     point="org.eclipse.ui.menus"> 
    <menuContribution 
     locationURI="popup:com.xyz.plm.ide.ui.myToolsPopupMenu"> 
    <command 
      commandId="com.xyz.plm.analysis.my.commandmygui" 
      label="RunMyACtion" 
      style="push"> 
    </command> 
    </menuContribution> 
</extension> 

但有了這個,我在銘佑上下文菜單中看到MyAction子菜單。但MyAction被禁用。另外我看到MyACtion出現在projectExplorer窗口以及編輯器中,當我右擊選擇MyTools。

我想要的是MyAction子菜單應該只出現在MyTools popupmenu下,只有當我右鍵點擊IComponent類型的對象時,纔會出現這個菜單。

回答

1

您應該在菜單中使用visibleWhen,對於處理程序不應使用enabledWhen。您應該使用adapt而不是instanceof

因此,像:

<extension 
    point="org.eclipse.ui.handlers"> 
    <handler 
     class="com.xyz.plm.analysis.my.gui.MyAnalysisGui" 
     commandId="com.xyz.plm.analysis.my.commandmygui"> 
    </handler> 
</extension> 

<extension 
     point="org.eclipse.ui.menus"> 
    <menuContribution 
     locationURI="popup:com.xyz.plm.ide.ui.myToolsPopupMenu"> 
    <command 
      commandId="com.xyz.plm.analysis.my.commandmygui" 
      label="RunMyACtion" 
      style="push"> 
     <visibleWhen> 
     <with 
       variable="selection"> 
      <iterate 
       ifEmpty="false" 
       operator="or"> 
       <adapt 
        value="com.xyz.plm.componentmodel.IComponent"> 
       </adapt> 
      </iterate> 
     </with> 
     </visibleWhen> 
    </command> 
    </menuContribution> 
</extension> 
0

相當於是測試activeMenuSelectionactiveMenuEditorInput,設置當您單擊鼠標右鍵,並檢查等價條件。值是可迭代的,所以你需要遍歷它們來執行你的測試。請參閱the example on the Eclipse Wiki