单击以切换选择(多选择)



我想设置一个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>()));
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。"

相关内容

  • 没有找到相关文章

最新更新