生成されるJClientコードについて

ADF JClientアプリケーションでは、JClientフォームの作成に使用するUIコンテナによく似た一連のJClientオブジェクトを作成することで、Swingコントロールとビジネス・サービスのデータ・ソース間のデータ・バインディングを行います。 これらのコンテナおよびそのJClient固有のコードは、JClientフォーム・ウィザードを使用して完全なアプリケーションを生成する際に確認できます。たとえば、DeptとEmpのビュー・オブジェクトに基づくマスター/ディテール形式のフォームの場合、ウィザードは次のクラスを生成します。

ここで、JPanelはSwingクラスです。JFrameおよびJClientPanelはJClientの一部で、アプリケーションのデータ参照パネルを構成します。

JClientがデータ・パネル間でデータ・コンテキストを保持する方法

JFrameまたはJPanelにより実装されるJClientPanelインタフェースによって、JClientアプリケーションでは次のようにデータを扱うことができます。

設計段階では、JClientアプリケーションに追加する各データ参照パネルは、UIコントロールとビジネス・サービスの行セット・イテレータ間の対話を受渡しするコンテキストを、フレームまたは親パネル(マスター/ディテール・レイアウト・パネルなど)で作成されるpanelBindingオブジェクトから取得します。JClientではデータ参照パネルの連鎖機能が提供されており、コードを追加する必要があません。たとえば、ウィザードでPanelDeptViewとPanelEmpView1というデータ参照パネルが生成される場合、それらの間では、各JPanelがJClientPanelインタフェースのsetPanelBinding()メソッドおよびgetPanelBinding()メソッドを実装しているため、panelBindingのインスタンスを介して同じデータ・コンテキストを共有します。

このパネル・バインディングを作成するフレームまたはパネルがあると、既存のpanelBindingオブジェクトを共有する、または新しいpanelBindingオブジェクトを作成する新規のデータ参照パネルを追加してJClientでアプリケーションを構築できます。

次に、JDeveloperのデータ・コントロール・パレットを使用してデータ・バインド・コントロールをデータ・パネルに1つずつ追加できます。 Swingコンポーネントのレベルでは、データ・バインディングは、コントロールのdocumentまたはmodelプロパティにJClientコントロール・モデルを指定して設定されます。 実行時には、データ・パネル内の各コントロールが、そのコントロールのsetModel()メソッドまたはsetDocument()メソッドへの引数としてpanelBindingオブジェクトをとることによってデータ・バインドされます。

パネル・バインディングを作成および使用するプロセス

データ・バインドされたパネルによってpanelBindingがどのように作成および使用されるかを理解するには、アプリケーションを実行した場合に、JFrameから始まって次のようなJClientコードが実行される際の処理を考えます。

  1. main()メソッドはアプリケーションをブートストラップします。 アプリケーションは、Databindings.cpxファイルのエントリに基づいてBindingContextを開始し、DCDataControlオブジェクトをロードします。 次に初期化されたDCDataControlオブジェクトでbindingContextpanelBindingに渡し、UIModelコンポーネント・バインディングを作成します。
  2. アプリケーション・オブジェクトを引数とするコンストラクタを介して、フレーム(FrameDeptViewEmpView1)が初期化されます。 このフレームを初期化すると、複数のDCDataControlのデータにバインドされるコンポーネントを含むUIModel定義に基づいて、panelBindingオブジェクト(JUPanelBinding)になります。パネル・バインディングの作成は、Swingコンポーネントへのデータ・バインディングと、データ・パネルの連鎖を可能にするJClientの重要な機能です。
  3. フレームまたはアプレット・クラスがレイアウト・パネル(前述の例では、MDPanelDeptViewEmpView1)を初期化し、setBindingContext()メソッドを使用して新しいレイアウト・パネルにパネル・バインディングを設定します。
  4. レイアウト・パネルのjbInit()メソッドでは、データ参照(子)パネルの作成が行われます。 このため、JClientは子データ・パネルのバインド(前述の例では、PanelDeptViewおよびPanelEmpView1)には共有bindingContextを使用します。
  5. コントロールの指定されたJClientモデルを使用して、コントロールから属性へのデータ・バインディングが行われます (このバインディング情報は、バインディング・コンテナのXMLメタデータに格納されます)。
  6. UIコントロールに対するデータの移入および更新を行うため、コントロール・バインディングによりイベントが処理されます。

 

 

Copyright © 1997, 2004, Oracle. All rights reserved.