Как расширить исходное меню в Eclipse? (или: Каково его местоположение?)
Я разрабатываю плагин 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 ответа
Я столкнулся с той же проблемой. Я наконец понял, что расширение меню "Источник" с помощью (рекомендуемой) точки расширения org.eclipse.ui.menus
это невозможно.
Причина в том, что меню определено в старом стиле actionSet
(например, меню "Источник") создается после обработки org.eclipse.ui.menus
-расширений. Таким образом, эти расширения могут вносить вклад только в уже существующие меню.
Поэтому придерживаться старого API (как предлагает VonC), вероятно, лучший вариант до jdt
Плагин перенесен на новый подход...
Этот поток сообщает о добавлении записи в главное меню "Источник":
<!-- 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="&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&String()..."
menubarPath="org.eclipse.jdt.ui.source.menu/generateGroup">
</action>
</actionSet>
</extension>
Вы можете использовать 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>