ヘッダーをスキップ
Oracle® Fusion Middleware Oracle Application Development Framework Swingアプリケーションの開発
12c (12.1.2)
E48100-01
  目次へ移動
目次

前
 
次
 

5 ADFバインディングのカスタマイズ

この章では、ADFモデル・バインディング・エディタを使用してADF Swingアプリケーションのコントロール・バインディングをカスタマイズする方法について説明します。コントロールは、ADFバインディングを使用してデータ・モデルにバインドされます。「データ・コントロール」パネルからコントロールを挿入するときに、JDeveloperによってADFバインディングが作成されます。

この章の内容は次のとおりです。

5.1 ADFバインディングのカスタマイズについて

「データ・コントロール」パネルからコントロールを挿入する場合、コントロールはADFバインディングを使用してデータ・モデルにバインドされます。そのため、バインディング・エディタを使用してバインディングを編集できます。

ADF Swingは、SwingコントロールとADFビジネス・コンポーネント・ビュー・オブジェクトの行セット・イテレータとの間の相互作用のマーシャリングを担当するSwingコントロールのモデル・オブジェクトを提供します。SwingモデルのADF Swing実装は、コントロール・バインディングと呼ばれます。

ADF SwingアプリケーションのUIコンポーネントは、ADFビジネス・コンポーネント・ビュー・オブジェクトにバインドされます。たとえば、ADF Swingのデータバインドされたパネルに、名前および姓のテキスト・フィールド(JTextField)があり、ユーザーがビジネス・コンポーネント属性値を表示および変更できるとします。

指定されたSwingコントロールに使用されるコントロール・バインディングのタイプは、そのコントロールによって実行されるアクションによって異なります。場合によっては、コントロールは、異なる相互作用を定義する複数のコントロール・バインディングと連動します。表5-1は、ADF Swingによって様々なSwingコントロールに対して定義されているバインディングを示しています。

表5-1 ADF Swingのコントロールに対するコントロール・バインディング

ADFコントロール・バインディング Swingコントロール

アクション・バインディング

ボタン

属性バインディング

ラベル

パスワード

テキスト・エリア

テキスト・フィールド

テキスト・ペイン

編集ペイン

配列コンボ・ボックス・バインディング

JUArrayComboBox

ブール・バインディング

チェック・ボックス

バインディングされた範囲バインディング

プログレス・バー

スクロール・バー

スライダ

フォーマット済テキスト・フィールド・バインディング

フォーマット済テキスト・フィールド

イテレータ・バインディング

ナビゲーション・バー

リスト・バインディング

コンボ・ボックス

リスト

ラジオ・ボタン・グループ

スピナー

LOVモードでのリスト・バインディング

スピナー

ボタンLOVバインディング

ボタンLOV

スクロール・バインディング

スクロール・バー

スライダ

表バインディング

ツリー・ノード・バインディング

ツリー

グラフ・バインディング

JUSingleTableGraphBinding

JUMasterDetailTableGraphBinding


5.2 ADF SwingパネルのADFバインディングのカスタマイズ方法

JDeveloperのコントロール・バインディング・エディタを使用して、データ・コントロール・パネルを使用して作成した任意のデータ・バインドUIコンポーネントの特性をカスタマイズできます。


注意:

データ・バインディングに変更を加えると、データ・バインディングと、データを表示するために使用されるUIコンポーネントの間で矛盾が生じることがあります。たとえば、表のデータ・バインディングを編集し、属性値の列を1つ減らして表示するには、Javaビジュアル・エディタを使用してその列をソースから削除する必要があります。


Javaビジュアル・エディタからUIコンポーネントのバインディングをカスタマイズする手順は次のとおりです。

  1. 「データ・コントロール」パネルを使用して、「Java」パネルにUIコンポーネントを挿入します。

    詳細は、第2.11項「「データ・コントロール」パネルからのADF Swing編集フォームの作成方法」を参照してください。

  2. Javaビジュアル・エディタにそのUIコンポーネントを表示したまま、そのコンポーネントを右クリックし、「バインディングの編集」を選択してバインディング・エディタを表示します。

    Javaビジュアル・エディタの「バインディング」タブをクリックし、「バインディング」リストでバインディングをダブルクリックすることもできます。

5.3 ADFアクション・バインディングのカスタマイズ方法

「データ・コントロール」パネルから挿入したButton UIコントロールに対するADFアクション・バインディングをカスタマイズできます。

アクション・バインディングによりユーザーは、特定のビジネス・サービスの属性およびコレクションでアクションを開始できます。アクションは、ビジネス・サービスのクラス・メソッドによって定義され、「データ・コントロール」パネルに表示される「操作」フォルダに表示されます。

「データ・コントロール」パネルを使用してアクションをボタンとして挿入する場合、アクション・バインディング・エディタに、対応する選択内容が表示されます。アクション・バインディング・エディタを使用して、データ・コレクションおよびアクションを変更できます。また、アクションを現在のドキュメントのバインディング・コンテキストのすべてのデータ・コレクションに適用する場合は、データ・コントロールおよび対応するアクションを選択できます。


注意:

カスタム・メソッドでパラメータを使用する場合、パラメータの実際の値は「プロパティ」ウィンドウで指定できます。アクション・バインディング・エディタでは、メソッドの引数の値の入力はサポートされていません。


特定のビジネス・サービスでは、そのビジネス・サービスのADFデータ・コントロールで標準アクションがサポートされています。たとえば、ADFビジネス・コンポーネントでは次の標準アクションを使用できます。

アクションが開始されると、バインドされたデータ・コレクションがすぐに更新されます。このアクション・バインディングと同じデータ・コレクションを使用するすべてのコントロール・バインディングを通じて、変更内容がUIに反映されます。

アクション・バインディングを設定するには、次のようにします。

  1. データ・パネルをJavaビジュアル・エディタで開きます。

    詳細は、第2.9項「空のADF Swingフォームの作成方法」を参照してください。

  2. 「データ・コントロール」パネルで、データ・コレクションまたはデータ・コントロールの「Operations」フォルダを開きます。


    注意:

    「データ・コントロール」パネルの階層は、データ・コレクションの下の「Operations」フォルダ内の特定データ・コレクションに適用される操作(「Create」「Delete」など)を表します。ビジネス・サービスをADFデータ・コントロールによってサポートする場合は、「Commit」「Rollback」などの操作も選択できます。これらは階層の最上位ブランチの「Operations」フォルダ内にある現行ドキュメントのバインディング・コンテキストで、すべてのデータ・コレクションに適用されます。


  3. 目的の操作を、開いたドキュメントまでドラッグします。

    JDeveloperによってコードがクラス・ファイルに追加され、コンポーネントが操作にバインドされます。

  4. そのコントロール用のアクション・バインディング・エディタを表示します。

    詳細は、第5.2項「ADF SwingパネルのADFバインディングのカスタマイズ方法」を参照してください。

  5. 「データ・コレクション」リストで、アクションを実行するコレクションまたはデータ・コントロールを選択します。

    現在のドキュメントのバインディング・コンテキストで、すべてのデータ・コレクションに適用される操作(「Commit」「Rollback」など)を選択する場合は、ルート・データ・コントロール・ノードの下の「Operations」フォルダを開きます。


    注意:

    データ・コレクションでの処理結果を表示するには、データ・パネルに別のUIコントロールを追加します。このコントロールは、アクション・バインディングと同じデータ・コレクションへのコントロール・バインディングを設定するだけで、UIに処理が反映されます。


  6. 選択したデータ・コレクションで実行するアクションの「操作」を選択します。

  7. CommitRollbackなどのカスタム・メソッドを選択した場合、「イテレータ」は空のままにする必要があります。これらは、ADFデータ・コントロールに対するアクションであり、イテレータは必要ないためです。

    「イテレータ」リストで、選択したデータ・コレクションにアクセスするため、すでに指定したイテレータを表示している場合は、選択を変更しないでおきます。また、ビジネス・サービス・データ・コレクション(「Next」、「Next Set」、「Previous」、「Previous Set」など)によって提供される事前定義済のアクションの1つを選択している場合は、「新規」をクリックしてイテレータを生成し、ドロップダウン・リストに表示されるようにします。

  8. 「OK」をクリックし、バインディング設定を保存します。

  9. 「プロパティ」ウィンドウを開き、メソッド・パラメータ値を定義します。

    または、ユーザーがメソッドのパラメータを指定できるADF Swingフォームを作成することもできます。詳細は、第3.8項「ADF Swingフォームでのメソッドとパラメータとのバインディング」を参照してください。

