Текущий выбор отсутствует в контексте приложения RCP

Чтобы получить текущий выбранный объект в обработчике команд, я делаю

HandlerUtil.getCurrentSelection(event);

который находит текущий выбор из контекста приложения, хранящегося в событии.

Однако я ищу ошибку, из-за которой это возвращает null, хотя я четко вижу выбор в таблице.

Я добавил прослушиватель выбора в соответствующее средство просмотра таблиц:

tableViewer.addSelectionChangedListener(new ISelectionChangedListener() {

    @Override
    public void selectionChanged(SelectionChangedEvent event) {
        LOGGER.trace(event);
    }
});

Я вижу вывод журнала прямо перед вызовом

HandlerUtil.getCurrentSelection(event);

Любая идея, почему выбор недоступен в обработчике команд?


person BetaRide    schedule 01.12.2017    source источник


Ответы (1)


Вы должны зарегистрировать «поставщика выбора» со своей стороны, чтобы сделать выбор доступным для обработчиков команд (и других вещей).

Вы делаете это в представлении или редакторе с помощью:

getSite().setSelectionProvider(selectionProvider);

где selectionProvider — это то, что реализует ISelectionProvider. Средства просмотра JFace, такие как TableViewer, TreeViewer, ... реализуют этот интерфейс.

person greg-449    schedule 01.12.2017
comment
Идеальный. Ты с ума мой день! - person BetaRide; 01.12.2017