Eclipse Luna: методы обработчиков @CanExecute не вызываются из-за неправильного контекста

Я обновил свое приложение eclipse RCP с Juno на Luna. Это привело к тому, что панель инструментов моего приложения была навсегда отключена.

Я нашел решение в этой теме: Eclipse Luna : Методы @CanExecute обработчиков не вызываются (Решение: генерировать событие вручную). Но увы, лечение не помогло :-(.

Я углубился с помощью отладчика, чтобы найти основную причину сбоя. Я обнаружил, что в HandlerServiceHandler.class метод setEnabled(Object AssessmentContext) не работает. Это связано с извлечением неправильного контекста выполнения из контекста оценки.

Я расскажу подробнее: происходит то, что после того, как я выполню выбор в проводнике проекта, я отправляю свое событие. setEnabled(Object AssessmentContext) ищет обработчик соответствующей команды, связанной с моим элементом панели инструментов. Однако он ищет обработчик в * контексте выполнения* проводника проекта. Обработчик не находится в этом контексте, поэтому метод не работает!!

Любые идеи о том, как решить эту проблему. Я действительно не понимаю, как я могу хорошо контролировать свои контексты.

Спасибо!!!!!


person whomaniac    schedule 02.09.2014    source источник
comment
Итак, где вы определяете свой обработчик?   -  person greg-449    schedule 02.09.2014
comment
В файле e4xmi у меня определен обработчик. Этот обработчик связан с командой, которая связана с элементом панели инструментов.   -  person whomaniac    schedule 02.09.2014
comment
Да, но где в e4xmi, в списке обработчиков верхнего уровня или в списке обработчиков для конкретного окна?   -  person greg-449    schedule 02.09.2014
comment
Поиск обработчика должен работать, поиск выполняется во всех контекстах от активного листа до контекста приложения. Ваш обработчик будет в контексте приложения. Вы уверены, что идентификатор команды правильный?   -  person greg-449    schedule 02.09.2014
comment
Я использую кнопку поиска, чтобы связать команду с ее обработчиком и элементом инструмента в e4xmi. Поэтому я не вижу, где я могу ошибиться. Кстати, спасибо за ваши ответы.   -  person whomaniac    schedule 02.09.2014
comment
Я вернулся, чтобы посмотреть на это после долгого времени. Я, вероятно, должен был сказать, что у меня есть исключение с помощью css spy, когда я загружаю свое приложение rcp. org.osgi.framework.BundleException: Не удалось разрешить модуль: org.eclipse.e4.tools.css.spy [174] Выбран другой одноэлементный пакет: osgi.identity; osgi.identity=org.eclipse.e4.tools.css.spy; тип=osgi.bundle; версия: Версия = 0.12.0.v20130814-1230; singleton:=true в org.eclipse.osgi.container.Module.start(Module.java:434)   -  person whomaniac    schedule 07.07.2015
comment
Я переместил код брокера событий в другое место, и теперь я нахожусь в контексте MainWindow (а не в контексте приложения). Это все еще не работает... Иногда HandlerServiceImpl.lookUpHandler() в setEnabled() возвращает значение null, а иногда оно не равно нулю, но setEnabled() по-прежнему отключает toolItem...   -  person whomaniac    schedule 07.07.2015