Как добавить элементы во всплывающем меню? - PullRequest
13 голосов
/ 27 августа 2009

В разработке плагина eclipse я хочу добавить один элемент (например, Mystyle) во всплывающее меню.

Например,

Project Explorer -> Правый клик -> Новый -> MyStyle

Как мне добиться этого в разработке плагинов Eclipse?

С уважением Mathan

Ответы [ 2 ]

23 голосов
/ 27 августа 2009

Что-то подобное должно сделать это (после этой темы ):

   <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>

См. Меню вклада

Определяет упорядоченный набор дополнений в структуре пользовательского интерфейса команды. Определенные элементы будут добавлены в структуру пользовательского интерфейса команды в месте, указанном элементом locationURI.

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

  • locationURI - спецификация URI, определяющая точку вставки, в которую будут добавляться содержащиеся дополнения.
    Формат для URI состоит из трех основных частей:
    • Схема: одна из «меню», «всплывающего окна» или «панели инструментов».
      Указывает тип менеджера, используемого для обработки вкладов
    • Id: это либо идентификатор существующего меню, либо идентификатор представления, либо идентификатор редактора 'type'
    • Запрос: Формат запроса <placement>=<id>, где: <placement> - «до» или «после», а <id> - идентификатор существующего пункта меню

Show Readme Action

См. Также org.eclipse.ui.popupMenus, org.eclipse.ui.menus - точка расширения с menuContribution, которая имеет locationURI -атрибут, указывающий на popup:org.eclipse.ui.popup.any?after=additions.
Предупреждение, поскольку Prashant Bhate упоминает в комментарии, что пакет org.eclipse.ui.popupMenus устарел.
См. Вопрос Отсутствует связь между objectContribution и командой для получения дополнительной информации.

8 голосов
/ 10 марта 2014

Мне потребовалось некоторое время, чтобы решить эту проблему прямо сейчас, поэтому я поставлю ответ на вопрос ОП (добавьте в меню Файл-> Новое).

Где внести свой вклад (common.new.menu)

благодаря этому сообщению я обнаружил, что вы хотите внести свой вклад в popup: common.new.menu? After = new. почему ты спрашиваешь? черт, если я знаю; но это работает.

Результат

(когда C / C ++ активная перспектива)

enter image description here

(когда «не» C / C ++ как активная перспектива)

enter image description here

Вот мой пример плагина:

<?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. Это только показывает Новая команда Root от Джастина в перспективе C / C ++. Оказывается, это сложно понять, поэтому я включу в пример. Вот полезные ресурсы, которые я выкопал, исследуя это:

Я выкопал имя C Perspective org.eclipse.cdt.ui.CPerspective , мучительно копаясь в plugin.xml плагина org.eclipse.cdt.ui.

Теперь, если кто-нибудь скажет мне, как легко найти эти uri / resources / properties в будущем ... омг.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...