scriptaculousを使ってコンポーネントを作ってみた

チェックボックスと文字列、スライダーで構成されたコンポーネントを作ってみました。
http://squeak.qp.land.to/img/scriptaculous001.png
今まで同様WAComponentから継承しても作れますが、

rendererClass
	^ WARenderCanvas

としてやらないとダメなようです。Seaside2.7からデフォルトのレンダラクラスがWARenderCanvasになるというのも、scriptaculousからみか?まぁWARenderCanvasなら、ギシギシhtmlソースみたいにならないので、個人的にはいい方向のような気がする。

実際のソースはこんな感じです。サンプルをほとんどそのままなので、まぁあまり参考になりませんが、赤文字部分がいわゆるAjaxとかいうものを使う、まじないですね。

renderContentOn: html 
ckboxId formId trackId handleId positionId
ckboxId := 'checkbox'. formId := 'form'. trackId := 'track'. handleId := 'handle'. positionId := 'position'. super renderContentOn: html. html div id: 'jobitem'; with: [html form id: formId; with: [html checkbox value: status; callback: [:value | status := value]; onClick: (html updater id: ckboxId; triggerForm: formId; callback: [:r | r render: status])]. html text: item. html div id: trackId; with: [html div id: handleId]. html div id: positionId; with: position. html script: (html slider handleId: handleId; trackId: trackId; value: position; range: (0 to: 100); onSlide: (html updater id: positionId; triggerSliderCallback: [:value | position := value asInteger]; callback: [:render | render render: position]))]