JDeveloperはjbInit()メソッド内にsetModel()メソッドを追加して、アクション・バインディングを生成します。例5-1は、「データ・コントロール」パネルからボタンを挿入した後、メタデータを指定するためにDataControlIdを参照するメソッドを示しています。

例5-1 ボタンを挿入した後にDataControlIdを参照するメソッド

myButton.setModel((ButtonModel)panelBinding.bindUIControl("DataControlId", myButton));

新しいバインディング用のメタデータは、バインディング定義ファイル(PageDef.xml)に表示されます。


注意:

カスタム・メソッド引数定義がある場合は、「プロパティ」ウィンドウを使用してその値を指定するまで、未定義として表示されます。

デフォルトで、同じメソッド用に2回以上アクション・バインディングを生成すると、メソッドの戻る場所が同じになります。つまり、同じメソッドに対して一意のアクション・バインディングを生成する場合は、ReturnName属性を編集して、各バインディングに対して一意の名前を指定する必要があります。通常は、同じアクション・バインディングの重複使用については、場所を同じままにします(この場合、各使用ごとに異なるパラメータ値が指定されます)。これにより、バインディング・コンテキスト内のすべてのバインドされたコントロールが、同じ戻り名の下にある結果を検索できます。


5.4 ADF属性バインディングのカスタマイズ方法

「データ・コントロール」パネルから挿入するこれらの基本的なUIコンポーネントに対してADF属性バインディングを設定できます。

ADF属性バインディングを、これらのUIコンポーネントに対して設定し、様々な種類のコンテンツ(テキスト以外)を表示できます。

属性バインディングの動作は、使用するコントロールのタイプによって異なります。ユーザーは、データ・コレクションで定義される単一の属性の値を表示、または場合によっては編集できます。属性バインディング・エディタを使用して、データ・コレクションと属性を選択します。


注意:

ADFビジネス・コンポーネント・プロジェクトでは、属性にコントロール・ヒントを設定することによって属性値を更新可能にできます。その場合、ユーザーは、更新可能な属性の値を直接編集できます。


属性バインディングを設定するには、次のようにします。

  1. データ・パネルをJavaビジュアル・エディタで開きます。

    詳細は、空のADF Swingパネルの生成に関する項を参照してください。

  2. 「データ・コントロール」パネルで、表示する目的の属性を、開いているフォームまたはパネルにドラッグします。

    データ・コレクションではなく、必ず属性を選択します。

  3. 子の追加ポップアップ・リストから、開いているドキュメントに追加するUIコンポーネントを選択します。

    編集中のドキュメントに新しいUIコンポーネントが表示されます。

  4. コンポーネントの属性バインディング・エディタを表示します。

    詳細は、第5.2項「ADF SwingパネルのADFバインディングのカスタマイズ方法」を参照してください。

  5. 属性バインディング・エディタで、表示する属性が含まれる「データ・ソース」を選択します。

  6. 「属性」リストから、コントロールの値として表示する属性を1つ選択します。

  7. 選択したデータ・コレクションにアクセスするために指定したイテレータが「イテレータ」ドロップダウン・リストにすでに表示されている場合、選択内容のままにします。ドロップダウンが空の場合、「新規」をクリックしてイテレータを作成し、ドロップダウン・リストに表示します。


    注意:

    ドロップダウン・リストでイテレータの選択内容を変更すると、以前選択していた属性が削除されます。イテレータの選択を変更する前に、選択されていた元の属性を記録しておく必要があります。必要に応じて「取消」を押し、元の属性選択を更新しないでバインディング・エディタを終了できます。


  8. 「OK」をクリックし、バインディング設定を保存します。

開発者は、jbInit()メソッド内にsetModel()メソッドを追加して、コントロール・バインディングを作成し、DataControlIdを参照してメタデータを指定します。例5-2は、「データ・コントロール」パネルからテキスト・フィールドを挿入した後に作成されるメソッドを示しています。

例5-2 属性バインディングのためのモデル・メソッドの設定

myTextField.setDocument((Document)panelBinding.bindUIControl("DataControlId", myTextField));

新しいバインディング用のメタデータは、バインディング定義(PageDef.xml)に表示されます。

5.5 ADF配列コンボ・ボックス・バインディングのカスタマイズ方法

「データ・コントロール」パネルから挿入するJUArrayComboBox UIコントロールに、ADF配列コンボ・ボックス・バインディングを設定できます。

配列コンボボックス・バインディングにより、ユーザーは、配列を指定する属性によって定義されるリストから表示される値を表示、場合によっては編集できます。配列バインディング・エディタを使用して、データ・コレクションと属性を選択します。


注意:

ADFビジネス・コンポーネント・プロジェクトでは、属性にコントロール・ヒントを設定することによって属性値を更新可能にできます。その場合、ユーザーは、更新可能な属性の値を直接編集できます。


配列コンボボックス・バインディングを設定するには、次のようにします。

  1. データ・パネルをJavaビジュアル・エディタで開きます。

    詳細は、第2.10項「空のADF Swingパネルの作成方法」を参照してください。

  2. 「データ・コントロール」パネルで、表示する属性を、開いているフォームまたはパネルにドラッグします。

    属性は、データ・モデル・プロジェクト内でタイプoracle.jbo.domain.arrayとしてマップされているビジネス・サービス・データ・コレクションの属性にする必要があります。

  3. 子の追加ポップアップ・リストから、「JUArrayComboBox」を選択します。

    編集中のドキュメントに新しいUIコンポーネントが表示されます。

  4. そのコンポーネント用の配列コンボ・ボックス・バインディング・エディタを表示します。

    詳細は、第5.2項「ADF SwingパネルのADFバインディングのカスタマイズ方法」を参照してください。

  5. 配列コンボ・ボックス・バインディング・エディタで、表示する属性が含まれる「ベース・データソース」を選択します。

  6. 「属性の表示」リストから、コンボ・ボックス・コントロールの値を表示する配列型の属性を1つ選択します。

  7. 「OK」をクリックし、バインディング設定を保存します。

開発者は、jbInit()メソッド内にsetModel()メソッドを追加して、コントロール・バインディングを作成し、DataControlIdを参照してメタデータを指定します。例5-3は、「データ・コントロール」パネルからJUArrayComboBoxを挿入した後に作成されるメソッドを示しています。

例5-3 配列バインディングのためのモデル・メソッドの設定

jUArrayComboBox.setArrayBinding((JUDefaultControlBinding)panelBinding.
bindUIControl("DataControlId", jUArrayComboBox));

新しいバインディング用のメタデータは、バインディング定義(PageDef.xml)に表示されます。

5.6 ADFブール・バインディングのカスタマイズ方法

「データ・コントロール」パネルから挿入するチェック・ボックスUIコンポーネントに対してADFブール・バインディングを設定できます。

ブール・バインディングにより、ユーザーはコンポーネントを選択し、コンポーネントの選択状態に基づいてデータ・コレクションの属性を更新できます。ブール・バインディング・エディタを使用して、コンポーネントの対象となるデータ・コレクションと属性を選択し、コンポーネントの選択状態に対応する値(たとえば、選択されている場合はtrue, 選択されていない場合はfalse)を指定します。適切な値を指定するには、バインドされた属性に指定される値を把握しておく必要があります。

