Java ビジュアル・エディターは、 インターフェースおよびクラスの汎用フレームワークを提供することによって、 ビジュアル・コンポーネントを Enterprise Bean、Java Bean ファクトリー、 または Web サービスといったデータ・ソースへのバインドを支援します。
テーブルやテキスト・フィールドのようなビジュアル・コンポーネントには、 データのプル元となるデータ・ソースが必要です。また、このデータ・ソースにデータをプッシュすることもできます。 Java ビジュアル・エディターでは、3 つタイプのヘルパー・クラスが提供されます。 これらのクラスを対象のプロジェクト内に生成して、 ビジュアル・コンポーネントとデータ・ソースからのデータを簡単に素早くバインディングできるようにすることが可能です。 このヘルパー・クラスの目的は、 データとビジュアル・コンポーネントをバインディングするためのランタイム・フレームワークを提供することでなく、 クライアント・アプリケーションがビジュアル開発を迅速に開始できるようにすることです。
3 つのタイプのヘルパー・クラスとは、データ・ソース、データ・オブジェクト、 およびバインダーで、それぞれについては以降で詳細に説明します。 ビジュアル・エディターは、サポートされる種々の Swing コンポーネント向けに Swing 特定のバインダー・クラスを生成しますが、 データ・ソースおよびデータ・オブジェクトのクラスは、ビジュアル・コンポーネントとは完全に独立しており、 将来、他のウィジェット・ライブラリーをサポートできるようにするものです。
提供される汎用バインダー・クラスの Javadoc については、『API reference for binders』を参照してください。
Java ビジュアル・エディター・バインダーを使用して、 データ・ソースに接続する方法を学習するには、以下のチュートリアルを進めてください。
チュートリアル: Web サービスを使用する Java リッチ・クライアントのビルド
ビジュアル・コンポーネントをバインドするときに、Java ビジュアル・エディターによって生成され、 インスタンス化されるバインダー・クラスのいくつかの利点の説明を次にリストします。
ビジュアル・コンポーネントをデータ・ソースおよびデータ・オブジェクトにバインドするときに、 必要に応じて、対象のプロジェクト・ソース・ディレクトリー内にバインダー・コードが生成されます。 デフォルトでは、生成済みクラスは、対象プロジェクトの jve.generated パッケージに追加されます。 これで、データ・バインディングのロジックを自由に拡張したり、置き換えたり、あるいは書き直したりできます。 Java ビジュアル・エディターは、提供されるインターフェースを正しく実装するデータ・オブジェクト、 データ・ソース、およびバインダーに対してビジュアル・サポートを提供します。
図 1. Java ビジュアル・エディターがビジュアル・コンポーネントをデータ・オブジェクト、
およびデータ・ソースにバインドする方法を示すハイレベルな概要
データ・ソースはデータ・ファクトリーを表します。 これは、EJB Session Bean、Web サービス、Java Bean ファクトリー、 または IDataSource インターフェースを実装するものをベースにすることができます。 ビジュアル・エディターで正しく構成されたデータ・ソースは、使用可能な一連のサービスを実データ・ファクトリーから戻し、 アプリケーションで使用できるようにします。
データ・ソースは、ファサードのファクトリーとみなすことができます。 データ・ソースが提供する構成プロパティーでは、データ・ソース・ファサードのインスタンス化と初期化が可能です。 ファサードとは、データ・オブジェクトをバックエンドから作成できるメソッドのセットを提供するか、 その他のビジネス機能を提供するクラスです。 ランタイムで、getDataSource() インターフェースが使用され、ファサードのインスタンスが取得されます。 ファサードが確実に正しくインスタンス化されるようにするのは、データ・ソースの実装者の責任です。 例えば、EJB データ・ソースは、ホーム・インターフェースを呼び出して、 指定された Session Bean を作成してから getDataSource() を呼び出します。 getType() は、ファサード・クラスのタイプ (クラス) を戻さなければなりません。 この API はデザイン時に、主にメソッドのイントロスペクションのために呼び出されます。
データ・オブジェクトは、Java オブジェクトをラップして管理し、 それに対するイベント変更サポートを提供します。 ターゲット・オブジェクトにアクセスするには、IBoundObject インターフェース上の getObject() メソッドを使用します。
Java ビジュアル・エディターで実装するデータ・オブジェクトにはいくつかのタイプがあり、パレットで使用できます。
図 1 では、Service2(param) を呼び出すことによって戻されるデータ・オブジェクトを表すデータ・ソース・データ・オブジェクト内のプロパティーにテキスト・フィールドがバインドされています。 このリリースで、ヘルパー・クラスがサポートするのは、1 つまたは少数の引き数を持つサービスのみです。 予備手段として、別のサービスに 1 セットの引き数をラップできます。
前の図では、ビジュアル・テーブルは、データ・ソース行オブジェクトにバインドされていますが、 このオブジェクトは、データ・ソースでの Service1 呼び出しによって戻されるデータ・オブジェクトの配列を表します。 このテーブルの列はデータ・ソース行オブジェクト内のフィールドにマップされます。
図 1 は、行テーブル・バインダーが、ビジュアル・テーブル内で選択済みの行を listen し、 その行に対して基本データ・オブジェクトを提供する様子を示しています。 この基本データ・オブジェクトは、Service2(param) のパラメーターとして使用されて、 データ・ソース・データ・オブジェクトを戻します。 図 1 のテキスト・フィールドは、このデータ・ソース・データ・オブジェクトにバインドされています。
これは、データ・ソースでのサービス呼び出しから直接に行データを取得する行テーブル・バインダーと同様です。
図 1 では、テキスト・バインダーが、ビジュアル・テキスト・フィールドを、 Service2(param) によって戻されるデータ・ソース・データ・オブジェクト内のプロパティーにバインドしています。 図 1 の Service2 のパラメーターは、テーブル内の選択された行 (おそらく ID といったキー・フィールド) から収集されます。 この例では、Service2 は、ビジュアル・テーブル内の選択済み行に関するプロパティーを推定より多く戻します。 例えば、ビジュアル・テーブルは、姓および従業員 ID 付きですべての従業員をリストできます。 選択された行の従業員 ID は、Service2 へのパラメーターとして使用され、 Service2 はこの従業員に関する全レコードを戻すことができます。これには従業員の給与も含まれます。 したがって、テキスト・フィールドを Service2 から戻されるデータ・ソース・データ・オブジェクト内の給与プロパティーにバインドできます。
Java ビジュアル・エディターは、JButtons とアクションのバインディングをサポートします。 ボタンがアクション・バインダーにバインドされると、 そのアクション・バインダーは、アクションの引き数が変更されたときに、自動的にそのボタンの使用可能状態を変更します。 例えば、サービス呼び出しを起動するアクション・バインダーは、そのサービス呼び出しのパラメーターが変更されると、 ボタンの使用可能状態を変更します。
図 1 の例では、ボタンのアクション・バインダーは、 テキスト・フィールドがバインドされている同じデータ・オブジェクトをパラメーターとして使用しています。 そのため、テキスト・フィールドのテキストが変更されると、 このボタンのアクション・バインダーは、データ・オブジェクトが変更されたことを検出し、 アクション・バインダーは、ボタンを使用可能にします。 その後で、このボタンがクリックされると、アクション・バインダーは、 テキスト・フィールド内の変更された値を持つ新規データ・オブジェクトを取得し、 データ・ソース上で Service3(param) を呼び出します。
図 1 では、テキスト・フィルター・バインダーがテキスト・フィールドを テーブル内の特定の列にバインドしています。
前述のように、生成済みのクラスとインターフェースは、 ビジュアル・コンポーネントとデータ・オブジェクトおよびサービスのバインドを素早く簡単に始めるための手段に過ぎないことは重要ですので注意してください。 Java ビジュアル・エディターによって生成されたバインダーは、フレームワークになるのではなく、 むしろ、Java ビジュアル・エディターで適切に働く汎用性のあるデフォルトの実装です。 生成済みパッケージ内のクラスやインターフェースは、 対象のアプリケーションおよびデータ・ソースの特定のニーズに合わせて拡張したり、カスタマイズしたりできます。 クラスを拡張しても、それらのクラスが提供されたインターフェースを正しく実装している限り、 ビジュアル・エディターは、ビジュアル・サポートを提供し続けます。