Wicketで使う Spin.js のサンプル(1)

先日投稿の「画像リソース不使用のSpin モーダル」 を利用して、Wicket と組み合わせて使用してみる。

jQuery 2.0.3 と、公開した progressmodal.1.0.js を使います。

今回は、form送信とリンクの例です。Panel の使用例は次回にします。


HTMLソースを以下のように用意します。
今回は、Wicketのフラグメント機能の元、作成してあると仮定して wicket:extend を使ってます。

<!DOCTYPE html>
<html xmlns:wicket="http://wicket.apache.org">

<wicket:extend>

<form wicket:id="form" method="post">

<input wicket:id="submit" type="submit" value="GO"></td>

</form>

<a wicket:id="tolazy" href="#">to LazyPage</a>

<script type="text/javascript">
$(function(){
   $('body').prepend('<div id="progress"></div>');
   initProgressModal('#progress');
});
</script>

</wicket:extend>

</html>
=============================
scriptタグを埋め込んでるので、HTMLをブラウザが読み込んだ時に、progressmodal.1.0.js が用意するモーダルの初期設定を行います。

WebPage 継承クラスのコンストラクタで以下のようにします。
onComponentTag をオーバーライドして、onclick に、モーダルの表示を実行するようにしているのが
ポイントです。

Form<Void> form = new Form<Void>("form"){
   @Override
   protected void onSubmit(){
      setResponsePage(LazyViewPage.class);
   }
};
WebMarkupContainer submit = new WebMarkupContainer("submit"){
   @Override
   protected void onComponentTag(ComponentTag tag){

      super.onComponentTag(tag);
      tag.put("onclick", "displayProgressModal('#progress', true);" );
   }
};
form.add(submit);
add(form);


add(new BookmarkablePageLink<Void>("tolazy", LazyViewPage.class){
   @Override
   protected void onComponentTag(ComponentTag tag){

      super.onComponentTag(tag);
      tag.put("onclick", "displayProgressModal('#progress', true);" );
   }
});

また、WebPage 継承クラスでは、renderHead でJavaScript ソースを参照するように定義します。

@Override
public void renderHead(IHeaderResponse response){
   super.renderHead(response);
   // jQuery を参照
   response.render(JavaScriptHeaderItem.forReference(new JavaScriptResourceReference(com.jquery.ReferJquery.class, "jquery-2.0.3.min.js")));
   // Spin.js を参照
   response.render(JavaScriptHeaderItem.forReference(new JavaScriptResourceReference(ReferJquery.class, "spin.min.js")));
   // 用意したプログレス JS ソースを参照
   response.render(JavaScriptHeaderItem.forReference(new JavaScriptResourceReference(Referlazy.class, "progressmodal.1.0.js")));
   

}