Как добавить элементы во всплывающее меню?
В разработке плагина eclipse я хочу добавить в контекстное меню один элемент (например: Mystyle).
Для экземпляра
Проводник проекта → Щелкните правой кнопкой мыши → Создать → MyStyle
Как я могу достичь этого в разработке плагина eclipse?
Отношения
Mathan
Ответы
Ответ 1
Что-то вроде этого должно это сделать (после этот поток):
<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: Это либо идентификатор существующего меню, либо идентификатор вида, либо идентификатор типа "
- Запрос: формат запроса
<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
и командой.
Ответ 2
Мне потребовалось некоторое время, чтобы решить эту точную проблему только сейчас, поэтому я отвечу на вопрос OP (добавьте в меню "Файл- > Новое" ).
Где внести вклад (common.new.menu)
благодаря этому сообщению я обнаружил, что вы хотите внести свой вклад в popup: common.new.menu? after = new. почему ты спрашиваешь? если я знаю; но он работает.
Результат
(Когда C/С++ активна)
![enter image description here]()
(Когда "не" 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". Это показывает только команду New Root от Justin, когда в C/С++ перспективе. Оказывается, сложно понять это, поэтому мое включение в пример. Вот полезные ресурсы, которые я выкопал, исследуя это:
Я выкопал имя C Perspective org.eclipse.cdt.ui.CPerspective, болезненно перекопав через plugin.xml плагина org.eclipse.cdt.ui.
теперь, если бы кто-нибудь мог сказать мне, как легко просмотреть эти uri/ресурсы/свойства в будущем... omg.