S2Swingは、Swing Application FrameworkとBeans Bindingをベースとした、SwingによるGUIアプリケーション開発をサポートするフレームワークです。
Swing Application Framework(JSR 296)は、Swingアプリケーションの開発を簡略化するためのライブラリです。 Swing APIを抽象化し、リソースインジェクションやアクションなど、アプリケーションの共通的基盤となる機能を提供しています。
https://appframework.dev.java.net/
Beans Binding(JSR 295)は、複数のオブジェクトのプロパティ同期を実現するAPIです。主に、JavaBeansオブジェクトとSwingコンポーネントの同期を 目的として開発されています。Beans Bindingを使用することで、モデルとビューの分離が容易になり、メンテナンス性の高いGUIコードを記述することが可能になります。
https://beansbinding.dev.java.net/
S2Swingでは、主に以下の機能を提供します。
個別機能の使用法を示すサンプルコードは、チュートリアルの中にあります。 また、s2swing-tutorialパッケージには、より本格的なサンプルとして、メモ帳アプリケーション(notepad)のコードがあります。
S2Swingには、Swing Application FrameworkとBeans Bindingだけでは実現できない大きなメリットが3つあります。
S2ContainerのAOP機能やイントロスペクション機能を使用しているためです。
NetBeansではSwing開発用にIDEが充実していますので、S2Swingの一部の機能は使用する必要がないでしょう。 しかし、@S2Actionアノテーションや、ObservableBeansによるバインディングの支援、またバリデーションやコンバータの機能は、 NetBeans環境下でも十分に有用です。
S2FrameクラスやS2Dialogクラスの継承は必須ではありません。リソースやアクションのインジェクションが不要なウィンドウについては、 JFrameやJDialogを直接使用しても全く問題ありません。また、インジェクションが必要な場合で、ウィンドウがS2FrameクラスやS2Dialogクラスを 基底クラスにできないときには、ウィンドウクラスにS2ViewObjectインタフェースを実装してください。
アクションやリソースのインジェクションを行うためには、S2SingleFrameApplication#show()メソッドを使用してウィンドウを表示する必要があります。
Java5の環境でselected引数を機能させるには、アクションに対応するUIコンポーネントを JButton / JToggleButton / JCheckBox / JRadioButton / JCheckBoxMenuItem / JRadioButtonMenuItem の代わりに S2Button / S2ToggleButton / S2CheckBox / S2RadioButton / S2CheckBoxMenuItem / S2RadioButtonMenuItem とする必要があります。
必ずしもそうではありません。ObservableBeans.create()メソッドの役割は、モデルクラスのプロパティのsetterメソッドにfirePropertyChange() メソッドの呼び出しを埋め込んで、プロパティの変更を監視可能にすることです。setter中にすでにfirePropertyChange()メソッドの呼び出しが記述済みである場合や、 モデルのプロパティ変更をUIコンポーネントに伝搬する必要がない場合は、ObservableBeans.create()メソッドを使用する必要はありません。
S2Swingとしては、バリデータとコンバータをS2ContainerからDIする機能を持っています。 バリデータとコンバータ以外については、DIに関する独自機能は今のところ特にありません。 もちろん、アプリケーションコードからS2Containerを適宜呼び出すことによって、DIを行うことは自由にできます。