Я искал по всей сети, но не смог найти работающего решения, как создать пункты выпадающего меню для пункта меню на панели инструментов в Eclipse программным способом.Создавать их, используя plugin.xml
, легко, но есть ли способ сделать это из кода?Зачем это делать?
Я хочу создать небольшой плагин, который предлагает пользователю возможность создавать произвольное количество записей, которые должны быть доступны через один пункт меню (кнопка) с выпадающим меню вглавная панель инструментов.
Я довольно новичок в разработке плагинов Eclipse.Как я уже сказал, делать в plugin.xml нет проблем:
<extension point="org.eclipse.ui.menus">
<menuContribution locationURI="toolbar:org.eclipse.ui.main.toolbar?after=additions">
<toolbar id="pulldown.items.toolbars.sampleToolbar">
<command
commandId="pulldown.items.commands.sampleCommand"
icon="icons/sample.gif"
tooltip="Say hello world"
id="pulldown.items.toolbars.sampleCommand"
style="pulldown">
</command>
</toolbar>
</menuContribution>
<menuContribution locationURI="menu:pulldown.items.toolbars.sampleCommand">
<command
commandId="pulldown.items.commands.sampleCommand"
label="Message 1" style="push">
<parameter name="pulldown.items.msg" value="Some message"/>
</command>
<separator name="nothing" visible="false"/>
<command
commandId="pulldown.items.commands.sampleCommand"
label="Message 2" style="push">
<parameter name="pulldown.items.msg" value="Some other message"/>
</command>
</menuContribution>
</extension>
Я пытался найти информацию об этих командах в следующих объектах, но не смог их найти.Не беспокойте меня, используя getWorkbenchWindows()[0]
, этот код выполняется при запуске плагина, и активного окна нет.
Activator act = Activator.getDefault();
IWorkbench workbench = act.getWorkbench();
WorkbenchWindow window = (WorkbenchWindow)workbench.getWorkbenchWindows()[0];
CoolBarManager cbm = window.getCoolBarManager();
ToolBarContributionItem item =
(ToolBarContributionItem)cbm.find("pulldown.items.toolbars.SampleToolbar");
IToolBarManager tbm = item.getToolBarManager();
CommandContributionItem citem =
(CommandContributionItem)tbm.find("pulldown.items.toolbars.sampleCommand");
ParameterizedCommand cmd = citem.getCommand();
Все объекты действительны, но они не содержат ни одну из указанных выше параметризованных команд.Все параметры в командах, которые я смог найти, содержат только определение, но значение не указано.