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

13 eclipse plugins

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

例如,

Project Explorer - >右键单击 - >新建 - > MyStyle

我怎样才能在eclipse插件开发中实现这一目标?

问马汉

Von*_*onC 24

这样的事情应该这样做(遵循这个线程):

   <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>
Run Code Online (Sandbox Code Playgroud)

请参阅菜单贡献

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

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

  • locationURI - 一个URI规范,用于定义添加包含的添加项的插入点.
    URI的格式由三个基本部分组成:
    • Scheme:"menu","popup"或"toolbar"之一.
      表示用于处理贡献的经理的类型
    • Id:这是现有菜单的id,视图ID或编辑器'type'的id
    • 查询:查询格式位于<placement>=<id>:<placement>"之前"或"之后",并且<id>是现有菜单项的id

显示自述动作

也可以看看 org.eclipse.ui.popupMenus,org.eclipse.ui.menus- menuContribution具有locationURI-attribute指向的扩展点popup:org.eclipse.ui.popup.any?after=additions.
警告,正如Prashant Bhate在评论中提到的那样,该软件包org.eclipse.ui.popupMenus已被弃用.
请参阅问题与命令之间缺少链接objectContribution以获取更多信息.


J-D*_*zle 9

我刚才解决了这个问题需要一段时间,所以我会回答OP的问题(添加到文件 - >新菜单).

在哪里贡献(common.new.menu)

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

结果

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

在此输入图像描述

(当'不'C/C++作为主动视角时)

在此输入图像描述

这是我的示例插件:

<?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>
Run Code Online (Sandbox Code Playgroud)

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

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

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