【问题标题】:How to add items in popup menu?如何在弹出菜单中添加项目?
【发布时间】:2010-11-23 11:22:01
【问题描述】:

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

举个例子,

项目资源管理器 --> 右键单击​​ --> 新建 --> MyStyle

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

问候 马坦

【问题讨论】:

    标签: eclipse plugins


    【解决方案1】:

    这样的事情应该这样做(在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
      • 查询:查询格式为&lt;placement&gt;=&lt;id&gt;,其中:&lt;placement&gt; 是“之前”或“之后”,&lt;id&gt; 是现有菜单项的 ID

    另请参见 org.eclipse.ui.popupMenusorg.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

    【讨论】:

    • 我认为 org.eclipse.ui.popupMenus 已被贬低,请参阅stackoverflow.com/questions/5915550/…
    • @Prashant:非常好的观点。我已编辑我的答案以反映您的评论。
    • @VonC 您答案中的 eclipse.org 链接现在已损坏。
    • @reprogrammer 现在所有链接都已恢复。
    • 这个问题从未得到答案;如何添加到文件->新菜单?
    【解决方案2】:

    我花了一段时间才解决这个确切的问题,所以我将回答 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>
    

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

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

    现在,如果有人能告诉我将来如何轻松查看这些 uri/资源/属性...天哪。

    【讨论】:

    • 当视图更改为包资源管理器时,该方法不起作用。任何建议。
    猜你喜欢
    • 2019-01-09
    • 1970-01-01
    • 2014-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多