AbstractCheckBoxModel を使いこなそう

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)));

   }
};