ブール・バインディングを設定するには、次のようにします。

  1. データ・パネルをJavaビジュアル・エディタで開きます。

    詳細は、第2.10項「空のADF Swingパネルの作成方法」を参照してください。

  2. 「データ・コントロール」パネルで、表示する属性を、開いているフォームまたはパネルにドラッグします。

    データ・コレクションではなく、必ず属性を選択します。

  3. 子の追加ポップアップ・リストから、「チェックボックス」を選択します。

    編集中のドキュメントに新しいUIコンポーネントが表示されます。

  4. コンポーネントのブール・バインディング・エディタを表示します。

    詳細は、第5.2項「ADF SwingパネルのADFバインディングのカスタマイズ方法」を参照してください。

  5. 「ベース・データソース」リストで、更新する属性が含まれるデータ・コレクションを選択します。

  6. 「属性」リストから、値リストに表示する属性を選択します。

  7. リスト・バインディングから値を提供する場合は、ドロップダウン・リストから「サーバー・リスト・バインディング名」を選択します。

  8. 「選択状態の値」フィールドで、ユーザーがそのコントロールを選択したときに、モデルで属性の更新に使用される値を入力します。

  9. 「選択解除状態の値」フィールドに、ユーザーが表示されるコントロールの選択を解除した場合に、モデルで属性の更新に使用される値を入力します。

  10. 「OK」をクリックし、バインディング設定を保存します。

開発者は、jbInit()メソッド内にsetModel()メソッドを追加して、コントロール・バインディングを作成し、DataControlIdを参照してメタデータを指定します。例5-4は、「データ・コントロール」パネルからチェック・ボックスを挿入した後に作成されるメソッドを示しています。

例5-4 ブール・バインディングのためのモデル・メソッドの設定

myCheckbox.setModel((ButtonModel)panelBinding.bindUIControl("DataControlId", myCheckbox));

新しいバインディング用のメタデータは、バインディング定義ファイル(PageDef.xml)に表示されます。

5.7 ADFバインディングされた範囲バインディングのカスタマイズ方法

「データ・コントロール」パネルから挿入する次のUIコントロールに、ADFバインディングされた範囲バインディングを設定できます。

バインドされた範囲のコントロール・バインディングの動作は、使用するコントロールのタイプによって異なります。ユーザーは、データ・コレクションで定義される単一の属性の値を表示、または場合によっては編集できます。バインドされた範囲バインディング・エディタを使用してデータ・コレクションおよび属性を選択し、使用可能な値の範囲を定義します。適切なレンジを指定するには、バインドされた属性に指定される値を把握しておく必要があります。


注意:

ADFビジネス・コンポーネント・プロジェクトでは、属性にコントロール・ヒントを設定することによって属性値を更新可能にできます。その場合、ユーザーは、更新可能な属性の値を直接編集できます。


範囲バインディングを設定する手順は次のとおりです。

  1. データ・パネルをJavaビジュアル・エディタで開きます。

    詳細は、第2.10項「空のADF Swingパネルの作成方法」を参照してください。

  2. 「データ・コントロール」パネルで、表示する目的の属性を、開いているフォームまたはパネルにドラッグします。

    データ・コレクションではなく、必ず属性を選択します。

  3. コントロールをデータ・パネルに追加します。

    詳細は、第3.3項「ADF SwingパネルへのUIコンポーネントの挿入方法」を参照してください。

  4. コントロール用のバインディングされた範囲バインディング・エディタを表示します。

    詳細は、第5.2項「ADF SwingパネルのADFバインディングのカスタマイズ方法」を参照してください。

  5. バインディングされた範囲バインディング・エディタで、表に表示する属性が含まれる「ベース・データソース」を選択します。

  6. 「属性」リストから、コントロールの値として表示する属性を1つ選択します。

  7. 選択したデータ・コレクションにアクセスするために指定したイテレータが「イテレータ」ドロップダウン・リストにすでに表示されている場合、選択内容のままにします。ドロップダウンが空の場合、「新規」をクリックしてイテレータを作成し、ドロップダウン・リストに表示します。


    注意:

    ドロップダウン・リストでイテレータの選択内容を変更すると、以前選択していた属性が削除されます。イテレータの選択を変更する前に、選択されていた元の属性を記録しておく必要があります。必要に応じて「取消」を押し、元の属性選択を更新しないでバインディング・エディタを終了できます。


  8. プログレス・バー、スライドおよびスクロール・バー・コントロールの場合は、「最小表示値」および「最大表示値」を指定できます。これらの値は、コントロールでサポートされる最初と最後の値です。

  9. スライダおよびスクロールバー・コントロールでは、「増分値」または目盛りの間隔を指定できます。各目盛りは、バインドされている属性にユーザーが適用できる値を表しています。


    注意:

    スライダおよびスクロール・バーでは、増分値と選択された目盛りの数の積にコントロールの最小値を足して、属性値が算出されます。たとえば、最小値が20、増分値が10で、ユーザーがコントロールで3番目の目盛りを選択した場合、属性値は20+(10×3)で50になります。


  10. 「OK」をクリックし、バインディング設定を保存します。

開発者は、jbInit()メソッド内にsetModel()メソッドを追加して、コントロール・バインディングを作成し、DataControlIdを参照してメタデータを指定します。例5-5は、「データ・コントロール」パネルからスライダを挿入した後に作成されるメソッドを示しています。

例5-5 バインディングされた範囲バインディングのためのモデル・メソッドの設定

mySlider.setModel((BoundedRangeModel)panelBinding.bindUIControl("DataControlId", mySlider));

新しいバインディング用のメタデータは、バインディング定義ファイル(PageDef.xml)に表示されます。

5.8 ADFフォーマット済テキスト・フィールド・バインディングのカスタマイズ方法

「データ・コントロール」パネルから挿入するフォーマット済編集フィールドUIコンポーネントに対してADFフォーマット済テキスト・フィールド・バインディングを設定できます。

フォーマット済テキスト・フィールド・バインディングにより、ユーザーはデータ・コレクションにより定義される単一の属性値を表示および編集できます。フォーマット済テキスト・フィールド・バインディング・エディタを使用して、データ・コレクションおよび属性を選択します。このエディタでは、特定の書式マスクが適用されてバインドされた属性の値を表示するフォーマッタも選択できます。


注意:

ADFビジネス・コンポーネント・プロジェクトでは、属性にコントロール・ヒントを設定することによって属性値を更新可能にできます。その場合、ユーザーは、更新可能な属性の値を直接編集できます。


フォーマット済テキスト・フィールド・バインディングを設定するには、次のようにします。

  1. データ・パネルをJavaビジュアル・エディタで開きます。

    詳細は、第2.10項「空のADF Swingパネルの作成方法」を参照してください。

  2. 「データ・コントロール」パネルで、表示する属性を、開いているフォームまたはパネルにドラッグします。

    データ・コレクションではなく、必ず属性を選択します。

  3. コントロールをデータ・パネルに追加します。

    詳細は、第3.3項「ADF SwingパネルへのUIコンポーネントの挿入方法」を参照してください。

  4. 目的のコントロール用のフォーマット済テキスト・フィールド・バインディング・エディタを表示します。

    詳細は、第5.2項「ADF SwingパネルのADFバインディングのカスタマイズ方法」を参照してください。

  5. フォーマット済テキスト・フィールド・バインディング・エディタの最上位のドロップダウン・リストで「属性」を選択し、表示する属性が含まれている「データソース」を選択します。

  6. 「属性」リストから、コントロールの値として表示する属性を1つ選択します。

  7. 最上位のドロップダウン・リストで「フォーマット」を選択し、使用する「フォーマッタ」を選択します。

  8. 「OK」をクリックし、バインディング設定を保存します。

開発者は、jbInit()メソッド内にsetModel()メソッドを追加して、コントロール・バインディングを作成し、DataControlIdを参照してメタデータを指定します。例5-6は、「データ・コントロール」パネルからフォーマット済編集フィールドを挿入した後に作成されるメソッドを示しています。

