9

行をクリックすると選択が切り替わるように 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>()));
4

2 に答える 2

9
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);
于 2011-12-12T18:36:50.153 に答える
3

「チェックボックス列を追加するかどうかにかかわらず、セル プレビュー ハンドラを追加する必要があります。これを定義する最も簡単な方法は、DefaultSelectionEventManagerを使用することです。チェックボックス マネージャをチェックボックス列と組み合わせて使用​​するか、カスタムのものを作成します(クリック イベントをトグル アクションにマップします)。

GWT Showcaseで、使用されているチェックボックスのバリアントを確認できます。2 つの引数を持つオーバーロードを使用して、同時にsetSelectionModel追加します。」CellPreviewEvent.Handler

(この回答へのクレジット)

于 2011-10-27T01:52:06.157 に答える