如何在弹出菜单中添加项目?

时间:2009-08-27 17:23:00

标签: eclipse plugins

在eclipse插件开发中,我想在弹出菜单中添加一个项目(例如:Mystyle)。

例如,

Project Explorer - >右键单击 - >新 - > myStyle的

如何在eclipse插件开发中实现这一目标?

此致 马堂

2 个答案:

答案 0 :(得分:23)

这样的事情应该这样做(this thread之后):

   <extension
         point="org.eclipse.ui.menus">
      <menuContribution
         locationURI=
         "popup:org.eclipse.ui.navigator.ProjectExplorer#PopupMenu?after=additions">
         <command
               commandId="myplugin.command.mycommand"
               icon="icons/etool16/mycommand.png"
               label="Run mycommand"
               mnemonic="M1+P"
               tooltip="Do something with this project">
         </command>
      </menuContribution>
   </extension>

请参阅Menucontribution

  

定义命令UI结构的有序添加集。已定义的元素将添加到 locationURI 元素指定的位置的命令UI结构中。

     

这应该是菜单,工具栏或修剪中所有贡献的起点,无论它们出现在UI中。

     
      
  • locationURI - 一个URI规范,用于定义添加包含添加内容的插入点。
      URI的格式由三个基本部分组成:      
        
    • 方案:“菜单”,“弹出窗口”或“工具栏”之一   指示用于处理贡献的经理的类型
    •   
    • Id:这是现有菜单的ID,视图ID或编辑器“类型”的ID
    •   
    • 查询:查询格式为<placement>=<id>,其中:<placement>是“之前”或“之后”,<id>是现有菜单项的ID
    •   
  •   

Show Readme Action

另请参阅 org.eclipse.ui.popupMenus org.eclipse.ui.menus - 扩展点,menuContribution具有locationURI - 属性指向 popup:org.eclipse.ui.popup.any?after=additions 警告,如评论中提到的Prashant Bhate,我们已弃用软件包org.eclipse.ui.popupMenus 有关详情,请参阅问题Missing link between objectContribution and command

答案 1 :(得分:8)

我刚刚解决了这个问题花了一些时间,所以我会回答OP的问题(添加到File-&gt; New菜单)。

贡献的地方(common.new.menu)

感谢这篇文章,我发现你想要为popup做贡献:common.new.menu?after = new。你为什么问?如果我知道的话但它确实有效。

<强>结果

(当C / C ++处于活跃状态时)

enter image description here

(当'不是'C / C ++作为主动观点时)

enter image description here

这是我的示例插件:

<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<plugin>
   <extension
         point="org.eclipse.ui.commands">
      <command
            defaultHandler="com.justin.debug.SampleHandler"
            id="com.justin.debug.commands.sampleCommand"
            name="Sample Command">
      </command>
   </extension>
   <extension
         point="org.eclipse.ui.menus">
      <menuContribution
            locationURI="popup:common.new.menu?after=new">
         <command
               commandId="com.justin.debug.commands.sampleCommand"
               icon="icons/sample.gif"
               label="New Root Command From Justin"
               style="push">
            <visibleWhen
                  checkEnabled="false">
               <with
                     variable="activeWorkbenchWindow.activePerspective">
                  <equals
                        value="org.eclipse.cdt.ui.CPerspective">
                  </equals>
               </with>
            </visibleWhen>
         </command>
      </menuContribution>
      <menuContribution
            locationURI="popup:common.new.menu?after=new">
         <menu
               id="org.ecilpse.ui.navigator.ProjectExplorer.helloJustin"
               label="Hello Justin">
            <command
                  commandId="com.justin.debug.commands.sampleCommand"
                  icon="icons/sample.gif"
                  label="New Submenu Command From Justin"
                  style="push">
            </command>
         </menu>
      </menuContribution>
   </extension>
</plugin>

我在这里添加了一个重要的部分,'visibleWhen'参数。在C / C ++透视图中,这仅显示来自Justin的新根命令。事实证明这很复杂,因此我将其纳入示例中。以下是我在研究时挖出的有用资源:

我通过痛苦地挖掘org.eclipse.cdt.ui插件的plugin.xml来挖掘C Perspective org.eclipse.cdt.ui.CPerspective 的名称。

现在如果有人能告诉我将来如何轻松查看这些uri / resources / properties ... omg。