例5-6 フォーマット済テキスト・フィールド・バインディングのためのモデル・メソッドの設定

jFormattedTextField.setDocument((Document)panelBinding.bindUIControl("DataControlId", jFormattedTextField));

新しいバインディング用のメタデータは、バインディング定義(PageDef.xml)に表示されます。

5.9 ADFイテレータ・バインディングのカスタマイズ方法

「データ・コントロール」パネルから挿入するナビゲーション・バーUIコントロールに、ADFイテレータ・バインディングを設定できます。

「NavigationBar」コントロールでイテレータ・バインディングを使用して、データ・コレクションで現在のデータ・オブジェクトの位置を管理します。ユーザーがナビゲーション・バーのボタンをクリックすると、データ・オブジェクトの位置が変化し、同じデータ・コレクションにバインドされている他のインジケータ・コントロールはすべて更新されます。

イテレータ・バインディングを設定するには、次のようにします。

  1. データ・パネルをJavaビジュアル・エディタで開きます。

    詳細は、第2.10項「空のADF Swingパネルの作成方法」を参照してください。

  2. 「データ・コントロール」パネルで、移動対象のデータ・コレクションを、開いているフォームまたはパネルにドラッグします。

  3. 続いて、「NavigationBar」コントロールをデータ・パネルに追加します。

    詳細は、第3.3項「ADF SwingパネルへのUIコンポーネントの挿入方法」を参照してください。

開発者は、jbInit()メソッド内にsetModel()メソッドを追加して、コントロール・バインディングを作成し、DataControlIdを参照してメタデータを指定します。例5-7は、「データ・コントロール」パネルからナビゲーション・バーを挿入した後に作成されるメソッドを示しています。

例5-7 イテレータ・バインディングのためのモデル・メソッドの設定

jUNavigationBar.setModel(JUNavigationBar.createViewBinding(panelBinding, jUNavigationBar, "SelectedDataCollection", null, "IteratorId"));

新しいバインディング用のメタデータは、バインディング定義ファイル(PageDef.xml)に表示されます。

イテレータで表示する行数を修正するには、次のようにします。

  1. 「アプリケーション」ウィンドウで、範囲サイズを制限するコンポーネントが含まれているデータ・パネルを右クリックし、「開く」を選択します。

  2. Javaビジュアル・エディタで、「バインディング」タブをクリックし、「実行可能ファイル」リストから、ナビゲーション・バーに対応するイテレータを選択し、「編集」をクリックします。

    多くの場合、「バインディング」リストでコントロール・バインディングを選択し、「実行可能ファイル」リストで対応するイテレータを特定できます。ナビゲーション・バーは、コントロール・バインディングを必要としないため、例外です。

  3. 「プロパティ」ウィンドウで「共通」セクションを開き、RangeSize値を編集し、[Enter]キーを押します。

    デフォルトの値である10行から、この値を増やせます。


    注意:

    -1および0という値には特定の意味があります。値-1の場合、使用可能なオブジェクトすべてがコレクションから返されます。値0の場合、コレクションがデータソースから取得を行うために収容しているのと同じ数のオブジェクトが返されます。


ADFイテレータ・バインディングにバインドされた表の列をソートする手順は次のとおりです。

  1. 「アプリケーション」ウィンドウで、ソートする表が含まれているデータ・パネルを右クリックし、「開く」を選択します。

  2. Javaビジュアル・エディタで、「バインディング」タブをクリックし、「実行可能ファイル」リストから、表がバインドされているデータ・コレクションのイテレータを選択し、「編集」をクリックします。

    多くの場合、「バインディング」リストでコントロール・バインディングを選択し、「実行可能ファイル」リストで対応するイテレータを特定できます。ナビゲーション・バーは、コントロール・バインディングを必要としないため、例外です。

  3. 「イテレータ・バインディングの編集」ダイアログで、「ソート基準」タブをクリックし、矢印ボタンを使用して、表内の列のソート順序を変更します。

5.10 ADFリスト・バインディングのカスタマイズ方法

「データ・コントロール」パネルから挿入するリストUIコントロールに、ADFリスト・バインディングを設定できます。

リスト・バインディングにより、ユーザーは、データ・コレクションからの属性値で構成されるリストを表示できます。リスト・バインディング・エディタを使用して、表示するデータ・コレクションおよび属性を選択します。

リスト・バインディングを設定するには、次のようにします。

  1. データ・パネルをJavaビジュアル・エディタで開きます。

    詳細は、第2.10項「空のADF Swingパネルの作成方法」を参照してください。

  2. 「データ・コントロール」パネルで、表示するデータ・コレクションを、開いているフォームまたはパネルにドラッグします。

  3. リスト・コントロールをデータ・パネルに追加します。

    詳細は、第3.3項「ADF SwingパネルへのUIコンポーネントの挿入方法」を参照してください。


    注意:

    「データ・コントロール」パネルを使用して、JListコントロールをADF Swingパネルまたはフォームにドロップすると、最初は、リストに選択したコレクションのすべての属性が表示されます。表示する属性のリストを修正するには、リスト・バインディング・エディタを使用します。


  4. コントロール用のリスト・バインディング・エディタを表示します。

    詳細は、第5.2項「ADF SwingパネルのADFバインディングのカスタマイズ方法」を参照してください。

  5. リスト・バインディング・エディタで、リストに表示する属性が含まれているベース・データ・コレクションを選択します。

  6. 「属性の表示」リストで、表示する属性を選択します。

    「属性の表示」リストには、任意の数の属性を追加できます。

  7. 選択したデータ・コレクションにアクセスするために指定したイテレータが「イテレータ」ドロップダウン・リストにすでに表示されている場合、選択内容のままにします。ドロップダウンが空の場合、「新規」をクリックしてイテレータを作成し、ドロップダウン・リストに表示します。


    注意:

    ドロップダウン・リストでイテレータの選択内容を変更すると、以前行った属性の選択が削除されます。イテレータの選択内容を変更する前に、元の属性の選択内容をメモしておいてください。必要に応じて「取消」を押し、元の属性選択を更新しないでバインディング・エディタを終了できます。


  8. リストの属性を再編成するには、「属性の表示」リストで属性を選択し、選択項目を移動矢印ボタンをクリックして、リスト内の属性を再配置します。

    リストの最上部から最下部までの属性の位置によって、最上部から最下部までのリスト内の属性の位置が決まります。

  9. 「OK」をクリックし、バインディング設定を保存します。

開発者は、jbInit()メソッド内にsetModel()メソッドを追加して、コントロール・バインディングを作成し、DataControlIdを参照してメタデータを指定します。例5-8は、「データ・コントロール」パネルからリストを挿入した後に作成されるメソッドを示しています。

例5-8 リスト・バインディングのためのモデル・メソッドの設定

myList.setModel((ListModel)panelBinding.bindUIControl("DataControlId", myList));

新しいバインディング用のメタデータは、バインディング定義ファイル(PageDef.xml)に表示されます。

5.11 列挙モードのADFリスト・バインディングのカスタマイズ方法

「データ・コントロール」パネルから挿入する次のUIコントロールに、列挙モードのADFリスト・バインディングを設定できます。

列挙モードのバインディングでは、ユーザーは表示リストから値を選択して、データ・コレクションの属性を更新できます。列挙モードでモデル・リスト・バインディング・エディタを使用して、コントロールの対象となるデータ・コレクションおよび属性を選択し、ユーザーが選択する値のセットを指定します。適切な選択肢を指定するには、バインドされた属性に指定される値を把握しておく必要があります。

