GWT CellList Click to Toggle selection (Multi-Selection) - PullRequest
9 голосов
/ 26 октября 2011

Я бы хотел настроить 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 ]

8 голосов
/ 12 декабря 2011
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);
3 голосов
/ 27 октября 2011

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

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

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

...