スキーマのzipファイルをダウンロードしてインストールします。 このチュートリアルでは、Fusion Order Demo(FOD)スキーマに含まれる表をいくつか使用します。 ウィザードを使用して短時間でアプリケーションとプロジェクトを作成し、データベースに接続します。
注:
アプリケーションの完成版をダウンロードした場合は、
詳細表示アプリケーションを実行する前に次の手順を実行してください。
ステップ1:スキーマのインストールのすべての手順を実行します。
-
JDeveloperでアプリケーションを開き、アプリケーション・ナビゲータで「Application Resources」パネルを展開します。 次に、「Connections」→「Database」の順にノードを開き、 「FOD」を右クリックして「Properties」を選択します。 FODスキーマをインストールしたデータベースを指すよう、Host Name、Port、SIDの各プロパティのみを変更します。 「Test Connection」をクリックして、接続可能であることを確認します。 接続に成功したら、「OK」をクリックします。
-
アプリケーションを実行するには、ステップ8のサブステップ5の手順を実行します。
チュートリアルの手順と例は、Fusion Order Demo(FOD)スキーマに含まれる複数の表に基づいています。 このスキーマは、Oracle JDeveloper 11gに付属しているサンプル・アプリケーションのデータベースとして、さらに、このリリースの他の補足情報としても使用されます。
詳細表示
このスキーマをインストールしていると便利です。インストールは1回で済みます。 FODスキーマをすでにインストールしている場合は、このステップを飛ばして次に進んでください。 スキーマをインストールするには、ユーザーを作成する権限を持つ特権(DBA)ユーザーへのアクセスとOracleデータベースも必要になります。 このスキーマは、Oracle 10gバージョン(またはそれ以降)のデータベースで有効です。 スキーマをインストールするには、zipファイルをダウンロードして展開し、Antを使用してインストールを実行します。
OTNからschema.zipファイルをダウンロードします。 
ファイルを適切な場所(c:\tempなど)に解凍します。
Fileメニューから「Open」を選択します。 ワークスペースc:\temp\Infrastructure\Infrastructure.jwsを開きます。
プロジェクトを移行するよう指示されたら、「Yes」をクリックして確定します。次に「OK」をクリックします。
アプリケーション・ナビゲータで、「MasterBuildScript」プロジェクトを展開します。 Resourcesの下にある「build.properties」をダブルクリックして、エディタで開きます。
build.propertiesファイルに適切な値を設定します(jdeveloper.homeと、jdbc.*およびdb.*のすべてを設定)。 他のプロパティは、すべてデフォルト値のままにしておきます。 demoユーザーの名前をFODにする必要があります。
関連する設定は、次のとおりです。
| 設定 |
説明 |
| jdeveloper.home |
JDeveloperがインストールされている/jdeveloperディレクトリ(例:c:/JDeveloper_11/jdeveloper/) |
| jdbc.urlBase |
データベースのベースURL(例:jdbc:oracle:thin:@localhost) |
| jdbc.port |
データベースのポート番号(例:1521) |
| jdbc.sid |
データベース・システムの識別子(例:XEまたはORCL) |
| db.adminUser |
管理者権限を持つデータベース・ユーザー(例:system) |
| db.demoUser.tablespace |
FODユーザーをインストールする表領域の名前(例:USERS) |
MasterBuildScriptプロジェクトで、「build.xml」ファイルを選択します。
Structureウィンドウで、「refreshSchema」ターゲットを右クリックして、「Run Target "refreshSchema"」を選択します。
入力の指示が表示されたら、管理者権限を持つデータベース・ユーザーのパスワードを入力します。
Antタスクの実行後、JDeveloper Logウィンドウでbuild successfulメッセージを確認できます。
エラーがある場合、データベースが実行中であるかどうか(SQL*Plusで接続を試みます)、build.propertiesファイルに設定した値が正しいかどうかを確認する必要があります。 また、指定したDBAユーザーにCREATE USER権限があることも確認してください。
-
メイン・メニューから「File」→「New」を選択します。 New GalleryのCategoriesで「General」を開き、「Applications」を選択します。 Itemsリストで「Java Desktop Application (ADF)」を選択し、「OK」をクリックします。

