Переключение состояния пункта меню - PullRequest
3 голосов
/ 22 сентября 2008

У меня есть приложение Eclipse RCP, над которым я работаю. Он имеет несколько меню для конкретного вида, и один из пунктов меню - это пункт, рядом с которым я бы хотел поставить галочку, когда соответствующая функция включена. Аналогично, в следующий раз, когда элемент выбран, он должен быть снят, чтобы отразить, что соответствующая функция отключена.

У меня такой вопрос: как установить состояние переключения этих пунктов меню? У меня есть IHandler для работы с событием, когда выбран элемент меню, но я не уверен, как обновить сам элемент GUI.

Есть ли у сообщества StackOverflow какие-нибудь мысли о том, как мне решить эту проблему?

Ответы [ 2 ]

1 голос
/ 16 сентября 2012

Возможно, что-то изменилось, возможно, есть разница между RCP и плагином Eclipse, но я просто установил стиль своего действия на toggle, и он автоматически переключался. Вы можете увидеть исходный код на github.com .

     <action
           class="live_py.EnableAction"
           id="live-py.enable.action"
           label="Li&amp;ve Coding"
           menubarPath="pyGeneralMenu/pyNavigateGroup"
           state="false"
           style="toggle">

Чтобы узнать, включена ли функция в данный момент, я просто просматриваю действие по его идентификатору и затем вызываю isChecked().

1 голос
/ 22 сентября 2008

Решение заключается в том, чтобы обработчик команд реализовывал интерфейс IElementUpdater. Элемент пользовательского интерфейса может быть обновлен следующим образом:

public void updateElement(UIElement element, Map parameters) 
{
    element.setChecked(isSelected);     
}

updateElement вызывается как часть обновления пользовательского интерфейса, которое может быть вызвано из команды выполнения обработчика следующим образом:

     ICommandService service = (ICommandService) HandlerUtil
       .getActiveWorkbenchWindowChecked(event).getService(
           ICommandService.class);
   service.refreshElements(event.getCommand().getId(), null);

Много дополнительной информации здесь (см. Команда радиокнопок и Обновление проверенного состояния записей)

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