Как расширить исходное меню в Eclipse? (или: Каково его местоположение?) - PullRequest
3 голосов
/ 18 августа 2011

Я разрабатываю плагин eclipse и пытаюсь расширить исходное меню (mainMenubar / Source - отображается при редактировании в java-редакторе) в Eclipse 3.7.

Документация говорит, что полагается на точку расширения org.eclipse.ui.menus, поскольку устаревшие точки расширения устарели. Для меня является полным секретом, где можно получить надежные идентификаторы locationURI, но мне наконец удалось найти какой-то правдоподобный URI с помощью Plugin Spy (следуя совету здесь ). Поэтому следующий должен быть фрагментом расширения для plugin.xml:

<extension
 point="org.eclipse.ui.menus">
 <menuContribution
     locationURI="menu:org.eclipse.jdt.ui.source.menu">
  <command
    commandId="some.command.id"
        label="Some label"
        style="push">
  </command>
 </menuContribution>
</extension>

К сожалению, при запуске плагина для моей разработки IDE не появляется команда, а также нет сообщения об ошибке. Просто ничего не происходит. Когда я устанавливаю locationURI в «menu: help», в меню справки появляется новая команда, поэтому проблема, похоже, действительно в locationURI.

Ответы [ 3 ]

3 голосов
/ 23 сентября 2011

Я столкнулся с той же проблемой.Я наконец понял, что расширение меню «Источник» с помощью (рекомендуемой) точки расширения org.eclipse.ui.menus невозможно.

Причина в том, что меню, определенное в старом стиле actionSet (например, меню «Источник»), создается после обработки расширений org.eclipse.ui.menus.Таким образом, эти расширения могут вносить вклад только в уже существующие меню.

Так что придерживаться старого API (как предлагает VonC), вероятно, лучший вариант, пока плагин jdt не будет перенесен на новый подход....

3 голосов
/ 19 августа 2011

Эта ветка сообщает , добавив запись в главное меню «Источник»:

<!-- main menu -->
<extension point="org.eclipse.ui.actionSets">
  <actionSet label="Java Coding"
             description="Action set containing coding related Java actions"
             visible="true"
             id="org.eclipse.jdt.ui.CodingActionSet2">
    <menu label="&amp;Source"
          path="edit"
          id="org.eclipse.jdt.ui.source.menu">
    </menu>
    <action class="org.gsoc.eclipse.tostringgenerator.actions.GenerateToStringActionDelegate "
            id="org.gsoc.eclipse.tostringgenerator.action"
            label="Generate to&amp;String()..."
            menubarPath="org.eclipse.jdt.ui.source.menu/generateGroup">
    </action>
  </actionSet>
</extension>
1 голос
/ 29 марта 2012

Вы можете использовать пробел popup: вместо пробела menu:.Вот рабочий пример:

    <extension point="org.eclipse.ui.commands">
    <command defaultHandler="com.igenox.plugin.dpbuilder.rcp.handler.CreateBuilderHandler"
        id="com.igenox.plugin.DPBuilder.CreateBuilderPattern" name="CreateBuilderPattern">
    </command>
</extension>
<extension point="org.eclipse.ui.menus">
    <menuContribution
        locationURI="popup:org.eclipse.jdt.ui.source.menu?after=DPSeparator">
        <command commandId="com.igenox.plugin.DPBuilder.CreateBuilderPattern"
            id="createBuilder" label="Create Builder Pattern">
        </command>
    </menuContribution>
    <menuContribution
        locationURI="popup:org.eclipse.jdt.ui.source.menu?after=additions">
        <separator name="DPSeparator" visible="true">
        </separator>
    </menuContribution>
</extension>
...