JDeveloperアプリケーションは、組織構造の最上位レベルです。 アプリケーションの開発中に、操作しているオブジェクトの情報がここに格納されます。
詳細表示 同時に、プロジェクトとすべての環境設定が追跡記録されます。
JDeveloperアプリケーションを使用すると、作成するアプリケーションのタイプ(WebアプリケーションやJavaアプリケーションなど)に応じて、ビルトイン・テンプレートを基に、事前定義された環境のタイプを指定できます。 アプリケーション・テンプレートを使用すると、適切な機能の組合せが事前に指定されているため、標準アプリケーションのプロジェクト構造を迅速に作成できます。 また、使用している機能に合った選択肢のみが使用できるように、JDeveloperで実行する処理がアプリケーション・テンプレートによりフィルタリングされます。
このチュートリアルでは、データと密接に結合されたJava ADF Swingアプリケーションを構築するために構成されているJava Desktop Application(ADF)テンプレートを使用します。
適切なテンプレートを使用してアプリケーションを作成した後も、新しいプロジェクトをアプリケーションに追加したり、組み込む機能を指定したりすることができます。 これを実行するには、アプリケーション・ナビゲータでアプリケーション名を右クリックして、「New Project」を選択します。 New Galleryでは、任意のタイプのプロジェクトをItemsリストから選択できます。
-
この例に合わせるため、アプリケーション名としてOrdersApplicationと入力します。
初期プロジェクト構造(アプリケーションの作業領域内にある名前付きプロジェクト・フォルダ)および追加されるアプリケーション・ライブラリは、選択したアプリケーション・テンプレートによって決まります。
詳細表示 関連する機能はアプリケーション内の1つ以上のプロジェクトにより定義されます。
JDeveloperのプロジェクトは、関連するファイルを論理的にグループ化するために使用されるものですが、ここではソース・ファイル、パッケージ、クラス、イメージ、およびプログラムに必要なその他の要素の追跡も行われます。 プロジェクトでは、プログラムのコンパイル時や実行時に使用するソース・パスや出力パスなどの環境変数を管理します。 また、プロジェクトには、コンパイラ、ランタイム、デバッグに関するオプションが用意されており、プロジェクトごとにこれらのツールの動作をカスタマイズできます。
ソース・コードのアクセス、変更、再利用を簡単にするために、複数のプロジェクトをアプリケーションに追加できます。 それぞれのプロジェクトに含まれるファイルは、たとえば多層アプリケーションにおける各層に相当する場合もあれば、複雑なアプリケーションにおける各サブシステムに相当する場合もあります。 これらのファイルはどのディレクトリに配置されていても、1つのプロジェクトに含めることができます。
デフォルト値のままにして、「Finish」をクリックします。
アプリケーション・ナビゲータのProjectsパネルは、次のように表示されます。

インストールしたデータベースへの接続を確立し、Fusion Order Demo(FOD)のスキーマを使用できるようにします。
メイン・メニューから「File」→「New」→「General」→「Connections」→「Database Connection」の順に選択し、「OK」をクリックしてCreate Database Connectionダイアログを開きます。
-
Create Connection Inオプションとして「Application Resources」を選択します。
-
接続の名前を入力し、接続タイプを選択して、ユーザー名とパスワードを入力します。 この例では、接続名にFOD、ユーザー名にfodを使用します。
Oracle JDBC Settingsに値を入力して、使用するデータベースのホスト、ポート、SIDを指定します。
-
「Test Connection」をクリックして、接続可能であることを確認します。 接続に成功したら、「OK」をクリックします。
-
アプリケーション・ナビゲータで、「Application Resources」パネルを展開し、「Connections」ノードと「Database」ノードを展開して、データベース・オブジェクトを表示します。