列挙モードでリスト・バインディングを設定するには、次のようにします。

  1. データ・パネルをJavaビジュアル・エディタで開きます。

    詳細は、第2.10項「空のADF Swingパネルの作成方法」を参照してください。

  2. 「データ・コントロール」パネルで、表示する目的の属性を、開いているフォームまたはパネルにドラッグします。

    データ・コレクションではなく、必ず属性を選択します。

  3. コントロールをデータ・パネルに追加します。

    詳細は、第3.3項「ADF SwingパネルへのUIコンポーネントの挿入方法」を参照してください。

  4. コントロール用のリスト・バインディング・エディタを表示します。

    詳細は、第5.2項「ADF SwingパネルのADFバインディングのカスタマイズ方法」を参照してください。

  5. 「データ・コレクション」リストから、更新する属性が含まれるデータ・コレクションを選択します。

  6. 「属性」リストから、値リストに表示する属性を選択します。

  7. 選択したデータ・コレクションにアクセスするために指定したイテレータが「イテレータ」ドロップダウン・リストにすでに表示されている場合、選択内容のままにします。ドロップダウンが空の場合、「新規」をクリックしてイテレータを作成し、ドロップダウン・リストに表示します。


    注意:

    ドロップダウン・リストでイテレータの選択内容を変更すると、以前選択していた属性が削除されます。イテレータの選択を変更する前に、選択されていた元の属性を記録しておく必要があります。必要に応じて「取消」を押し、元の属性選択を更新しないでバインディング・エディタを終了できます。


  8. コントロールがコンボ・ボックス、リストまたはラジオ・ボタン・グループの場合、コントロールに表示する順番で、「一連の値」に値を入力します。[Enter]キーを押して値を設定し、新しい値の入力を開始します。属性に対して有効な値を入力する必要があります。

  9. コントロールがスピナーの場合、定義する範囲からユーザーが選択できるようにする場合は、「値の範囲」を選択します。特定のリストを定義する場合、「静的値」を選択して、リストやコンボボックスに対して前述のとおりに値を入力します。

  10. 「OK」をクリックし、バインディング設定を保存します。

開発者は、jbInit()メソッド内にsetModel()メソッドを追加して、コントロール・バインディングを作成し、DataControlIdを参照してメタデータを指定します。例5-9は、「データ・コントロール」パネルからスピナーを挿入した後に作成されるメソッドを示しています。

例5-9 スピナー・バインディングのためのモデル・メソッドの設定

mySpinner.setModel((SpinnerModel)panelBinding.bindUIControl("DataControlId", mySpinner));

新しいバインディング用のメタデータは、バインディング定義ファイル(PageDef.xml)に表示されます。

5.12 LOVモードのADFリスト・バインディングのカスタマイズ方法

「データ・コントロール」パネルから挿入するボタンLOV UIコントロールに対してLOV(値リスト)モードでADFリスト・バインディングを設定できます。

LOVボタンでは、選択を表示するためのUIと、選択を実行するためのUI (個別ウィンドウの形式)の両方が提供されます。その他すべてのコントロールは、別個のコントロールを追加して、ユーザーの選択の対象を表示することが必要です。

LOVモード・バインディングにより、ユーザーは、1つ以上の属性を含むデータ・コレクションの行を表示するリストから、値を選択できます。ユーザーが値を選択すると、LOVにより、別のデータ・コレクションの1つ以上の属性が、選択内容に応じて更新されます。LOVモードでリスト・バインディング・エディタを使用して、ソースとターゲットのデータ・コレクション、それらの属性間のバインディング、およびLOVに表示する属性を定義します。

LOVモードでリスト・バインディングを設定するには、次のようにします。

  1. データ・パネルをJavaビジュアル・エディタで開きます。

    詳細は、空のADF Swingパネルの生成に関する項を参照してください。

  2. 「データ・コントロール」パネルで、表示する属性を、開いているフォームまたはパネルにドラッグします。

    データ・コレクションではなく、必ず属性を選択します。

  3. コントロールをデータ・パネルに追加します。

    詳細は、第3.3項「ADF SwingパネルへのUIコンポーネントの挿入方法」を参照してください。


    注意:

    ボタンLOVを、LOVの選択内容を受け取るフォーム・フィールドの近くにあるパネルに移動します。


  4. コントロール用のリスト・バインディング・エディタを表示します。

    詳細は、第5.2項「ADF SwingパネルのADFバインディングのカスタマイズ方法」を参照してください。

表示するLOVを定義するには、次のようにします。

  1. リスト・バインディング・エディタで「バインディング定義」タブを選択して、LOVで使用するデータ・コレクションを選択します。

    • 「ベース・データソース」は、選択肢の値リストの表示に使用するコレクションを定義します。これは、データ・モデル・プロジェクトにあるマスター・データ・コレクションによって制限されないコレクションにする必要があります。

    • 「リスト・データ・コレクション」は、ADF Swingパネルで選択された値を受け取る属性を含むコレクションです。パネルに表示するデータ・コレクションと同じデータ・コレクションを指定してください。

  2. 選択したデータ・コレクションにアクセスするために指定したイテレータが「イテレータ」ドロップダウン・リストにすでに表示されている場合、選択内容のままにします。ドロップダウンが空の場合、「新規」をクリックしてイテレータを作成し、ドロップダウン・リストに表示します。


    注意:

    ドロップダウン・リストでイテレータの選択内容を変更すると、以前行った属性の選択が削除されます。イテレータの選択内容を変更する前に、元の属性の選択内容をメモしておいてください。必要に応じて「取消」を押し、元の属性選択を更新しないでバインディング・エディタを終了できます。


  3. 「追加」をクリックし、2つのデータ・コレクション間で1つ以上の属性をバインドします。

    「リスト・バインディング・エディタ」の下の領域には、値リストを表示するためのコレクションと、属性の選択内容を受け入れるためのコレクションの間で使用可能なLOVバインディング属性のリストがある表が表示されます。

  4. ADF Swingフォームに表示されるフィールドに値を提供するために使用する「LOV属性」ドロップダウンから、属性を選択します。

  5. LOVからの値を受け取る「ターゲット属性」ドロップダウンから、属性を選択します。

  6. もう一度「追加」をクリックすることで、複数の属性を同じLOVでバインドします。

  7. 「LOVの表示属性」タブを選択し、LOVウィンドウに表示する属性を選択します。

    「選択済の属性」リストには任意の数の属性を追加できますが、LOVバインディング属性(選択された値を表示する属性)を追加する必要はありません。

  8. 属性でサポートされる場合には、オプションとして「NULL値の選択」タブを選択し、NULL値を指定できます。

    これは、他の値が指定できないときに選択する項目です。

  9. さらに、オプションとして「ランタイムLOVダイアログの詳細」タブを選択し、LOVダイアログの表示位置とサイズをカスタマイズできます。

  10. 「OK」をクリックし、バインディング設定を保存します。

開発者は、jbInit()メソッド内にsetModel()メソッドを追加して、コントロール・バインディングを作成し、DataControlIdを参照してメタデータを指定します。例5-10は、「データ・コントロール」パネルからリストを挿入した後に作成されるメソッドを示しています。

例5-10 リスト・バインディングのためのモデル・メソッドの設定

myList.setModel((ListModel)panelBinding.bindUIControl("DataControlId", myList));

新しいバインディング用のメタデータは、バインディング定義ファイル(PageDef.xml)に追加されます。

コントロールを挿入して、更新されたLOVターゲット属性値を表示するには、次のようにします。

  1. 「データ・コントロール」パネルで、開いたパネルに、LOVバインディングのターゲット属性として前に選択済の属性をドラッグします。

  2. 子を追加ポップアップ・リストから、更新後の属性値を表示するために挿入するUIコンポーネントを選択します。

