Wicket の DataView に登録する CheckBox コンポーネントで選択状態を表すモデル
AbstractCheckBoxModel を継承して用意したりするが、これは、Genereics を
用いて使い回した方が良さそうである。
1個のページしか出現しないならインナークラスにすればよいだろうし
複数ページで使用するなら、public class にするか、抽象クラスで記述すれば
良いだろう。
class SelectItemUsingCheckboxModel<T> extends AbstractCheckBoxModel {
private T t;
private Collection<T> selection;
public SelectItemUsingCheckboxModel(T t,Collection<T> selection){
this.t = t;
this.selection = selection;
}
@Override
public boolean isSelected() {
return this.selection.contains(this.t);
}
@Override
public void select() {
this.selection.add(this.t);
}
@Override
public void unselect() {
this.selection.remove(this.t);
}
}
--------- WebPage コンストラクタで書くもの -------------
final Set<Paper> selectionValues = new HashSet<Paper>();
DataView<Paper> view = new DataView<Paper>("view",provider,10){
@Override
protected void populateItem(final Item<Paper> item){
Paper paper = item.getModelObject();
item.add(
new CheckBox("flag"
,new SelectItemUsingCheckboxModel<Paper>(
paper,selectionValues)));
}
};