結局自分で作っちゃった。
昨日探してたJavaScriptのメニューですが、Tapestryで使用するにはちゃんとモジュール化されてないと辛いんです。いついつスクリプトをロードしろとか制約が多かったりするのもキツイ。っていうわけで作ったれと思い、日曜の午後を丸々つぶし、朝の4時までうらーって作ってたらなんとなくできてきました。
JavaScript便利だな。ツリー状のデータは、こんな感じでかけるんですよ。
var MENU_ITEMS = { left:200, top:100, width:100, height:20, bgcolor:"#DDDDDD", clss: null, items:[ {caption:"ルート1", sub:[ {caption:"いちのいち", url:"#sectionName"}, {caption:"----------", url:""}, {caption:"いちのに", url:"other.html"}, {caption:"いちの3", url:"../other_folder/file.html"} ] }, {caption:"ルート2", sub:[ {caption:"にの1", url:"?parameter1=value1", sub:[ {caption:"にの1のいち", url:"#sectionName"}, {caption:"にの1のtwo", url:"#sectionName"}, {caption:"にの1のthree", url:"#sectionName"}, {caption:"にの1のfour", url:"#sectionName"} ] }, {caption:"にの2", url:"some_script.php?parameter2=value2", sub:[ {caption:"にの2の1", url:"#sectionName"}, {caption:"にの2の2", url:"#sectionName"}, {caption:"にの2の3", url:"#sectionName"}, {caption:"にの2の4", url:"#sectionName"} ] } ] } ] };
特にクラスを用意する必要なし!データだけならいきなり上記のようにかけちゃいます。んでこれを用意したメニュークラスのコンストラクタに渡してあげるわけです。するってーとメニューを生成してくれるっていう寸法になっています。まあ、自分で作ったんで、きっちり依存関係も分かってるんで、安心して使えます。
でもこういうのを自分で作るのってダサいっすよね。きっとどこかにあると思えば尚更。ものを書かずにシステムを作るっていうのが僕の理想なので。
もうちょっとできたら公開しようかな。