LOVに表示する行数を変更するには、次のようにします。

  1. 「アプリケーション」ウィンドウで、範囲サイズを制限するLOVコンポーネントが含まれているデータ・パネルを右クリックし、「開く」を選択します。

  2. Javaビジュアル・エディタで、「バインディング」タブをクリックし、「実行可能ファイル」リストから、LOVコンポーネント・バインディングに対応するイテレータを選択し、「編集」をクリックします。

    多くの場合、「バインディング」リストでコントロール・バインディングを選択し、「実行可能ファイル」リストで対応するイテレータを特定できます。

  3. 「プロパティ」ウィンドウで「共通」セクションを開き、RangeSize値を編集し、[Enter]キーを押します。

    デフォルトの値である10行から、この値を増やせます。


    注意:

    -1および0という値には特定の意味があります。値-1の場合、使用可能なオブジェクトすべてがコレクションから返されます。値0の場合、コレクションがデータソースから取得を行うために収容しているのと同じ数のオブジェクトが返されます。


範囲サイズでの作業の詳細は、第10.4項「ADF SwingでのADFビジネス・コンポーネント属性のフェッチを制限する方法」を参照してください。

5.13 ADF LOVボタン・バインディングのカスタマイズ方法

「データ・コントロール」パネルから挿入するボタンLOV UIコントロールに対してLOV(値リスト)モードでADFリスト・バインディングを設定できます。

LOVボタンでは、選択を表示するためのUIと、選択を実行するためのUI (個別ウィンドウの形式)の両方が提供されます。その他すべてのコントロールは、別個のコントロールを追加して、ユーザーの選択の対象を表示することが必要です。

LOVモード・バインディングにより、ユーザーは、1つ以上の属性を含むデータ・コレクションの行を表示するリストから、値を選択できます。ユーザーが値を選択すると、LOVにより、別のデータ・コレクションの1つ以上の属性が、選択内容に応じて更新されます。LOVモードでリスト・バインディング・エディタを使用して、ソースとターゲットのデータ・コレクション、それらの属性間のバインディング、およびLOVに表示する属性を定義します。

LOVモードでリスト・バインディングを設定するには、次のようにします。

  1. データ・パネルをJavaビジュアル・エディタで開きます。

    詳細は、空のADF Swingパネルの生成に関する項を参照してください。

  2. 「データ・コントロール」パネルで、表示する属性を、開いているフォームまたはパネルにドラッグします。

    データ・コレクションではなく、必ず属性を選択します。

  3. コントロールをデータ・パネルに追加します。

    詳細は、第3.3項「ADF SwingパネルへのUIコンポーネントの挿入方法」を参照してください。


    注意:

    ボタンLOVを、LOVの選択内容を受け取るフォーム・フィールドの近くにあるパネルに移動します。


  4. コントロール用のリスト・バインディング・エディタを表示します。

    詳細は、第5.2項「ADF SwingパネルのADFバインディングのカスタマイズ方法」を参照してください。

表示するLOVを定義するには、次のようにします。

  1. リスト・バインディング・エディタで「バインディング定義」タブを選択して、LOVで使用するデータ・コレクションを選択します。

    • 「ベース・データソース」は、選択肢の値リストの表示に使用するコレクションを定義します。これは、データ・モデル・プロジェクトにあるマスター・データ・コレクションによって制限されないコレクションにする必要があります。

    • 「リスト・データ・コレクション」は、ADF Swingパネルで選択された値を受け取る属性を含むコレクションです。パネルに表示するデータ・コレクションと同じデータ・コレクションを指定してください。

  2. 選択したデータ・コレクションにアクセスするために指定したイテレータが「イテレータ」ドロップダウン・リストにすでに表示されている場合、選択内容のままにします。ドロップダウンが空の場合、「新規」をクリックしてイテレータを作成し、ドロップダウン・リストに表示します。


    注意:

    ドロップダウン・リストでイテレータの選択内容を変更すると、以前行った属性の選択が削除されます。イテレータの選択内容を変更する前に、元の属性の選択内容をメモしておいてください。必要に応じて「取消」を押し、元の属性選択を更新しないでバインディング・エディタを終了できます。


  3. 「追加」をクリックし、2つのデータ・コレクション間で1つ以上の属性をバインドします。

    「リスト・バインディング・エディタ」の下の領域には、値リストを表示するためのコレクションと、属性の選択内容を受け入れるためのコレクションの間で使用可能なLOVバインディング属性のリストがある表が表示されます。

  4. ADF Swingフォームに表示されるフィールドに値を提供するために使用する「LOV属性」ドロップダウンから、属性を選択します。

  5. LOVからの値を受け取る「ターゲット属性」ドロップダウンから、属性を選択します。

  6. もう一度「追加」をクリックすることで、複数の属性を同じLOVでバインドします。

  7. 「LOVの表示属性」タブを選択し、LOVウィンドウに表示する属性を選択します。

    「選択済の属性」リストには任意の数の属性を追加できますが、LOVバインディング属性(選択された値を表示する属性)を追加する必要はありません。

  8. 属性でサポートされる場合には、オプションとして「NULL値の選択」タブを選択し、NULL値を指定できます。

    これは、他の値が指定できないときに選択する項目です。

  9. さらに、オプションとして「ランタイムLOVダイアログの詳細」タブを選択し、LOVダイアログの表示位置とサイズをカスタマイズできます。

  10. 「OK」をクリックし、バインディング設定を保存します。

開発者は、jbInit()メソッド内にsetModel()メソッドを追加して、コントロール・バインディングを作成し、DataControlIdを参照してメタデータを指定します。例5-11は、「データ・コントロール」パネルからボタンLOVを挿入した後に作成されるメソッドを示しています。

例5-11 LOVボタン・バインディングのためのモデル・メソッドの設定

myList.setModel((ButtonModel)panelBinding.bindUIControl("DataControlId", jButton1));

新しいバインディング用のメタデータは、バインディング定義ファイル(PageDef.xml)に追加されます。

コントロールを挿入して、更新されたLOVターゲット属性値を表示するには、次のようにします。

  1. 「データ・コントロール」パネルで、開いたパネルに、LOVバインディングのターゲット属性として前に選択済の属性をドラッグします。

  2. 子を追加ポップアップ・リストから、更新後の属性値を表示するために挿入するUIコンポーネントを選択します。

LOVに表示する行数を変更するには、次のようにします。

  1. 「アプリケーション」ウィンドウで、範囲サイズを制限するLOVコンポーネントが含まれているデータ・パネルを右クリックし、「開く」を選択します。

  2. Javaビジュアル・エディタで、「バインディング」タブをクリックし、「実行可能ファイル」リストから、LOVコンポーネントに対応するイテレータを選択し、「編集」をクリックします。

    多くの場合、「バインディング」リストでコントロール・バインディングを選択し、「実行可能ファイル」リストで対応するイテレータを特定できます。

  3. 「プロパティ」ウィンドウで「共通」セクションを開き、RangeSize値を編集し、[Enter]キーを押します。

    デフォルトの値である10行から、この値を増やせます。


    注意:

    -1および0という値には特定の意味があります。値-1の場合、使用可能なオブジェクトすべてがコレクションから返されます。値0の場合、コレクションがデータソースから取得を行うために収容しているのと同じ数のオブジェクトが返されます。


範囲サイズでの作業の詳細は、第10.4項「ADF SwingでのADFビジネス・コンポーネント属性のフェッチを制限する方法」を参照してください。

5.14 LOVダイアログに関する必知事項

ADF Swing LOV(値リスト)コントロール・バインディングを指定する場合、JButtonコントロールは一意です。これは、JButtonコントロールは、LOVコントロール・バインディングをサポートする他のSwingコントロールとは異なり、LOVダイアログを表示するためです。ユーザーに表示されるダイアログには、LOVバインディングで表示するために指定した属性が表示されます。

LOVダイアログは、次のいくつかのカスタム機能をサポートしています。

検索モード操作がJButtonコントロール上のLOVバインディングに対して有効化されている場合、ユーザーはLOVダイアログ・ナビゲーション・バーで検索ボタンをクリックすることでLOVダイアログを検索モードに設定できます。検索モードのLOVダイアログでは、ユーザーは、ビュー基準を入力して、バインドされたビュー・オブジェクト行に対する問合せを実行できます。LOVバインディングによって、問合せが実行され、指定されているビュー基準に一致する行のみが表示されます。

