Wicket ページングでのチェックボックス(2)

Wicket PagingNavigator+DataView と form のcheckbox を組み合わせ
の続きです。
 Dataview生成でデータ読み出しを約束した IDataProvider の実装について、
これは、Google guice で、GridPickModalPage のIDataProviderフィールドに
インジェクトさせます。

WebApplication のinit() で

   addComponentInstantiationListener(
      new GuiceComponentInjector(this
        ,new AbstractModule(){
               @Override
               protected void configure(){
                  binder().bind(
new TypeLiteral<IDataProvider<Paper>>(){})
.to(PaperQuery.class);
                  binder().bind(DataDao.class)
                  .to(DataDaoImpl.class);

               }
            }
    }));

と書きます。

IDataProvider の実装クラスは、、、
--------------------------------------------------
public class PaperQuery implements IDataProvider<Paper>{
   private  DataDao dao;
   @Inject
   public PaperQuery(DataDao dao){
      this.dao = dao;
   }
   /* データ取得→List→itertor*/
   @Override
   public Iterator<? extends Paper> iterator(int first,int count){
      return this.dao.getData(first,count).iterator();
   }
   @Override
   public IModel<Paper> model(Paper paper){
      return new Model<Paper>(paper);
   }
   @Override
   public int size(){
      return this.dao.allSize();
   }
   @Override
   public void detach(){
   }

}

--------------------------------------------------
DataDao も Google guice インジェクトで生成させます。

モーダルウィンドウは、、、
--------------------------------------------------
public class GridPicker extends Panel{
   public GridPicker(String id,final Set<Paper> selectionPapers){
      super(id);
      // checkbox 選択されたものを受け取る。
      // ListView で表示させるために、Listに変換
      List<Paper> selectList = new ArrayList<Paper>();
      for(Paper p : selectionPapers) selectList.add(p);


      Form<Void>  form = new Form<Void>("pickform");
      form.add(new ListView<Paper>("pickview",selectList){
         @Override
         protected void populateItem(ListItem<Paper> item){
            Paper paper = item.getModelObject();
            item.add(new Label("name",paper.getName()));
            item.add(new Label("width",Integer.toString(paper.getWidth())));
         }
      });
      form.add(new AjaxButton("ok"){
         @Override
         protected void onSubmit(AjaxRequestTarget target,Form<?> f){
            // OKボタンの処理を記述
            ModalWindow.closeCurrent(target);
         }
      });
      form.add(new AjaxButton("cancel"){
          @Override
          public void onSubmit(AjaxRequestTarget target, Form<?> f){
             // キャンセルボタンの処理を記述
             ModalWindow.closeCurrent(target);
          }
      });
      add(form);
   }
}

-----------------------------------------------------

モーダルウインドウ GridPicker.html
 HTML 抜粋して書くと、、、 

<wicket:panel>
<table border="1" cellspacing="0">
<form wicket:id="pickform">
<thead>
<tr class="pickhead">
<th class="pickhead">Paper</th><th class="pickhead">WIDTH</th>
</tr>
</thead>
<tbody>
    <tr wicket:id="pickview">
        <td wicket:id="name">[name]</td>
        <td wicket:id="width" align="right">[width]</td>
    </tr>

</tbody>
<tr><td colspan="2"><br/></td></tr>
<tr><td colspan="2" nowrap="nowrap">
  <div>
      <input type="submit" wicket:id="ok" value="OK"/>
      <button wicket:id="cancel">キャンセル</button>
  </div>
</td></tr>
</form>
</table>
</wicket:panel>