Создание элементов панели инструментов в выпадающих пунктах меню программно - PullRequest
2 голосов
/ 04 февраля 2012

Я искал по всей сети, но не смог найти работающего решения, как создать пункты выпадающего меню для пункта меню на панели инструментов в 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();

Все объекты действительны, но они не содержат ни одну из указанных выше параметризованных команд.Все параметры в командах, которые я смог найти, содержат только определение, но значение не указано.

Ответы [ 2 ]

1 голос
/ 06 февраля 2012

Посмотрите на атрибут class элемента menuContribution.Посредством этого вы можете написать класс Java (расширение org.eclipse.ui.menus.ExtensionContributionFactory), который будет динамически добавлять нужные элементы меню.В этом случае все подэлементы menuContribution будут игнорироваться.

0 голосов
/ 06 февраля 2012

В качестве альтернативы предоставлению всего ExtensionsContributionFactory (который будет работать нормально), вы можете добавить элемент dynamic в существующий XML, а затем указать CompoundContributionItem для создания динамической части раскрывающегося списка инструментов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...