Eclipse Luna: методы @CanExecute обработчиков не вызваны

У меня проблема с обработчиками команд в Eclipse Luna RCP.

В моей модели приложения E4 я определил некоторые команды и связанные обработчики, которые должны быть включены только при определенных обстоятельствах. По этой причине в моем POJO-обработчике я реализовал методы, аннотированные @CanExecute где я проверяю необходимые условия.

Я также определил пункты меню и панели инструментов, связанные с этими командами.

Проблема в том, что мой @CanExecute методы не вызываются должным образом, и, как следствие, элементы меню и панели инструментов не включаются / не отключаются соответственно.

В частности, для пунктов меню @CanExecute методы запускаются только несколько раз при запуске приложения, но никогда после этого.

Для элементов панели инструментов вместо @CanExecute методы вызываются только при изменении активного контекста (например, при изменении активной части или открытии новой оболочки).

В Кеплере поведение было совсем другим (и работало как положено):

  • для пунктов меню @CanExecute методы вызывались каждый раз, когда отображалось меню
  • для элементов панели инструментов был таймер, который вызывал @CanExecute методы каждые 400 мс

Это известная ошибка в Луне? Знаете ли вы какой-нибудь возможный обходной путь для достижения ожидаемого поведения?

Спасибо!

1 ответ

Решение

Это изменение дизайна в Eclipse Luna, описанное в баге 427465, также 436755

Вы можете запустить методы панели инструментов @CanExecute, используя:

eventBroker.send(UIEvents.REQUEST_ENABLEMENT_UPDATE_TOPIC, UIEvents.ALL_ELEMENT_ID);

EventBroker является IEventBroker,

Другие вопросы по тегам