Добавление во всплывающее меню представления консоли Eclipse - PullRequest
4 голосов
/ 21 февраля 2012

В разработке плагинов Eclipse я смог добавить элемент в контекстное меню, вызываемое правой кнопкой мыши в проводнике проекта, выполнив следующее:

<extension point="org.eclipse.ui.menus">
    <menuContribution locationURI="popup:org.eclipse.jdt.ui.PackageExplorer">
        <command ... >
            ...
        </command>
    </menuContribution>
</extension>

Но когда я пытаюсь добавить всплывающее меню для ConsoleView, я не получаю результаты.

<extension point="org.eclipse.ui.menus">
    <menuContribution locationURI="popup:org.eclipse.ui.console.ConsoleView">
        <command ... >
            ...
        </command>
    </menuContribution>
</extension>

Я смотрел на вывод из alt-shift-F1 и alt-shift-F2 (Plug-in Spy), где я получил org.eclipse.ui.console.ConsoleView. Но я не могу добраться до самого всплывающего меню. Я могу получить информацию об отдельных пунктах всплывающего меню («Выбрать все», «Очистить» и т. Д.), Но, думаю, я просто не знаю, как «копать» с помощью Plug-in Spy, чтобы получить нужную информацию.

РЕДАКТИРОВАТЬ: Отображение результатов моей работы, используя ответ ниже

Плагин выбора Spy имел следующее:

Active Part (Console)
    The active view identifier:
        org.eclipse.ui.console.ConsoleView
Active Selection
    The selection class:
        TextSelection
Active Help
    The active help context identifiers:
        org.eclipse.debug.ui.process_console_context

Это была последняя запись, которая указала мне на консоль процесса *, а не на консоль сообщений. Ссылка в ответе IDebugUIConstants.ID_PROCESS_CONSOLE_TYPE была определена как org.eclipse.debug.ui.ProcessConsoleType. Я закончил с этим, и это сработало:

  <menuContribution
        locationURI="popup:org.eclipse.debug.ui.ProcessConsoleType.#ContextMenu">
     <command
           commandId="com.grch.cmgtsdk.merge"
           label="Yowza!"
           style="push">
     </command>
  </menuContribution>

Ответы [ 2 ]

4 голосов
/ 21 февраля 2012

Само представление консоли - это просто контейнер для различных типов консолей, и оно не имеет контекстного меню. Вам необходимо определить идентификатор меню конкретной консоли, в которую вы хотите добавить свой вклад.

Для текстовых консолей идентификатор меню выглядит примерно так: <console type>.#ContextMenu. Это на самом деле не задокументировано, и обнаружение типа консоли не является простым (вы должны изучить код). Например, тип консоли консоли процесса определен в IDebugUIConstants.ID_PROCESS_CONSOLE_TYPE, тогда как для консоли сообщений это IConsoleConstants.MESSAGE_CONSOLE_TYPE.

1 голос
/ 08 мая 2015

Выше ответ помог мне в создании всплывающего окна. Ниже приведен пример кода: -

<menuContribution
           locationURI="popup:org.eclipse.ui.MessageConsole.#ContextMenu">
           <menu
                 label="My Popup" id="com.abhi.test.popup.menu2">

           <command
                 commandId="com.abhi.test.command1"
                 id="com.abhi.test.popup.command3"
                 style="push">
           </command>
           </menu>
     </menuContribution>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...