ユーザーは、次のように実行することで、LOVダイアログを通して検索モード問合せを実行します。

  1. LOVダイアログのナビゲーション・バーで検索に設定モードをクリックし、バインドされた属性ごとに1つのビュー基準フィールドを表示します。

  2. 一致させる属性の表示基準フィールドに値を入力します。

    入力する値には適切な比較記号(>、<、=)を含めます。同じ表示基準の値はすべてANDで追加されます。

  3. LOVダイアログのナビゲーション・バーでExecute Queryボタンをクリックし、結果をLOVダイアログに返します。

ADFビジネス・コンポーネントでのビュー基準の使用方法の詳細は、JavaDocでoracle.jbo.ViewCriteriaクラスを参照してください。

5.15 ADFスクロール・バインディングのカスタマイズ方法

「データ・コントロール」パネルから挿入する次のUIコントロールに、ADFスクロール・バインディングを設定できます。

スクロール・バインディングにより、ユーザーは、バインドされたデータ・コレクションの、現在のデータ・オブジェクトの相対的な位置を表示できます。コントロール・サムあるいはインジケータの位置は、データ・コレクションの範囲全体のうち表示されているデータ・オブジェクトの数に比例します。スクロールバー・バインディング・エディタを使用して、コントロールの操作対象となるデータ・コレクションを選択します。

スクロール・バインディングを設定するには、次のようにします。

  1. データ・パネルをJavaビジュアル・エディタで開きます。

    詳細は、第2.10項「空のADF Swingパネルの作成方法」を参照してください。

  2. 「データ・コントロール」パネルで、スクロールするデータ・コレクションを、開いているフォームまたはパネルにドラッグします。

  3. コントロールをデータ・パネルに追加します。

    詳細は、第3.3項「ADF SwingパネルへのUIコンポーネントの挿入方法」を参照してください。

  4. コントロール用のスクロール・バインディング・エディタを表示します。

    詳細は、第5.2項「ADF SwingパネルのADFバインディングのカスタマイズ方法」を参照してください。

  5. スクロール・バインディング・エディタで、スクロールするデータ・オブジェクトを含む「ベース・データソース」を選択します。

  6. 選択したデータ・コレクションにアクセスするために指定したイテレータが「イテレータ」ドロップダウン・リストにすでに表示されている場合、選択内容のままにします。ドロップダウンが空の場合、「新規」をクリックしてイテレータを作成し、ドロップダウン・リストに表示します。


    注意:

    ドロップダウン・リストでイテレータの選択内容を変更すると、以前選択していた属性が削除されます。イテレータの選択を変更する前に、選択されていた元の属性を記録しておく必要があります。必要に応じて「取消」を押し、元の属性選択を更新しないでバインディング・エディタを終了できます。


  7. データ・コレクション・オブジェクト(行)・カウントを使用できます。通常は、「スクロール範囲の推定」を選択したままにします。データ・コレクションによってキャッシュされていないデータベースの行をカウントする場合には、このオプションを選択します。


    注意:

    このオプションが表示されるのは、データ・モデル・プロジェクトにADFビジネス・コンポーネントが含まれる場合のみです。他のビジネス・サービスがデータ・モデル・プロジェクトに作成されると、このオプションはサポートされません。ADFビジネス・コンポーネント・データ・モデル・プロジェクトの場合、このオプションを選択しない(つまり実際の行数を強制的にカウントする)と、そのための問合せが起動される可能性があるため、デフォルトでこのオプションが選択されています。


  8. 「OK」をクリックし、バインディング設定を保存します。

開発者は、jbInit()メソッド内にsetModel()メソッドを追加して、コントロール・バインディングを作成し、DataControlIdを参照してメタデータを指定します。例5-12は、「データ・コントロール」パネルからスライダを挿入した後に作成されるメソッドを示しています。

例5-12 スクロール・バインディングのためのモデル・メソッドの設定

mySlider.setModel((BoundedRangeModel)panelBinding.bindUIControl("DataControlId", mySlider));

新しいバインディング用のメタデータは、バインディング定義ファイル(PageDef.xml)に表示されます。

5.16 ADF表バインディングのカスタマイズ方法

「データ・コントロール」パネルから挿入する表UIコントロールに、ADF表バインディングを設定できます。

テーブル・バインディングにより、ユーザーは、属性名(列ヘッダー)と、データ・コレクションからの値で構成される表を表示できます。テーブル・バインディング・エディタを使用して、表示するデータ・コレクションおよび属性を選択します。また、表示する列幅およびテーブル・セル・エディタを含む、列属性の表示プロパティを指定できます。


注意:

ADFビジネス・コンポーネント・データ・モデル・プロジェクトでは、属性にコントロール・ヒントを設定することによって属性値を更新可能にできます。その場合、ユーザーは、更新可能な属性の値を表から直接編集できます。コントロール・ヒントのラベル・テキストを設定すると、各属性に対して列ヘッダーに表示されるラベルを変更できます。


テーブル・バインディングを設定するには、次のようにします。

  1. データ・パネルをJavaビジュアル・エディタで開きます。

    詳細は、第2.9項「空のADF Swingフォームの作成方法」を参照してください。

  2. 「データ・コントロール」パネルで、目的の表示するデータ・コレクションを、開いているフォームまたはパネルにドラッグします。

  3. 表コントロールをデータ・パネルに追加します。

    詳細は、第3.3項「ADF SwingパネルへのUIコンポーネントの挿入方法」を参照してください。


    注意:

    「データ・コントロール」パネルを使用してJTableコントロールをADF Swingパネルまたはフォームにドロップすると、最初は、表に選択されたコレクションのすべての属性(列)が表示されます。表の表示属性リストを変更するには、表バインディング・エディタを使用できますが、変更はJavaビジュアル・エディタにすぐには反映されません。ビジュアル・エディタを表のバインディング情報(フォームまたはパネルのPageDef.xmlファイルに保存されている)と同期化するには、クラス・ファイルを再コンパイルするか、またはビジュアル・エディタで表のサイズを変更します。


  4. コントロール用の表バインディング・エディタを表示します。

    詳細は、第5.2項「ADF SwingパネルのADFバインディングのカスタマイズ方法」を参照してください。

  5. 表バインディング・エディタで、「属性バインディング」ページを表示して、表に表示する属性が含まれる「ベース・データソース」を選択します。

    作成する表は、コレクションまたは構造化されたオブジェクトのスカラー属性に基づいている必要があります。たとえば、return()メソッドの複雑なコレクション(配列を含む)を表としてドロップする場合、コレクションの属性はアクセッサにより定義されるため表示されません。コレクションの個々のアクセッサは属性を定義するため、表としてドロップできます。

  6. 「選択可能属性」リストで、表示する属性を選択し、それを「選択済の属性」リストに追加します。「属性の表示」リストには、任意の数の属性を追加できます。

  7. 表の列を再編成する場合、「選択済の属性」リストで属性を選択し、選択項目を移動矢印ボタンをクリックして、リスト内の属性を再配置します。

    リストの最上部から最下部までの属性の位置により、表の左から右への列の位置が決まります。

  8. 「属性のプロパティ」を選択して、オプションとして列幅と使用するセル・エディタを変更できます。

  9. 「OK」をクリックし、バインディング設定を保存します。

開発者は、jbInit()メソッド内にsetModel()メソッドを追加して、コントロール・バインディングを作成し、DataControlIdを参照してメタデータを指定します。例5-13は、「データ・コントロール」パネルから表を挿入した後に作成されるメソッドを示しています。

例5-13 表バインディングのためのモデル・メソッドの設定

myTable.setModel((TableModel)panelBinding.bindUIControl("DataControlId", myTable));

新しいバインディング用のメタデータは、バインディング定義ファイル(PageDef.xml)に表示されます。

