S2Swing的なものを作りたい
Swing Application Frameworkは、リソースインジェクションや非同期タスクのサポートによって、Swingアプリケーションの開発を支援してくれます。ただし、Swing Application Frameworkの仕組み自体は非常に簡潔で、アプリケーションの「土台中の土台」の部分しか提供しません。Swing Application Frameworkオンリーで開発を進めることは現実的ではなく、実際には、さらにその上にレイヤを被せて抽象化する必要があると思います。
今、自分の頭の中で、S2Swingの妄想がどんどん拡大しています。SWTにとってのS2JFace(Uruma)が、Swingにも必要なんです!
幸いなことに、すでにUrumaというお手本があるし、値のバインディングやバリデーション、コンバータの基礎部分はBeans Binding(JSR 295)に任せられるので、頑張れば自分にも作れそうな気がします。要件は以下のような感じ。
- Swing Application Frameworkが持っている機能はそのまま活かす。
- View(画面オブジェクト)とForm(データの入ったPOJO)を分離させる。
- 名前規約とアノテーションに基づいて、UIの値とFormの値を自動バインディングする。
- 同様に、UIのイベントとViewのActionメソッドを自動バインディングする。全種類のイベントをサポートする。
- バリデータとコンバータはアノテーションで指定する。
- 値の型変換はある程度自動でサポートする。
- XMLでの画面定義はサポートしない(SWIXMLなど優れたプロダクトがあるので)。
とりあえず、Urumaのソースをじっくり読んでみよう。