swing
別件でswingの相談を受けた。結局「.NETかなぁ」って言われた。swingをかばうつもりはないが、swingをなめるなぁ、ということで、そのとき、今ならこう作りたい、やりたいと整理したことをメモ。機会があれば本格的な続きを実装バリバリで。
まずはview。
view定義をよく、xmlとか外だししているFWをみかけるけど、それはそれでいいけど、個人的にはプライオリティは高くはない、だってVisualEditor, NetBeans楽チンだもん。もちろん独自のコンポーネント組み合わせて使用する場合とか完全にIDEでまかなえるわけじゃないけど。サクサク作れるリズムを大事にしたいなぁと。
あと自由度の高さはswingのよさだけど、ある程度、ソースの統一感は必要だと思っている。
View-ViewControl-ModelはAnnotationとかつかっても守りたいかな。
実装的裏づけはとってないけど、viewのイベントをハンドリングするコントローラは、こんな感じ
@inject ContentPane contentPane @inject SomeComponent compA @inject SomeService compA @inject SomeBean bean @eventCatch("add") @eventFire(method="compA.fireMethod") //<--明示的/@refleshとか public void someAction { }
で、view<->modelの変換も自動にやりたいかな、JSR295も利用しつつ。
@Model(class="com.sample.SomeBean") public class SomeComponent extends JPanel{ }
bindingの振る舞いは利用者が自由に差し込めるようにもしないと。
@refleshでview=modelの変換+画面の再表示を隠蔽/自動
initイベント - 画面開いたときなどのinitイベントを起こせる、拾えるようにしたい。
undo/redoも共通化したい、でもFW依存とかにはしないようにする。
Validatorの適用/ルールの検討
画面間の情報の引渡しもDIContainerレベルで細工したいかな。例えばSpring2.0だと、scopeをカスタマイズして独自scopeができるようになったし、Seamではbijectionのアイデア、seasarだとouterを利用してやることになるのかな?要調査
Diaplay-template(ルール外だし?うざい?手間かなぁ)- setFont/Color/Open/Dialog制御
とりあえず、こんなとこかな。SingleThreadPolicyやAWTとの描写アルゴリズムの相違など結構、本格的にやるといろいろあるけど、でも、ちゃんとやると結構おもしろそーだ。