表の列をカスタマイズするには、次のようにします。

  1. 表バインディング・エディタで「属性プロパティ」ページを表示し、表で表示する属性名(列)のリストを表示します。

  2. オプションとして、修正する列幅が含まれる属性に対応する「幅」フィールド内でダブルクリックします。デフォルトの幅は、Javaビジュアル・エディタで表示される表のサイズによって決まります。

    また、ビジネス・コンポーネント属性のレベルでコントロール・ヒントを設定することによっても列幅を指定できます。コントロール・ヒントの幅が指定される場合、その値はテーブル・バインディング・エディタの「属性のプロパティ」ページで表示されます。

  3. [Return]キーを押して、フィールドに新しい幅を設定します。

  4. オプションとして、設定するエディタを含む属性に対応する「エディタ」フィールド内をクリックします。デフォルトのエディタは単純なテキスト・フィールドです。


    注意:

    ビジネス・コンポーネント属性のレベルでフォーマッタおよびフォーマット・コントロール・ヒントを設定することで、さらにフォーマット・マスクを指定できます。


  5. エディタをリストから選択し、省略記号ボタンを押して、バインディング・エディタを開きます。

    ComboBoxおよびスピナー・エディタの場合は、ページ定義から既存のバインディングを選択できます。選択するバインディングは、テーブル・バインディング・エディタで表示される属性にバインドされる必要があります。

  6. 「OK」をクリックし、バインディング設定を保存します。

5.17 ADFツリー・バインディングのカスタマイズ方法

「データ・コントロール」パネルから挿入するツリーUIコントロールに、ADF階層ツリー・バインディングを設定できます。

ツリー・バインディングにより、ユーザーは、データ・モデル・プロジェクトでビジネス・サービスにより指定されているように、マスター/ディテール関係から導出される属性の階層リストを表示できます。ツリー・バインディング・エディタを使用して、選択したビジネス・サービス・データ・コレクション間の関係を、ツリー・バインディングで扱う方法に関する一連の規則を定義します。

ツリー・バインディングで複数のブランチからなるツリーを構築するには、ビジネス・サービスに次のデータが必要です。

ツリー・コントロールに対するADFバインディングを作成後、ツリー・コントロールによって、ユーザーはバインドされたデータ・オブジェクトの行間をナビゲートできます。現時点ではツリー・コントロール用のナビゲーション・バインディングはないため、コントロールにJUTreeDefaultMouseListenerを追加する必要があります。

ツリー・バインディングを設定するには、次のようにします。

  1. Javaビジュアル・エディタでデータ・パネルを開き、JScrollPaneコンテナをパネルに追加します。

    詳細は、第2.10項「空のADF Swingパネルの作成方法」を参照してください。

  2. 「データ・コントロール」パネルで、表示するデータ・コレクションを、開いているフォームまたはパネルにドラッグします。

  3. ツリー・コントロールをスクロール可能なパネルに追加します。

    詳細は、第3.3項「ADF SwingパネルへのUIコンポーネントの挿入方法」を参照してください。

  4. JTreeコントロール用のツリー・バインディング・エディタを表示します。

    詳細は、第5.2項「ADF SwingパネルのADFバインディングのカスタマイズ方法」を参照してください。

ツリーのルート・ノードを定義するには、次のようにします。

  1. ツリー・バインディング・エディタで、「規則の編集」タブをクリックし、マスター・データ・コレクションから表示する親ノードの規則を定義します。

    たとえば、Customerのマスター・コレクションには、Orderのディテール・コレクションがあります。

  2. 「ルート・データソース」リストから、ツリーのルート・ノードへの移入に使用するデータ・コレクションを選択します。

    これは、ルート・ノードを定義するマスター・コレクションです。たとえば、Orderディテール・コレクションがあるCustomerのマスター・コレクションを選択します。

  3. 「ルールの追加」アイコン・ボタンをクリックし、ルート・ノードのルールの定義を完了します。

  4. 「属性」リストから、ツリーの親ノードとして表示する属性を1つ選択します。

    たとえば、各Customerの姓などです。現在、JTreeコントロールで各ブランチに表示できる属性は1つのみです。

  5. 「アクセッサ」リストから、マスター・コレクションとツリーの最初のブランチ間のリンクを指定するアクセッサを選択します。

    たとえば、顧客コレクションと注文コレクションのADFビジネス・コンポーネント・アクセッサは、リストではOrdersViewとして表示されます。


    注意:

    選択したデータ・コレクションに対するマスター/ディテール・アクセッサがデータ・モデルに含まれていないと、「アクセッサ」リストには何も表示されません。ツリー内のリーフ(終端)・ノードを除くすべてのブランチに対し、データ・モデル・プロジェクトでビジネス・サービス用のアクセッサを定義する必要があります。


ツリーのブランチを定義するには、次のようにします。

  1. 親ツリー・レベルのルールを選択し、「ルールの追加」アイコン・ボタンをクリックし、マスター・コレクションから表示する子ブランチ・コレクションを選択します。

    これは、ツリーのノードを定義するディテール・コレクションです。たとえばOrderディテール・コレクションを指定し、そこからOrder ID情報をツリーに表示します。

  2. 「属性」リストで、ツリー内のブランチ・ノードとして表示する属性を1つ(たとえば、各顧客の姓)を選択します。

  3. 「アクセッサ」リストで、ツリーの最初のブランチ・データ・コレクションと、次のブランチとの間のリンクを指定するアクセッサを選択します。

    たとえば、OrderとOrderItemコレクションに対するADFビジネス・コンポーネント・アクセッサの場合、リストにはOrderItemsViewのように表示されます。


    注意:

    選択したブランチ・データ・コレクションに対してデータ・モデル・プロジェクトにそれ以上アクセッサが定義されていない場合、リストには<none>という語が表示されます。これは、選択したコレクションの属性がツリーでリーフ・ノードとして表示されるため、アクセッサが必要ないことを意味します。


  4. ビジネス・サービスがブランチを横断するためのアクセッサをサポートしているかぎり、これらのステップを繰り返し、ツリーの新規ブランチを定義できます。

  5. 「OK」をクリックし、バインディング設定を保存します。

    バインディング・エディタによって、定義した規則にエラーがないかがチェックされます。表示されるエラー・メッセージは次のとおりです。

    • "Invalid definition, either no root or no rules defined." ルールを定義していないか、ルート・ノードに対してルールを定義していません。

    • "Defined root not found in this Application Module." ルート・ノードを定義するビュー・オブジェクトの使用名が、フォーム・バインディングに定義されているアプリケーション・モジュールで見つかりません。

    • "No rule found for accessor... ." ルール表のすべてのアクセッサにルールが定義されていません。エラー・チェックでは、特定のアクセッサに関する多相規則の数は検証されず、規則表の各アクセッサに規則が定義されているかどうかのみが検証されます。

開発者は、jbInit()メソッド内にsetModel()メソッドを追加して、コントロール・バインディングを作成し、DataControlIdを参照してメタデータを指定します。例5-14は、「データ・コントロール」パネルからツリーを挿入後、作成されるメソッドを示しています。このメソツドは、メタデータを指定するためにDataControlIdを参照します。

例5-14 ツリー・バインディングのためのモデル・メソッドの設定

myTree.setModel((TreeModel)panelBinding.bindUIControl("DataControlId", myTree));

新しいバインディング用のメタデータは、バインディング定義ファイル(PageDef.xml)に表示されます。

イメージをツリー・バインディング・エディタの表示に追加するには、次のようにします。

「ツリー・バインディング・エディタ」では、ブランチ内の各ノードに表示するアイコンと、各ブランチの開くアイコンおよび閉じるアイコンを選択できます。ツリー・バインディング・エディタでアイコンの選択を表示するには、アイコン・イメージ・ファイルをユーザー・インタフェース・プロジェクトのsrcフォルダにコピーする必要があります。ツリー・バインディング・エディタのアイコン・ドロップダウン・メニューを使用して、各メニューに、現在のproject/srcフォルダのすべてのイメージ・ファイルが表示されます。