作成したデータベース接続(例:
FOD)がアプリケーションのリソースとして、
Connections→
Databaseノードの下に設定されました。
詳細表示
作成した接続ノードを展開し、多数ある「+」アイコンをクリックしてスキーマとデータベース・オブジェクトを表示します。
データベース接続をアプリケーション・リソースに追加した後、Application Resourcesパネルを縮小してアプリケーション・ナビゲータのProjectsパネルのサイズを大きくすることができます。
-
アプリケーション・ナビゲータで「Model」プロジェクトを右クリックし、「New」→「Business Tier」→「ADF Business Components」→「Business Components from Tables」の順にクリックして、「OK」をクリックします。
Create Business Components from Tablesウィザードを使用すると、既存のデータベース・オブジェクトからビジネス・ドメイン・コンポーネント(エンティティ・オブジェクト、アソシエーション、ドメイン)のパッケージを容易に作成し、新しく生成したそれらのビジネス・ドメイン・コンポーネントからデータ・モデル・コンポーネント(ビュー・オブジェクト、ビュー・リンク、アプリケーション・モジュール)のデフォルト・パッケージを作成できます。
詳細表示
ウィザードで選択する個別のデータベース・オブジェクトは重要です。 その選択により、生成されたビジネス・コンポーネントの関連付けが決定されます。 たとえば、2つの表が外部キー列により1対多の関係を定義する場合、ウィザードにより生成されたビジネス・コンポーネントもこの関係を記述します。 ビジネス・コンポーネントの用語では、1対多の関係はマスター/ディテール関係とも呼ばれます。 たとえば、2つの表は、マスター/ディテール・フォームにデータを表示するために使用されます。
JDeveloperが提供するビジネス・コンポーネント・ウィザードにより、このウィザードを使用して作成したあらゆるビジネス・コンポーネントを編集し、後から新しいビジネス・コンポーネントを追加することも可能です。
Create Business Components from Tablesウィザードは、ユーザー・インタフェースを作成しません(アプリケーションの"view"部分によって制御されます)。また、制御フローなどのその他のアプリケーション・ロジックも特定しません。 データの表示とアクセスを提供して、ビジネス・ロジックを実装します。
特に、Oracle ADF Business Componentsテクノロジーは、あらゆる側面におけるアプリケーションの"配管工事"を自動的に処理します。
独自のライブラリ・クラスのインスタンスのO/Rマッピングと永続性を自動的に処理します
SQLを使用したデータ取得の複雑なリクエストを実行できます
コミット時ロックまたは即時ロックを含むトランザクション管理を自動的に行います
複雑なビジネス・ロジックを実装するフレームワークを提供します
多くのJava EE設計パターンを自動的に実装します
アプリケーションのパフォーマンスとスケーラビリティを向上させる強力なキャッシングおよびデータ非アクティブ化システムがあります
Initialize Business Components Projectダイアログで、FODが現在選択されているデータベース接続であることを確認します。 「OK」をクリックします。
ステップ1のEntity Objectsで、「Query」をクリックし、Availableリストを移入します。
スキーマに多数の表がある場合には、若干の遅延が発生することがあります。
Availableリストから「ORDERS」表と「ORDER_ITEMS」表を選択し、「
」をクリックしてSelectedリストに移動させます。 「Next」をクリックします。
表は外部キーで関連付けられているため、1対多の関係を表すビジネス・コンポーネントが生成されます。
-
ステップ2のEntity-based View Objectsで「
」をクリックし、「OrderItems」(ORDER_ITEMS)と「Orders」(ORDERS)の両方のビジネス・コンポーネントをAvailableリストからSelectedリストに移動します。 「Next」をクリックします。
-
「Next」をクリックして、不要なステップ3のQuery-based View Objectsをスキップします。
ステップ4のApplication Moduleで、アプリケーション・モジュール名をデフォルトにしたまま「Finish」をクリックします。
「
」Save Allをクリックして作業内容を保存します。
Create Business Components from Tablesウィザードが完了すると、アプリケーション・ナビゲータのModelプロジェクトは次のように表示されます。
「
Data Controls」パネルを展開し、「
AppModuleDataControl」を展開すると、
OrderItemsViewコレクションと
OrdersViewコレクションが表示されます。
詳細表示
Data Controlsパネルは、データバインドされたUIコントロールをドラッグ・アンド・ドロップでユーザー・インタフェースに追加できるデータ・バインディング・ツールです。 手順では、Data Controlsパネルを使用してマスター/ディテール・フォームのマスター部分を設計します。
Modelプロジェクトで、アプリケーション・ナビゲータは、一連の手順で作成したビジネス・コンポーネント(エンティティ・オブジェクト、ビュー・オブジェクト、アソシエーション、ビュー・リンク、アプリケーション・モジュール)を表示します。 タイプ別にソートされたビジネス・コンポーネントを表示するには、Navigator Display Optionsメニュー
の「Sort By Type」を選択します。
ウィザードで選択していくことにより、データソースの機能を表す次のビジネス・ドメイン・コンポーネントが作成されました。
データを収集してクライアント・モデルに提供する次のデータ・モデル・コンポーネントが作成されました。
データソースからデータを収集する(通常、SQL問合せを使用)OrdersViewやOrderItemsViewなどのビュー・オブジェクト
ビュー・オブジェクトの結果セット間の関係(マスター/ディテール関係など)を表すOrderItemsOrdersFkLinkなどのビュー・リンク
ビュー・オブジェクトおよびビュー・リンクへの単一アクセスを提供するAppModuleなどのアプリケーション・モジュール
Model.jpxファイルはBusiness Components Projectオブジェクトであり、プロジェクトに含まれるすべてのビジネス・コンポーネントにより共有されるプロパティに使用されます。
-
アプリケーション・ナビゲータで「View」プロジェクトを右クリックし、「」→「」→「」→「」の順にクリックし、「」をクリックしてCreate ADF Swing Empty Formダイアログを開きます。
Oracle ADF Business Componentsのデータ・モデルでいうマスター/ディテール関係とは、2つ以上のビュー・オブジェクト間の外部キー・アソシエーションです。
詳細表示 これらのビュー・オブジェクトを使用してマスター/ディテール・フォームおよび表を作成すると、エンドユーザーはマスター・コレクションからドリルダウンしてディテール・コレクションに含まれる関連データ・オブジェクトを表示(オプションで編集も)することができます。
この例では、Oracle ADF SwingとOracle ADF Business Componentsを使用してマスター・フォームとディテール表を作成します。 ADF SwingはJava Swingと完全に互換性があり、これを使用することでクライアント・アプリケーションにシン・レイヤーが追加されるため、標準のJavaコンポーネントとADFデータ・バインディング・ライブラリとを連携させることができます。 Oracle ADF SwingおよびOracle ADF Business Componentsを使用するアプリケーションの場合、データ・アクセス・ロジックと更新ロジックを実装する必要はありません。 逆に、Oracle ADF SwingとOracle ADF Business Componentsを使用することで、データ・アクセス・コードはUIコードから明確に分離されるため、ビュー・レイヤーに負担をかけないシン・クライアントが作成されます。
Javaアプリケーション用の単純なマスター・フォーム、ディテール表を設計するには、1つのADF Swingフォームで構成される単一のウィンドウを使用し、マスター部分用とディテール部分用の両方のパネルをここに含めます。 ADF Swingフォームには、Javaクライアント・アプリケーションでADFデータ・バインディングを有効化するためのADF固有のコードも含まれます。
-
フォーム名はForm、パッケージ名はviewのまま使用します。 Generate a Menu Barが選択されていることを確認して 「OK」をクリックします。
アプリケーション・ナビゲータで、「Data Controls」パネルを開き、「AppModuleDataControl」ノードを開きます。 ビジュアル・エディタに表示されている空のフォームの中央に、コレクションOrdersView1をドラッグ・アンド・ドロップします。 コンテキスト・メニューから「Add Edit Form」を選択します。
-
Create ADF Swing Edit Formダイアログで、[Ctrl]キーを押しながらすべての属性を一度に選択します。ただし、 OrderId、OrderDate、OrderStatusCode、OrderTotalは除外します。 続いて、「
」をクリックして、選択した属性を削除します。
「OrderId」を選択し、「
」をクリックしてリストの最上部にこの属性を移動させます。 ファイル名はデフォルトのままにします。 「Create Navigator Bar」の選択を解除して、「OK」をクリックします。
編集フォーム・パネルが作成され、クライアント・フォームのデータ・パネル内に表示されます。
ビジュアル・エディタで、今追加した編集フォームの左上隅の外側でクライアント・フォームをクリックします。
Structureウィンドウで、dataPanel(navBarの下)が選択されていることを確認します。 プロパティ・インスペクタのVisualセクションで、layoutドロップダウン・リストから「BorderLayout」を選択します。
Java UIコンテナにはレイアウト・マネージャと呼ばれる特殊なオブジェクトがあり、コンテナ内のコンポーネントの配置方法や表示サイズは、コンテナが表示されるたびにこのレイアウト・マネージャによって制御されます。
詳細表示 レイアウト・マネージャは、そのレイアウト・マネージャに固有の特定のルール・セットに従って、コンテナ内のコンポーネントの配置を自動的に整えます。 レイアウト・マネージャを使用すると、プラットフォーム間での移植を可能にするやり方で、UIのレイアウトにルールや制約を指定できます。
dataPanelを展開したForm.javaのStructureウィンドウに<null>で示されているように、最初はクライアント・フォームのdataPanelコンテナにレイアウト・マネージャは含まれていません。
BorderLayoutのレイアウト・マネージャは、このコンポーネントのconstraintsプロパティに基づいて、コンテナのコンポーネントをBorderLayout内にある5つの領域の1つに配置します。 コンポーネントのconstraintsプロパティは、プロパティ・インスペクタで次の5つの値のいずれかに設定できます。
NorthまたはSouth: NorthおよびSouthにあるコンポーネントには所定の高さが設定され、横方向はコンテナの幅全体に引き伸ばされます。
EastまたはWest: EastおよびWestにあるコンポーネントには所定の幅が設定され、垂直方向はNorth領域とSouth領域の間の空間を埋めるように引き伸ばされます。
Center: Centerにあるコンポーネントは、残っているすべてのスペースを埋めるように拡張されます。
Structureウィンドウで、「panelOrdersView1Helper1」(展開したdataPanelの下)を選択します。
「Constraints」タブ(Property Inspectorタブの隣)をクリックして、Constraintsプロパティのビジュアル・エディタを前面に表示します。 Constraintsプロパティのビジュアル・エディタで、一番上にあるボックスを選択します。
「
」Save Allをクリックしてファイルを保存します。
アプリケーション・ナビゲータで「PanelOrdersView1Helper.java」をダブルクリックし、編集フォーム・パネルのソース・ファイルを開きます。 エディタ・ウィンドウで「Design」をクリックし、Javaビジュアル・エディタを使用します。
Structureウィンドウで、「dataPanel (FormLayout)」を選択します。 Javaビジュアル・エディタで、最初の列の最初のセルを右クリックして「Column Properties」を選択します。 Column Propertiesダイアログで次のオプションを選択し、「OK」をクリックします。
| オプション |
値 |
| Alignment |
Fill |
| Size |
Component Size |
|
Default |
| Resize |
None |
エディタ・ウィンドウで、上部の「Form.java」タブをクリックして、クライアント・フォームを前面に表示します。 「
」RebuildをクリックしてViewプロジェクトを再構築します。
ADF Swingフォーム内にマスター・フォームを作成するステップが完了すると、Javaビジュアル・エディタの中のフォームは次のように表示されます。
-
アプリケーション・ナビゲータで「View」プロジェクトを右クリックし、「New」→「Client Tier」→「ADF Swing」→「Empty Panel」の順にクリックし、「」をクリックしてCreate ADF Swing Empty Panelダイアログを開きます。
マスター・フォーム、ディテール表のディテール表の役割は、マスター・コレクションに含まれる現行オブジェクトに関連するディテール・コレクションの個々のデータ・オブジェクトを表示することです。
詳細表示 クライアント・フォームのディテール部分には専用のパネルとレイアウト・マネージャが必要であり、ディテール・コレクションに含まれるオブジェクトを参照するためのナビゲーション・バーを含めることができます。
独立したディテール・パネルを作成してクライアント・フォームに追加することにより、必要な場合は同じパネルを他のフォームで再利用できます。 クライアント・フォームへの組込み用としてディテール部分を設計するには、ADF Swingパネルを使用します。 Create ADF Swing Empty Panelダイアログでパネル名を入力し、その他の値はすべてデフォルトのままにします。 生成される空のADF Swingパネルは、ADFデータ・バインディング・コードによる初期化も行われます。 通常、ユーザーがデータをまとめて表示できるように、ディテール・パネルには多数のデータ・オブジェクトが表示されるため、標準的なUIでは表コントロールを使用して多数のデータ・オブジェクトを表示し、表示されている表のデータ・オブジェクトの閲覧はナビゲーション・バーを使用してできるようにしています。
-
パネル名としてOrderItemsPanelを入力し、パッケージ名はデフォルトのviewを使用します。 Panelが選択され、Optional Attributesが両方とも選択されていることを確認して、「OK」をクリックします。
Generate a runnable panel/frameオプションを選択すると、Javaクラスに
main文が追加され、標準のJPanel Swingコンテナが生成されます。このコンテナは、パネルを実行するためのテスト・フレームを作成すると実行可能になります。
詳細表示 そのため、ADF Swingのブートストラップ・コードを含むフレームを使用せずに、ADF Swingパネルを個別にテストすることができます。
「OK」をクリックすると、JDeveloperにより次の処理が実行されます。
-
パネルのソース・ファイル、OrderItemsPanel.javaの作成
-
パネルのページ定義ファイル、OrderItemsPanelPageDef.xmlの作成
-
パネルのソース・ファイルに関するエントリのDataBindings.cpxへの追加
-
Javaビジュアル・エディタに空のパネルを表示
最初のパネルにはまだデータバインドされたUIコンポーネントが含まれていないため、ビジュアル・エディタには空のパネルが表示されます。
-
必要に応じて「Property Inspector」タブをクリックして、Constraintsプロパティ・エディタの前にビジュアル・エディタを表示します。 プロパティ・インスペクタのVisualセクションで、layoutドロップダウン・リストから「BorderLayout」を選択します。
-
アプリケーション・ナビゲータで「Data Controls」パネルを開き、「AppModuleDataControl」ノードを開きます。 続いて、前に使用したのと同じオブジェクトのマスター・コレクション、「OrdersView1」を展開します。
UI設計者は、アプリケーション開発者がOracle ADFデータ・コントロールのインスタンスを使用して登録したビジネス・サービスの階層ビューをData Controlsパネルで確認できます。
詳細表示 ビジネス・サービスのコレクションによって公開されているマスター/ディテール関係がデータ・コントロールによって取得され、Data Controlsパネルにはその関係が親ノードおよび子ノードとして階層で表示されます。 マスター/ディテール・ページのディテール部分を作成する場合は必ず、マスター・コレクション・ノードの子ノードを構成するコレクションを選択します。 そのような親子ノードが表示されていない場合、ADFデータ・コントロールを使用して登録されたビジネス・サービスに親子関係は含まれません。
使用可能なディテール・コレクションをData Controlsパネルに表示するには、階層の親ノードを展開します。 この例では、先ほどマスター編集フォームを作成するときに使用したマスター・コレクションがOrdersView1であるため、OrdersView1をData Controlsパネルで展開します。 OrdersView1の下には、クライアント・フォームのディテール部分の作成に使用するディテール・コレクション、OrderItemsView2があります。 Data Controlsパネルからディテール・コレクションを選択してビジュアル・エディタ内の空のパネルにドラッグすると、ドロップできるコントロールがフィルタされて、利用可能なコントロールのリストがコンテキスト・メニューに表示されます。
-
ビジュアル・エディタに表示されている空のパネルの左上隅に、ディテール・コレクションOrderItemsView2をドラッグ・アンド・ドロップします。 コンテキスト・メニューから「Add Child」→「NavigationBar」を選択します。
クライアント・フォームのディテール部分にはディテール・コレクションに含まれるデータ・オブジェクトのセットが表示されるため、パネルにはコレクション・レベルのUIコントロールを含める必要があります。
詳細表示 表コントロールはこの用途に最適です。 表の各行は、単一のデータ・オブジェクト(1つの受注品目レコードなど)に対応しており、各オブジェクトの属性は表の列に対応しています。
ナビゲーション・バー・コントロールはディテール・コレクションのすべてのデータ・オブジェクト上で動作するため、ユーザーはこれを使用して表のデータ・オブジェクトを閲覧できます。
パネル上部にナビゲーション・バーが挿入されているか確認するには、空のパネルの左上隅あたりにディテール・コレクションをドロップします。
表コントロールを追加する前に、Component Paletteを使用してJScrollPaneを追加します。これは表をスクロールできるようにするコンポーネントです。 ナビゲーション・バーの下にある空間の中央にスクロール・ペインをドロップします。
コンポーネント・パレットのSwingページのContainersパネルから「
」JScrollPaneをドラッグして、ビジュアル・エディタ内に残っている空のパネル領域の中央にドロップします。
-
Data Controlsパネルで同じオブジェクトのディテール・コレクション、OrderItemsView2をドラッグし、先ほど追加した空のJScrollPaneにドロップします。
-
コンテキスト・メニューから「Add Child」→「Table」を選択して、ディテール・コレクションのデータ・オブジェクトを表形式で表示します。
-
「
」Save Allをクリックしてファイルを保存します。
ADF Swingパネル内にディテール表を作成するステップが完了すると、Javaビジュアル・エディタの中のパネルは次のように表示されます。
ADF Swingアプリケーションのフォームでは、公開されているコレクション同士をADFパネル・バインディング・オブジェクトで連係させます。
詳細表示 マルチフォームのアプリケーションを作成してマスター/ディテールのフォームや表を別々のウィンドウに表示させることもできますが、マスターとディテールの両方のコレクションのデータ・オブジェクトを表示するのに1つのウィンドウだけを使用すると、クライアント・フォームで共有されるパネル・バインディング・インスタンスは必ず1つだけになります。 これに対して、ADF Swingでマルチフォームのアプリケーションを作成するプロセスでは、両方のウィンドウの間でパネル・バインディング・インスタンスを管理するためのコードを追加する必要があります。
現時点では、独立したディテールOrderItemsパネルが完成しており、クライアント・フォームにはマスターOrdersパネル(StructureウィンドウにはpanelOrdersView1Helper1として表示)を含むデータ・パネルがあります。
このステップでは、ディテールOrderItemsパネルをクライアント・フォームに挿入し、マスターOrdersパネルの下に配置して、クライアント・フォームを完成させます。 独立したディテール・パネルを作成してクライアント・フォームに追加することにより、必要な場合は同じディテール・パネルを他のフォームで再利用できます。
-
エディタ・ウィンドウで「Form.java」ドキュメント・タブをクリックして、クライアント・フォームを前面に表示します。
-
アプリケーション・ナビゲータのViewプロジェクトからビジュアル・エディタにOrderItemsPanel.javaをドラッグし、マスター編集フォームの下のスペースの中央にドロップします。
-
Select OptionダイアログでEmbed Panelが選択されていることを確認して、「OK」をクリックします。
-
アプリケーション・ナビゲータで「Form.java」を選択します。
-
Form.javaのStructureウィンドウのDesignタブで、orderItemsPanel1が選択されていることを確認します。 「Constraints」タブをクリックして、プロパティ・インスペクタの前にこのタブ・ページを表示します。 Constraintsプロパティのビジュアル・エディタで、中央のボックスが選択されていることを確認します。
BorderLayoutのレイアウト・マネージャは、このコンポーネントのconstraintsプロパティに基づいて、コンテナのコンポーネントをBorderLayout内にある5つの領域(North、South、East、West、Center)の1つに配置します。
-
「
」RebuildをクリックしてViewプロジェクトを再構築します。
Javaビジュアル・エディタ内のクライアント・フォームは次のように表示されます。
-
アプリケーション・ナビゲータで「Form.java」を右クリックし、「Run」を選択します。
アプリケーションを実行すると、JDeveloperのLogウィンドウが開き、 1行もコーディングせずに作成したアプリケーションUIが表示されます。
ナビゲーション・ボタンをクリックすると、マスター・フォームとディテール表との間のデータ・オブジェクト・カレンシーがADF Swingによって管理されていることが分かります。
-
実行中のアプリケーション・ウィンドウで、「File」→「Exit」を選択してアプリケーションを停止します。
Oracle ADFデータ・バインディングを使用してクライアント・フォームを設計すると、同じADFイテレータ・バインディングを共有するすべてのUIコントロールで、そのイテレータのデータ・オブジェクトのカレンシー・カーソルが自動的に共有されます。
詳細表示 カレンシー・カーソルは、表示するオブジェクトの範囲の開始点がどのデータ・オブジェクトによって定義されているかをイテレータに追跡させる手段です (範囲の終わりは、イテレータ・バインディングのRangeSizeプロパティによって決まります)。
完成したクライアント・フォームでは、マスター・パネルとディテール・パネルのそれぞれで専用のイテレータ・バインディングが使用されます。 アプリケーションを実行すると、
パネルごとにADFバインディング・コンテキストが作成されます。ここへの移入には、パネルの定義ファイルに定義されているモデル・バインディング・オブジェクトが使用されます。 各パネルは、各コンポーネントに適したADFバインディングを作成するcomponent.setModel()などのメソッドをコールしてバインディングを初期化します。 ディテール・パネルのナビゲーション・バーの場合は、次のようにしてADFイテレータ・バインディング・インスタンスが作成されます。
jUNavigationBar1.setModel(JUNavigationBar.createViewBinding(panelBinding,
jUNavigationBar1,
"OrderItemsView2", null, "OrderItemsView2Iterator"));
イテレータ・バインディングは、参照先のコレクションのデータ・オブジェクトを取得する問合せメソッド(ADFデータ・コントロールにより定義)を起動します。 イテレータ・バインディングは、そのコレクションの現行データ・オブジェクトのカレンシーも管理します。
ユーザーがナビゲーション・バーのNext、Previous、First、およびLastの各ボタンを押すと、ナビゲーション・バーはイテレータ・バインディングのカレンシー管理機能を使用して現行データ・オブジェクトを更新します。 ユーザーがマスター・パネルのナビゲーション・ボタンをクリックすると、現行データ・オブジェクトの中の、属性がバインドされたUIコントロールの値が更新されて表示されます。 これに対し、ディテール・パネルでは、ユーザーがナビゲーション・ボタンをクリックすると、コレクションがバインドされたUIコントロールにはデータ・オブジェクトの次のセットが表示されます。 マスターとディテールの間の連係も、イテレータ・バインディングによって処理されます。
データ・オブジェクト・カレンシーおよびマスター/ディテール連係はOracle ADFランタイムにより提供される機能であり、フォームのソースに特別なコードは必要ありません。
-
アプリケーション・ナビゲータで、ModelプロジェクトをApplication Sources→modelとたどり、その下にある「OrdersView」ビュー・オブジェクトをダブルクリックします。これからコントロール・ヒントを設定する属性は、ここに定義されています。
Oracle ADFコントロール・ヒントには、JavaBeansベースのどのビジネス・サービス(Oracle ADF Business Componentsを含む)のデータ項目も、すべてのクライアント・タイプで常に同じようにレンダリングさせるメカニズムが集約されています。
詳細表示 コントロール・ヒントと呼ばれるこのメカニズムを使用すると、アプリケーション開発者は複数のクライアントにまたがる特定のUI設定を一元管理できるため、UIとデータ項目とのインタラクション方法をさまざまな側面から制御できます。 コントロール・ヒントはビジネス・サービス・レベルに設定されるため、これを使用するとSwingクライアントでのUIコーディング量も削減できます。
ADFコントロール・ヒントを使用したフォームのカスタマイズを開始するには、ビュー・オブジェクトの概要エディタを開きます。 概要エディタのAttributesタブのUI Hintsセクションは、選択したデータ項目に所定のコントロール・ヒントを適用するための一元化された場所になっています。 たとえば、ビュー・オブジェクト属性のラベル・テキストや書式タイプをカスタマイズできます。 また、プロパティ・インスペクタを使用してコントロール・ヒントを適用することもできます。
-
ビュー・オブジェクトの概要エディタで「Attributes」を選択し、「OrderId」を選択します。
-
プロパティ・インスペクタが表示されていない場合は、メイン・メニューから「View」→「Property Inspector」を選択してください。
選択した属性のプロパティ・インスペクタで、「UI Hints」セクションを展開します。 LabelフィールドにOrder Numberと入力します。

