Как вызвать метод @canExecute из класса

Я работаю над приложением eclipse rcp4, и у меня возникла проблема с методом аннотации @canExecute. Когда я отправляю broker.send (UIEvents.REQUEST_ENABLEMENT_UPDATE_TOPIC, UIEvents.ALL_ELEMENT_ID); он вызовет все методы canExecute, но я хочу ограничиться только определенными классами. Может ли кто-нибудь помочь в этом


person Ranga Reddy    schedule 16.08.2018    source источник


Ответы (1)


Второй аргумент вызова события UIEvents.REQUEST_ENABLEMENT_UPDATE_TOPIC может быть чем-то, что реализует org.eclipse.e4.ui.workbench.Selector.

Так, например, чтобы просто обновить идентификатор конкретного элемента, вы можете использовать:

Selector selector = element -> "element id".equals(element.getElementId());

eventBroker.send(UIEvents.REQUEST_ENABLEMENT_UPDATE_TOPIC, selector);

Если вы просто хотите обновить один элемент, вы можете просто указать идентификатор элемента в качестве второго параметра:

eventBroker.send(UIEvents.REQUEST_ENABLEMENT_UPDATE_TOPIC, "element id");
person greg-449    schedule 16.08.2018
comment
greg, где это задокументировано, т.е. какие объекты / данные могут быть переданы в eventBroker.send()method? Спасибо - person titou10; 17.08.2018
comment
@ titou10 Плохая документация, я только помню, что видел это в одном из блогов разработчиков, это также описано в JavaDoc для UIEvents.REQUEST_ENABLEMENT_UPDATE_TOPIC. Что вы можете указать, зависит от темы мероприятия. - person greg-449; 17.08.2018
comment
@Greg, Спасибо за ответ, я пробовал, но не повезло. Ниже приводится описание вопроса. Мы разрабатываем чистое приложение Eclipse Rcp-4, состоящее из нескольких частей. элементов вкладов панели инструментов. Во время открытия любой части регистрируются все элементы панели инструментов, а если открывается несколько частей, регистрируются все части элементов панели инструментов, и если я пытаюсь переключить вкладку, вызываются все части методов аннотации canExecute, но нам нужна только активная часть Должны быть вызваны методы canExecute. Спасибо , - person Ranga Reddy; 17.08.2018
comment
Этот ответ предназначен только для случаев, когда вы выполняете UIEvents.REQUEST_ENABLEMENT_UPDATE_TOPIC в своем коде и определенно работает с правильным селектором. Вы не можете контролировать, что делает основной код e4, когда он хочет проверить разрешения. - person greg-449; 17.08.2018
comment
Также обратите внимание, что основной код e4 много проверяет включение для всех видов событий. - person greg-449; 17.08.2018