年末頃にwickeXtを試してみた 今さらまとめ(1)

JQueryを一度も使ったことなく、mavenもまともに使ったことが無い私。
Twitterで噂に聞いたWickeXtを試してみようと思い、年末いろいろやってました。

今は復活してますが、当時、新公式サイトがサーバーエラーで閲覧できず、いきなり心が折れそうになりながらGoogle Code のQuickStartを見て挑戦することに。
今時mavenを使えないのは小学生までだよね的な指示を無視して、きっとwickext-0.9.jarにクラスパス通せば動くよ!とwickext-0.9jarをWicket1.3.5を使ったEclipseプロジェクトにつっこんで、サンプルソースを書いていざ実行。

……動きません orz

ユーザフォーラムを見ると、

Is there any way to get WickeXt to work with wicket 1.3.5?

とか

WickeXt comes with the 1.4-m3 version.

とか書いてあったので、当時の最新だったwickeXtを1.4rc-1へバージョンアップ。

……やっぱり動きません o ...rz

ぐぬぬ、こやつめ、と藁にもすがる思いでユーザーフォーラムを見回すと、

Does your wicket application extends WickextWebApplication or uses the Wickext listener ?

おおお。

アプリケーションクラスがWickextWebApplicationをextendするように修正して、無事Modalなウィンドウがブラウザに表示されました。
以下ソースコード

<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:wicket="http://wicket.apache.org/" lang="ja" xml:lang="ja">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
	<h3>QuickStart</h3>
	<div wicket:id="modal" title="Hello! World!">
		<span wicket:id="message">message</span>
	</div>
</body>
</html>

Step001.java

package wickext.testing.view;

import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.WebPage;
import org.objetdirect.wickext.ui.dialog.Window;

public class Step001 extends WebPage {
	
	public Step001() {
		Window modal = new Window("modal");
		modal.setAutoOpen(true);
		modal.add(new Label("message", "Hello, WickeXt!"));
		this.add(modal);
	}
}

TestApplication.java

package wickext.testing;

import org.objetdirect.wickext.utils.WickextWebApplication;

import wickext.testing.view.Step001;

public class TestApplication extends WickextWebApplication {

	@Override
	protected void init() {
		super.init();
		getRequestCycleSettings().setResponseRequestEncoding("UTF-8");
		getMarkupSettings().setDefaultMarkupEncoding("UTF-8");
	}

	@Override
	public Class<Step001> getHomePage() {
		return Step001.class;
	}

	@Override
	public String getConfigurationType() {
		return WickextWebApplication.DEVELOPMENT;
	}

}

Componentをaddして、その入れ子のHTML構造をjQueryの仕様に併せれば良いという基本ルールなんですね。