Добавить пункт контекстного меню в представление синхронизации Eclipse - PullRequest
0 голосов
/ 28 июня 2018

Я пытаюсь добавить пункт контекстного меню (с подменю) в виде синхронизации в пользовательском плагине 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 View Plug-in Selection Spy

1 Ответ

0 голосов
/ 29 июня 2018

SynchronizeView is a PageBookView which means it has multiple pages each of which may have a separate menu id. The page you are looking at is ModelSynchronizePage`.

Вы можете использовать Menu Spy (F2), чтобы получить подробную информацию о контекстном меню. При тестировании здесь выглядит, что ModelSynchronizePage не указывает идентификатор для своего меню.

Похоже, что код синхронизации все еще использует более старую org.eclipse.ui.popupMenus точку расширения с objectContribution, которой не нужен идентификатор меню.

...