2008-09-22 3 views
3

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

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

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

+0

Вам не нужно указывать свой заголовок, для чего предназначены теги. – GEOCHET 2008-09-22 13:13:05

ответ

1

Решение подразумевает, что обработчик команд реализует интерфейс 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); 

Количество подробнее here (см Radio Button Command и Обновление отмеченного состояния записи)

1

Может быть, все изменилось, может быть, есть разница между RCP и Eclip se, но я только установил стиль своего действия на 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().

+0

Вы только что сэкономили мне много времени и усилий - спасибо! – sfinnie 2014-04-25 14:30:28

Смежные вопросы