#java #eclipse #popup #swt #eclipse-rcp
#java #eclipse #всплывающее окно #swt #eclipse-rcp
Вопрос:
У меня уже есть всплывающее окно, работающее в основном приложении Eclipse RCP (3.X). Теперь я пытаюсь добавить всплывающее окно (вклад меню) в плагин Eclipse RCP (он связан с приложением как зависимость). У этого плагина не было plugin.xml файл, который позволяет добавлять расширения, поэтому я создал новый. Конфигурация всплывающего окна выглядит следующим образом:
<extension
point="org.eclipse.ui.menus">
<menuContribution
allPopups="false"
locationURI="popup:table.popupmenu?after=additions">
<command
commandId="copy"
label="Copy"
style="push">
</command>
</menuContribution>
</extension>
<extension
point="org.eclipse.ui.commands">
<command
id="copy"
name="Copy">
</command>
</extension>
<extension
point="org.eclipse.ui.handlers">
<handler
class="package.CopyHandler"
commandId="copy">
</handler>
</extension>
Класс обработчика существует.
Затем я добавил в свой класс «Таблица» следующий код для привязки меню (после создания объекта таблицы):
IWorkbenchPartSite site = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage()
.getActivePart().getSite();
MenuManager menuManager = new MenuManager();
Menu menu = menuManager.createContextMenu(this.table);
this.table.setMenu(menu);
site.registerContextMenu("table.popupmenu", menuManager, site.getSelectionProvider());
Поскольку я не мог заставить его работать, я следовал этому руководству (7.Руководство: команды и контекстные меню) и работает нормально. Я не вижу конфигурацию, которую мне не хватает.
Если есть другой хороший способ получить всплывающее меню из элемента управления (SWT), я был бы рад попробовать и это.
Комментарии:
1. Я думаю, это потому, что у вас есть
?after=additions
locationURI, но в меню нет позиции «дополнения». Попробуйте без этого.2. К сожалению, у меня это не сработало. Спасибо за помощь.
3. Ваш
registerContextMenu
вызов устанавливает контекстное меню для поставщика выбора детали — является ли ваша таблица поставщиком выбора для детали?