【问题标题】:Add context menu entry to Eclipse synchronize view将上下文菜单条目添加到 Eclipse 同步视图
【发布时间】:2018-12-07 23:58:56
【问题描述】:

我正在尝试在自定义 Eclipse 插件的同步视图中添加上下文菜单条目(带有子菜单)。我让它在 Project Explorer、Navigator 和其他视图中正确显示,但在同步视图中没有。

即使我使用<menuContribution locationURI="popup:org.eclipse.ui.popup.any">,上下文菜单也会添加到所有位置除了同步视图。同步视图与其他所有视图有何不同?我正在使用 Eclipse Neon (4.6.3) 进行测试。

这是我的 plugin.xml 的一部分:

<extension point="org.eclipse.ui.menus">
    <!-- this works to add a context menu entry to the Project Explorer view -->
    <menuContribution locationURI="popup:org.eclipse.ui.navigator.ProjectExplorer#PopupMenu?after=additions">
        <menu label="My Menu" id="myplugin.menus.projectExplorerMenu">
            <command commandId="myplugin.commands.command1" id="myplugin.menus.command1"></command>
        </menu>
    </menuContribution>

    <!-- this does NOT add a context menu entry to the Synchronize view -->
    <menuContribution locationURI="popup:org.eclipse.team.sync.views.SynchronizeView?after=additions">
        <menu label="My Menu" id="myplugin.menus.synchronizeMenu">
            <command commandId="myplugin.commands.command1" id="myplugin.menus.command1"></command>
        </menu>
    </menuContribution>
</extension>

这是 Synchronize 视图的插件间谍:

【问题讨论】:

    标签: java eclipse plugins eclipse-plugin


    【解决方案1】:

    SynchronizeViewis a PageBookView which means it has multiple pages each of which may have a separate menu id. The page you are looking at isModelSynchronizePage`。

    您可以使用 Menu Spy (F2) 来获取上下文菜单的详细信息。在这里测试,看起来 ModelSynchronizePage 没有为其菜单指定 id。

    看起来同步代码仍然使用旧的 org.eclipse.ui.popupMenus 扩展点和不需要菜单 ID 的 objectContribution

    【讨论】:

    • 谢谢@greg-449。我不熟悉objectContribution 元素。我如何在其中获取我的菜单元素?更好的是,有没有一个资源可以用旧的 popupMenus 来举例说明一切都在做什么?我可以盯着随机的 eclipse plugin.xmls 看,直到脸色发青,但我不知道他们在做什么。
    • objectContribution 的问题是您需要详细了解视图使用的对象 - 这需要大量研究。
    猜你喜欢
    • 1970-01-01
    • 2010-12-14
    • 2014-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-19
    • 1970-01-01
    相关资源
    最近更新 更多