GWT CellList Click to Toggle selection (Multi-Selection)

Я хотел бы настроить CellList так, чтобы щелчок по строке переключал выбор. Таким образом, можно выбрать несколько строк без необходимости удерживать клавишу Ctrl.

Что мне нужно изменить, чтобы это заработало?

class ToggleEventTranslator<T> implements DefaultSelectionEventManager.EventTranslator<T> {
    @Override
    public boolean clearCurrentSelection(final CellPreviewEvent<T> event) {
        return false;
    }

    @Override
    public SelectAction translateSelectionEvent(final CellPreviewEvent<T> event) {
        return SelectAction.TOGGLE;
    }

}


MultiSelectionModel<ObjProxy> multiSelectionModel = new MultiSelectionModel<ObjProxy>();

    ocjCellList.setSelectionModel(multiSelectionModel, DefaultSelectionEventManager
            .<ObjProxy> createCustomManager(new ToggleEventTranslator<ObjProxy>()));

2 ответа

Решение
list.addCellPreviewHandler(new Handler<T>() {

        @Override
        public void onCellPreview(final CellPreviewEvent<T> event) {

            if (BrowserEvents.CLICK.equals(event.getNativeEvent().getType())) {

                final T value = event.getValue();
                final Boolean state = !event.getDisplay().getSelectionModel().isSelected(value);
                event.getDisplay().getSelectionModel().setSelected(value, state);
                event.setCanceled(true);
            }
        }
});


private final MultiSelectionModel<T> selectModel = new MultiSelectionModel<T>();

final Handler<T> selectionEventManager = DefaultSelectionEventManager.createCheckboxManager();
list.setSelectionModel(selectModel, selectionEventManager);

"Независимо от того, добавляете ли вы столбец флажка или нет, вам нужно будет добавить обработчик предварительного просмотра ячейки. Самый простой способ определить один из них - использовать DefaultSelectionEventManager, либо используя менеджер флажков в сочетании со столбцом флажков, либо создав пользовательский (вы бы отобразили событие щелчка в действие переключения).

Вы можете увидеть его используемый вариант чекбокса в GWT Showcase; он использует setSelectionModel перегрузка с двумя аргументами, чтобы добавить CellPreviewEvent.Handler в то же время."

(Кредит на этот ответ)

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