RCP - использование ExtensionContributionFactory для заполнения меню элементами вклада не позволяет установить выбор по умолчанию - PullRequest
0 голосов
/ 07 января 2019

Мне нужно динамически создавать элементы вклада в меню RCP, чтобы я не мог использовать plugin.xml для его определения, как он был у меня до динамического создания - там было достаточно указать значение по умолчанию, добавив его в соответствующую команду в org. eclipse.ui.commands точка расширения:

<state
     class="org.eclipse.ui.handlers.RadioState:None"
     id="org.eclipse.ui.commands.radioState">
</state>

Нет после двоеточия. Я просмотрел весь Интернет, мне показалось, что этот урок мне нужен:

http://blog.vogella.com/2009/12/03/commands-menu-runtime/

однако мне нужно, чтобы элементы вклада были CommandContributionItem.STYLE_RADIO. После обучения я могу создать выпадающее меню с элементами, но у меня есть две проблемы:

  • Кто-нибудь знает, почему они не создаются одновременно? как определено в plugin.xml (ExtensionContributionFactory.createContributionItems (IServiceLocator, Метод IContributionRoot) вызывается при щелчке по меню)
  • Кто-нибудь знает, как определить выбранный элемент по умолчанию? я использую следующий код
    ICommandService commandService = todoListView.getViewSite().getService(ICommandService.class);
    Command command = commandService.getCommand(COMMAND_ID);
    try
    {
        HandlerUtil.updateRadioState(command, personalSettings.getCurrentGroupingName());
    }
    catch (ExecutionException e)
    {
        throw new RuntimeException(e);
    }

когда я отлаживаю его, он устанавливает для RadioState команды правильное значение, но я не вижу маркера, который указывает выбранную опцию, когда отображается выпадающий список. У кого-нибудь есть идеи? Спасибо

...