GWT CellTable の「カスタム選択モデル」が必要です。CellTable の列の 1 つはチェックボックス列です。
基本的な要件 (両方とも以下のソリューションで機能します):
- 行をクリックし (チェックボックスではなく)、その行を選択し、他のすべての行を選択解除します。
- チェックボックスの選択は、その行のみを選択/選択解除する必要があります。
以下は私が使用しているコードですが、非常に遅いです。任意のガイダンスをいただければ幸いです。
final SelectionModel<T> selectionModel = new MultiSelectionModel<T>();
dataTable.setSelectionModel(selectionModel,
DefaultSelectionEventManager.createCustomManager(
new DefaultSelectionEventManager.CheckboxEventTranslator<T>() {
@Override
public SelectAction translateSelectionEvent(CellPreviewEvent<T> event) {
SelectAction action = super.translateSelectionEvent(event);
if (action.equals(SelectAction.IGNORE)) {
selectionModel.clear();
return SelectAction.TOGGLE;
}
return action;
}
}
)
);
以下は、CheckColumn コールバック用に抜粋されたコードです。
Column<T, Boolean> checkColumn = new Column<T, Boolean>(
new CheckboxCell(true, false))
{
@Override
public Boolean getValue(T t)
{
// Get the value from the selection model.
return selectionModel.isSelected(t);
}
};