コントロール・ヒントのメカニズムでサポートされているコントロール・ヒント・プロパティのうち、カスタマイズできるものは次のとおりです。
詳細表示
-
Display Hint: 属性を表示するかしないかを決定します。 ADF Swingの設計時ウィザードで、この属性を上書きできます。
-
Label: データ項目の値の前に表示されるプロンプトまたは表ヘッダーに使用されるテキスト。
-
Tooltip: ツールチップまたはマウスオーバーしたときの表示に使用されるテキスト。 Webアプリケーションの場合は、HTMLのALT属性の値として表示されます。
-
Format Type: データ項目を表示するときに使用するフォーマッタを定義します。 フォーマッタとは基本的に書式マスクの集合であり、<JDeveloper_Home>/systemn.n.n.../formatinfo.xmlファイルで定義できます。
-
Format: 選択したフォーマッタで使用される特定の書式マスク。
-
Control Type: クライアントUIに含まれるデータ項目の表示に使用されるコントロールのタイプ。 Editを指定するとコントロールの編集が可能になり、Dateを指定するとカレンダ・ピッカーが表示され、Defaultを指定するとクライアントで選択されたもっとも適切なコントロールに変換されます。
-
Display Width: データ項目を表示するコントロールの文字幅を定義します。
-
Display Height: データ項目を表示するコントロールの文字列の数を定義します。
-
Form Type: DetailモードとSummaryモードのいずれで属性を表示するかを決定します。 Detailモードを指定すると長いフォームが生成され、Summaryモードを指定すると短いフォームが生成されます。 このプロパティはADF Swingアプリケーションに対してのみサポートされます。Business Components Webアプリケーションでは使用できません。
-
Field Order: カテゴリ内で属性がレンダリングされる順番を定義します。
-
Category: 動的にレンダリングされるユーザー・インタフェースで、表示する属性をグループ化するときに使用される識別子。 ユーザー・インタフェースには、同じカテゴリに含まれる他の属性とともにこの属性がレンダリングされます。 カテゴリ・ヒントを使用すると、大規模なビュー・オブジェクト属性リストをカテゴリで関連付けられた小さなグループに分割して、ユーザー・インタフェースに表示することができます。 コントロール・ヒントは
動的にレンダリングして属性を表示するあらゆるユーザー・インタフェースで活用できます。
-
Auto Submit: デフォルトはfalseです。
-
同じ手順を繰り返して、マスター編集フォームに追加した他の属性のコントロール・ヒントのラベルをカスタマイズします。使用するラベル・テキストは次のとおりです。
| 属性 |
ラベル・テキスト |
| OrderDate |
Date of Order |
| OrderStatusCode |
Status |
| OrderTotal |
Total Price |
追加したコントロール・ヒントのラベル・テキストは、Javaビジュアル・エディタに次のように表示されます。
詳細表示
ラベル・テキストが表示されない場合は、Viewプロジェクトを閉じて開き直してからForm.javaを開きます。
-
アプリケーション・ナビゲータのViewプロジェクトで 「Form.java」を右クリックして、「Run」を選択します。
アプリケーションを実行すると、アプリケーション・ウィンドウは次のように表示されます。
コントロール・ヒントを使用したラベルのカスタマイズ手順を完了すると、アプリケーション・ナビゲータの
Modelプロジェクトは次のように表示されます。
詳細表示
Modelプロジェクトに含まれるビジネス・コンポーネント・オブジェクトに属性コントロール・ヒントを定義すると、コントロール・ヒントを格納するためのプロジェクト・レベルのリソース・バンドル・ファイルがデフォルトで作成されます。 定義したヒントは、関連するビュー・クライアントで生成されたフォームおよび表で使用できます。 コントロール・ヒントを保存するときにJDeveloperで使用されるリソース・バンドル・オプションは、Project PropertiesダイアログのResource Bundleページで決定されます。 Resource Bundle TypeオプションはデフォルトでProperties Bundleに設定されており、.propertiesファイルが生成されます。
プロジェクトのコントロール・ヒントを初めてカスタマイズしたときは、ModelBundle.propertiesファイルが作成されます。 ModelBundle.propertiesファイルには、ユーザーが追加したコントロール・ヒント定義に変換できるキー文字列が含まれます。 次に例を示します。
#
model.OrdersView.OrderId_LABEL=Order Number
model.OrdersView.OrderDate_LABEL=Date of Order
model.OrdersView.OrderStatusCode_LABEL=Status
model.OrdersView.OrderTotal_LABEL=Total Price
コントロール・ヒント・ラベルを作成すると、ユーザーが変更した属性コントロール・ヒントのラベル・メタデータを使用してOrdersViewビュー・オブジェクトも更新されます。 たとえば、属性OrderIdについては次のようになります。
<Properties>
<SchemaBasedProperties>
<LABEL
ResId="model.OrdersView.OrderId_LABEL"/>
</SchemaBasedProperties>
</Properties>
このチュートリアルでは、Oracle ADF SwingテクノロジーおよびOracle ADF Business Componentsテクノロジーを使用してJavaアプリケーションを開発しました。 このチュートリアルで学習した内容は、以下のとおりです。
- JDeveloperのウィザードおよびダイアログを使用してアプリケーションおよびデータベース接続を作成する。
- データへのアクセスを提供するビジネス・コンポーネントを表から作成し、ビジネス・ロジックを実装する。
- アプリケーションのOracle ADFデータ・バインディングを有効化するコードを含むADF Swingフォームおよびパネルを作成する。
- フォームに表示される属性に分かりやすいラベルを追加する。
- アプリケーションをコンパイルして実行し、マスター/ディテール・クライアント・フォームの表示を確認する。
Java Swingアプリケーションの開発、JDeveloperおよびOracle ADFの詳細は、下記のWebサイトを参照してください。
すべて表示 |
すべて非表示
Copyright © 2011, Oracle and/or its affiliates. All rights reserved.?