Oracle® Mobile Application Framework Oracle Mobile Application Frameworkでのモバイル・アプリケーションの開発 2.3.3 E82940-01 |
|
前 |
次 |
この章の内容は次のとおりです。
MAFは、iOSとAndroidのどちらのユーザー操作性に対しても適切に動作するMAF AMXページの作成を可能にする一連のUIコンポーネントおよび操作を提供します。
MAF AMXは、標準的なJDeveloper開発エクスペリエンスに準拠して、「コンポーネント」ウィンドウまたは「データ・コントロール」ウィンドウのいずれからもソース・エディタや「構造」ウィンドウにUIコンポーネントおよび操作をドラッグできるようになっています。実質的には、iOSおよびAndroidのプラットフォーム上のネイティブ・コンポーネントのHTML相当物がMAF AMX UIコンポーネントによってレンダリングされ、JDeveloperでのそれらのデザインタイムの動作は、その他のテクノロジで使用されるコンポーネントに似たものとなります。さらに、これらのUIコンポーネントは、宣言ナビゲーションおよびデータ・バインディングのためにMAFのコントローラおよびモデルと統合されています。
注意:
モバイル・デバイス用のインタフェースを開発する場合は、画面領域が非常に限られていることに常に注意してください。また、一部のモバイル・デバイスではタッチスクリーンが使用できません。
詳細は、次を参照してください。
MAF AMXは、ページ内へのUIコンポーネントの配置を可能にするレイアウト・コンポーネント(表15-1にリスト)を提供します。通常、これらのコンポーネントを使用してページの構築を開始し、次にこれらのコンテナ内で、または子コンポーネントとして、他の機能を提供する他のコンポーネントを、レイアウト・コンポーネントに追加します。これらのコンポーネントのいくつかは、拡大するコンポーネント内に配置されたときに拡大する機能などの形状管理機能を提供します。
表15-1 MAF AMXのページ管理、レイアウトおよび間隔調整コンポーネント
|
レイアウト・コンポーネントを追加するには、それを「コンポーネント」ウィンドウからMAF AMXページにドラッグ・アンド・ドロップします(「MAF AMXページにUIコンポーネントを追加する方法」を参照)。次に、「プロパティ」ウィンドウを使用して、コンポーネントの属性を設定します(「UIコンポーネントの構成」を参照)。各特定コンポーネントの属性の詳細は、Oracle Mobile Application Frameworkタグ・リファレンスを参照してください。
次の例は、MAF AMXファイルで定義されているいくつかのページ・レイアウト要素を示しています。
注意:
ページ・レイアウト要素は<amx>
ネームスペースの下で宣言します。
<amx:panelPage id="pp1"> <amx:outputText id="outputText1" value="Sub-Section Title 1" styleClass="adfmf-text-sectiontitle"/> <amx:panelFormLayout id="panelFormLayout1" labelPosition="start"> <amx:panelLabelAndMessage id="panelLabelAndMessage1" label="Name"> <amx:commandLink id="commandLink1" text="Jane Don" action="editname" /> </amx:panelLabelAndMessage> <amx:panelLabelAndMessage id="panelLabelAndMessage2" label="Street Address"> <amx:commandLink id="commandLink2" text="123 Main Street" action="editaddr" /> </amx:panelLabelAndMessage> <amx:panelLabelAndMessage id="panelLabelAndMessage3" label="Phone"> <amx:outputText id="outputText2" value="212-555-0123" /> </amx:panelLabelAndMessage> </amx:panelFormLayout> <amx:outputText id="outputText3" value="Sub-Section Title 2" styleClass="adfmf-text-sectiontitle" /> <amx:panelFormLayout id="panelFormLayout2" labelPosition="start"> <amx:panelLabelAndMessage id="panelLabelAndMessage4" label="Type"> <amx:commandLink id="commandLink3" text="Personal" action="edittype" /> </amx:panelLabelAndMessage> <amx:panelLabelAndMessage label="Anniversary"> <amx:outputText id="outputText4" value="November 22, 2005" /> </amx:panelLabelAndMessage> </amx:panelFormLayout> <amx:panelFormLayout id="panelFormLayout3" labelPosition="start"> <amx:panelLabelAndMessage id="panelLabelAndMessage5" label="Date Created"> <amx:outputText id="outputText5" value="June 20, 2011" /> </amx:panelLabelAndMessage> </amx:panelFormLayout> </amx:panelPage>
図15-1 デザインタイムのページ・レイアウト・コンポーネント
レイアウト・コンポーネントのビジュアル・プレゼンテーションを管理するには、標準Cascading Style Sheet (CSS)を使用します。CSSは、ViewControllerプロジェクトのWeb Content/css
ディレクトリに、MAFによって提供されているデフォルトCSSとともに配置されています。詳細は、「コンポーネント属性を使用したスタイルの定義方法」を参照してください。
MAF AMXを使用して作成されたユーザー・インタフェースは、言語環境が左から右(LTR)、右から左(RTL)のいずれであっても正しく表示されます。後者の場合、コンポーネントは画面の左側ではなく右側から表示されます。ポップアップ(「ポップアップ・コンポーネントの使用方法」を参照)、パネル・アイテム、パネル・スプリッタ(「パネル・スプリッタ・コンポーネントの使用方法」)など、一部のMAF AMXレイアウト・コンポーネントは、特定のRTL動作を有効化するように構成できます。MAF AMXページのRTL構成の詳細は、「ジェスチャーの有効化」および「ページ遷移スタイルの指定方法」を参照してください。
注意:
右から左のテキスト方向は、バージョン4.2より前のAndroidではサポートされていません。
UILayoutDemoという名前のMAFサンプル・アプリケーションは、ボタンなどのMAF AMX UIコンポーネントとともにレイアウト・コンポーネントを使用して、共通パターンに従った一般的なレイアウトのいくつかを実現する方法を示しています。さらに、このサンプル・アプリケーションは、スタイルを使用してページ・レイアウトを特定のパターンに合せる方法を示します。UILayoutDemoアプリケーションは、開発コンピュータのjdev_install
/jdeveloper/jdev/extensions/oracle.maf/Samples
ディレクトリ内のPublicSamples.zip
ファイル内にあります。
表示(MAF AMXファイルのview
要素)は、コア・ページ構造コンポーネントであり、MAF AMXファイルの作成時にそのファイルに自動的に挿入されます。このコンポーネントは、ページおよびその構造の階層表現を提供し、単一のMAF AMXページを表します。
詳細は、Oracle Mobile Application Frameworkタグ・リファレンスを参照してください。
パネル・ページ(MAF AMXファイルのpanelPage
要素)は、他のコンポーネントをレイアウトする画面のスクロール可能領域の定義を可能にするコンポーネントです。
デフォルトでは、MAF AMXページを作成するときに、JDeveloperによってパネル・ページ・コンポーネントが自動的に作成され、そのページに挿入されます。そのページにコンポーネントを追加すると、それらはパネル・ページ・コンポーネント内に挿入されます。
特定の領域(ページのヘッダーやフッターなど)をスクロールできないようにし、向きが変更されたときのストレッチを有効化するには、パネル・ページに対してファセット・コンポーネントを指定します。パネル・ページのヘッダー・ファセットには、各ページのナビゲーション・バーに配置されるタイトルが含まれています。パネル・ページに含めることができる他のタイプのファセット・コンポーネントの詳細は、「ファセット・コンポーネントの使用方法」を参照してください。
次の例は、MAF AMXファイルに定義されたpanelPage
要素を示しています。このパネル・ページには、ヘッダー・ファセットが含まれています。
<amx:panelPage id="pp1"> <amx:facet name="header"> <amx:outputText id="ot1" value="Welcome"/> </amx:facet> </amx:panelPage>
詳細は、Oracle Mobile Application Frameworkタグ・リファレンスを参照してください。
「パネル・グループ・レイアウト」コンポーネントは、基本レイアウト・コンポーネントであり、その子を垂直方向または水平方向に配置します。また、子コンポーネントをページの横および下に流すラッピング・レイアウト・オプションがあります。
「パネル・グループ・レイアウト」コンポーネントを作成するには、「コンポーネント」ウィンドウを使用します。
spacer
)コンポーネントを挿入します。次の例は、MAF AMXファイルに定義されたpanelGroupLayout
要素を示しています。
<amx:panelGroupLayout styleClass="prod" id="pgl1"> <amx:outputText styleClass="prod-label" value="Screen Size:" id="ot1"/> </amx:panelGroupLayout>
「パネル・グループ・レイアウト」コンポーネントのスクロール動作は、scrollPolicy
属性によって定義され、auto
(デフォルト)、none
またはscroll
に設定できます。この動作は、デフォルトでは、アクティブ・スキンに定義されているものになります。
アクティブ・スキンに定義されている動作にかかわらずスクロールを無効にするには、scrollPolicy
属性をnone
に設定します。「パネル・グループ・レイアウト」コンポーネントがスクロール可能でない場合は、この内容は制限されません。
アクティブ・スキンに定義されている動作にかかわらずスクロールを有効にするには、scrollPolicy
属性をscroll
に設定します。「パネル・グループ・レイアウト」コンポーネントがスクロール可能な場合は、コンポーネントのディメンションが制限されるときにスクロールが提供されます。
スクロールでは大量のメモリーが消費され、アプリケーションがクラッシュする可能性があるため、スクロールの使用は最小限にする必要があります。mobileAlta
スキン(「スキニングに関する必知事項」を参照)では、「パネル・グループ・レイアウト」、「パネル・フォーム・レイアウト」(「パネル・フォーム・レイアウト・コンポーネントの使用方法」を参照)および「表のレイアウト」(「表のレイアウト・コンポーネントの使用方法」を参照)のスクロールは無効化されています。アプリケーションではmobileAlta
スキンを使用し、インスタンスでscrollPolicy
をscroll
に設定するのは必要な場合に限定することをお薦めします。「パネル・フォーム・レイアウト」および「表のレイアウト」のスクロール動作をシミュレートするには、スクロールが必要になったときに、スクロール可能な「パネル・グループ・レイアウト」コンポーネントでそれらを囲みます。
詳細は、「MAF AMX UIコンポーネントによるメモリー消費に関する必知事項」を参照してください。
パネル・フォーム・レイアウト(panelFormLayout
)コンポーネントは、コンポーネントをそれらのラベルおよびフィールドが水平方向に整列するように配置します。一般的に、パネル・フォーム・レイアウト・コンポーネントのメイン・コンテンツは、入力コンポーネント(入力テキストなど)および選択コンポーネント(選択肢など)で構成されています。label
属性が定義されている子コンポーネントをパネル・フォーム・レイアウト・コンポーネント内に配置すると、その子コンポーネントのラベルおよびフィールドはパネル・フォーム・レイアウトの定義に基づいて整列およびサイズ設定されます。パネル・フォーム・レイアウト内では、ラベル領域は、フィールド領域の開始側上またはフィールド領域の上の独立した線上のどちらにも表示できます。独立した線は、パネル・フォーム・レイアウトのlabelPosition
属性がtopStart
、topCenter
またはtopEnd
に設定されている場合に使用されます。それ以外の場合は、ラベル領域はフィールド領域の開始側上に表示されます。ラベル領域内では、labelPosition
属性によって、次のようにラベル・テキストを整列できる位置が制御されます。
開始側(labelPosition="start"
またはlabelPosition="topStart"
)
中央(labelPosition="center"
またはlabelPosition="topCenter"
)
終了側(labelPosition="end"
またはlabelPosition="topEnd"
)
フィールド領域内では、fieldHalign
属性によって、次のようにフィールド・コンテンツを整列できる位置が制御されます。
開始側(fieldHalign="start"
)
中央(fieldHalign="center"
)
終了側(fieldHalign="end"
)
パネル・フォーム・レイアウト内には、maxColumns
属性およびrows
属性を使用して、1つ以上の列に子コンポーネントを配置できます。これらの属性は、最適な複数列レイアウトを実現するために、labelWidth
、fieldWidth
、labelPosition
およびshowHorizontalDividers
の各属性とともに使用する必要があります。
注意:
単一列レイアウトから複数列レイアウトに変更するには、maxColumns
属性の設定値にかかわらず、rows
属性の値を1より大きくする必要があります。rows
属性が指定されている場合、maxColumns
属性は、列の数をその数値を最大としてレイアウトを制限しますが、子コンポーネントを配置するにはこれと同数の列が必要です。
パネル・フォーム・レイアウト・コンポーネントを追加するには:
「コンポーネント」ウィンドウで、MAF AMX→「レイアウト」を選択し、パネル・フォーム・レイアウト・コンポーネントをMAF AMXページにドラッグ・アンド・ドロップします。
「プロパティ」ウィンドウで、コンポーネントの属性を設定します。詳細は、Oracle Mobile Application Frameworkタグ・リファレンスを参照してください。
次の例は、MAF AMXファイルに定義されたpanelFormLayout
要素を示しています。
<amx:panelFormLayout styleClass="prod" id="pfl1"> <amx:panelLabelAndMessage label="Type" id="plm1"> <amx:commandLink text="Personal" action="edittype" id="cl1"/> </amx:panelLabelAndMessage> </amx:panelFormLayout>
パネル・ストレッチ・レイアウト(panelStretchLayout
)コンポーネントは、top、bottomおよびcenterの3つの子ファセット・コンポーネントを管理します(次の例を参照)。これらのファセットは、任意の数および組合せで使用できます。
<amx:panelStretchLayout id="psl1"> <amx:facet name="top"> </amx:facet> <amx:facet name="center"> </amx:facet> <amx:facet name="bottom"> </amx:facet> </amx:panelStretchLayout>
パネル・ストレッチ・レイアウト・コンポーネントを積み重ねた3つの長方形のセットで表現しようとする場合、次のことが適用されます。
一番上の長方形の高さは、topファセットに指定したとおりの高さで定義されます。
一番下の長方形の高さは、bottomファセットに指定したとおりの高さで定義されます。
残りの垂直領域が中央の長方形に割り当てられます。この矩形の高さがCenter.height
に定義された値よりも小さく、panelStretchLayout
のscrollPolicy
属性がscroll
またはauto
のいずれかに設定されている場合、スクロールバーが追加されます。
パネル・ストレッチ・レイアウト・コンポーネントを追加するには、次の手順を実行します。
「コンポーネント」ウィンドウで、MAF AMX→「レイアウト」を選択し、パネル・ストレッチ・レイアウトをMAF AMXページにドラッグ・アンド・ドロップします。
作成した子ファセット・コンポーネントを確認し、必要に応じて、一部を削除します。
「プロパティ」ウィンドウを使用して、コンポーネントの属性を設定します。詳細は、Oracle Mobile Application Frameworkタグ・リファレンスを参照してください。
パネル・ラベルおよびメッセージ(panelLabelAndMessage
)コンポーネントは、label
属性が定義されていないコンポーネントを配置するために使用します。これらのコンポーネントとしては、通常、出力テキスト、ボタンまたはリンクがあります。
パネル・ラベルおよびメッセージ・コンポーネントを追加するには:
「コンポーネント」ウィンドウで、MAF AMX→「レイアウト」を選択し、パネル・ラベルおよびメッセージ・コンポーネントをパネル・グループ・レイアウト・コンポーネントにドラッグ・アンド・ドロップします。
「プロパティ」ウィンドウで、コンポーネントの属性を設定します。詳細は、Oracle Mobile Application Frameworkタグ・リファレンスを参照してください。
次の例は、MAF AMXファイルで定義されたpanelLabelAndMessage
要素を示しています。label
属性が、子コンポーネントに対して使用されています。
<amx:panelLabelAndMessage label="Phone" id="plm1"> <amx:outputText value="212-555-0123" id="ot1"/> </amx:panelLabelAndMessage>
ファセット(facet
)コンポーネントは、親レイアウト・コンポーネント上に、ヘッダーやフッターなど任意の名前のファセットを定義するために使用します。ファセットの位置およびレンダリングは、親コンポーネントによって決定されます。
MAF AMXページのヘッダーは、通常、ヘッダー、プライマリおよびセカンダリのファセットと組み合せたパネル・ページ・コンポーネントによって表されます(「パネル・ページ・コンポーネントの使用方法」を参照)。
ヘッダー・ファセット: ページ・タイトルが含まれています。
プライマリ・アクション・ファセット: ヘッダー・バーの左隅に表示される領域を表します。一般的にボタンまたはリンク・コンポーネントを保持しますが、任意のコンポーネント・タイプを含めることができます。
セカンダリ・アクション・ファセット: ヘッダー・バーの右隅に表示される領域を表します。一般的にボタンまたはリンク・コンポーネントを保持しますが、任意のコンポーネント・タイプを含めることができます。
MAF AMXページのフッターは、フッター・ファセットと組み合せたパネル・ページ・コンポーネントによって表されます(「パネル・ページ・コンポーネントの使用方法」を参照)。
フッター・ファセット: コンテンツ領域の下に表示される領域を表します。一般的にボタンまたはリンク・コンポーネントを保持しますが、任意のコンポーネント・タイプを含めることができます。
次の例は、パネル・ページ・コンテナ内で宣言されているfacet
要素を示しています。ファセットのタイプは、常にそのname
属性で定義されます(表15-2を参照)。
<amx:panelPage id="pp1"> <amx:facet name="footer"> <amx:commandButton id="cb2" icon="folder.png" text="Move (#{myBean.mailcount})" action"move"/> </amx:facet> </amx:panelPage>
表15-2は、特定の親コンポーネントとともに使用できる事前定義済ファセット・タイプを示しています。
表15-2 ファセット・タイプと親コンポーネント
親コンポーネント | ファセット・タイプ(名前) |
---|---|
パネル・ページ( |
|
リスト・ビュー( |
|
カルーセル( |
|
パネル・スプリッタ( |
|
パネル・ストレッチ・レイアウト( |
|
データ視覚化コンポーネント。 詳細は、「データ視覚化の指定」を参照してください。 |
|
ファセット・コンポーネントを追加するには:
「構造」ウィンドウまたはソース・エディタに表示されるコンテキスト・メニューを使用して、ファセット・コンポーネントを別のコンポーネントの子として追加できます。ポップアップ・メニューには、選択している親コンポーネントに有効なファセットのみが表示されます。ファセットを追加するには、最初に「構造」ウィンドウまたはソース・エディタで親コンポーネントを選択してから右クリックし、次のうちの1つを選択します。
親コンポーネントが「パネル・ページ」である場合、図15-2に示すように、「ファセット-パネル・ページ」を選択し、リストからファセットのタイプを選択します。
図15-2 パネル・ページにファセットを追加するためのポップアップ・メニューの使用方法
親コンポーネントが「リスト・ビュー」である場合、図15-3に示すように、「ファセット-リスト・ビュー」を選択し、リストからファセットのタイプを選択します。
図15-3 リスト・ビューにファセットを追加するためのポップアップ・メニューの使用方法
親コンポーネントがカルーセルである場合、図15-4に示すように、「ファセット-カルーセル」→「ノード・スタンプ」を選択します。
図15-4 カルーセルにファセットを追加するためのポップアップ・メニューの使用方法
親コンポーネントがパネル・スプリッタである場合、図15-5に示すように、「ファセット-パネル・スプリッタ」→「ナビゲータ」を選択します。
図15-5 パネル・スプリッタにファセットを追加するためのポップアップ・メニューの使用方法
親コンポーネントがパネル・ストレッチ・レイアウトである場合、図15-6に示すように、「ファセット-パネル・ストレッチ・レイアウト」を選択し、リストからファセットのタイプを選択します。
図15-6 パネル・ストレッチ・レイアウトにファセットを追加するためのポップアップ・メニューの使用方法
親コンポーネントがデータ視覚化コンポーネントの1つである場合、図15-7に示すように、「ファセット」→「<MAF AMXデータ視覚化コンポーネント名>」を選択し、リストからファセットのタイプを選択します。
図15-7 データ視覚化コンポーネントにファセットを追加するためのポップアップ・メニューの使用方法
データ視覚化コンポーネントとそれらの属性の詳細は、「データ視覚化の指定」を参照してください。
別の方法:
「コンポーネント」ウィンドウで、MAF AMX→「レイアウト」→「コア構造」を選択し、表15-2にリストされた別のコンポーネントにファセット・コンポーネントをドラッグ・アンド・ドロップします。
「プロパティ」ウィンドウで、コンポーネントの属性を設定します。詳細は、Oracle Mobile Application Frameworkタグ・リファレンスを参照してください。
ポップアップ(popup
)コンポーネントを使用して、ポップアップ・ウィンドウを表示します。このコンポーネントは、ビュー・コンポーネントの子として宣言できます。
ポップアップ・コンポーネントとともに次の操作を使用できます。
ポップアップを閉じる動作(closePopupBehavior
)の操作は、ポップアップを閉じる動作のtype
属性を使用して指定したクライアントによってトリガーされるイベントに応じてポップアップを閉じる宣言的な方法を表しています。
ポップアップを閉じる動作コンポーネントの属性とその値の詳細は、Oracle Mobile Application Frameworkタグ・リファレンスを参照してください。
ポップアップ表示動作(showPopupBehavior
)の操作は、ポップアップ表示動作のtype
属性を使用して指定されたクライアントによってトリガーされるイベントに応答してポップアップを表示する宣言的な方法です。
ポップアップ表示動作のpopupId
属性には、その親コンポーネントに関連するポップアップ・コンポーネントの一意の識別子を指定します。ポップアップ表示動作のalignId
属性には、そのポップアップの位置合せを行う際の基準となるUIコンポーネントの一意の識別子を指定します。識別子を手動で設定するのは、手間がかかり、さらに無効な参照が発生する可能性もあるため、これらの2つの属性の値は標準「プロパティ」ウィンドウと統合されているエディタを使用して設定します(図15-9を参照)。これらの識別子を検証するために特別に定義されている監査ルールがあります(「要素識別子とその監査に関する必知事項」を参照)。
「ポップアップ表示動作」のdecoration
属性では、指定されているalignId
と一致するコンポーネントを指すアンカーを持つようにポップアップを構成できます。これは、decoration
属性をanchor
に設定することで実行します(デフォルト値はsimple
)。
注意:
alignId
属性を使用するためにdecoration="anchor"
を定義する必要はありません。decoration="anchor"
を使用する際に、alignId
属性が指定されていないかalignId
で一致するものが見つからない場合は、decoration
はsimple
にデフォルト設定されるため、ポップアップ・コンポーネントには最小限の装飾が行われます。
「ポップアップ表示動作」のalign
属性に設定する値は、ポップアップ・コンポーネントの配置を示します(その配置を行うのに十分なスペースがある場合)。十分な領域がない場合は、MAFによって別の位置が選択されます。
ヒント:
ポップアップを画面の中央に配置するには、パネル・ページ・コンポーネントのalignId
属性を設定してから、align="center"
を使用してください。
ポップアップ表示動作コンポーネントの属性とその値の詳細は、Oracle Mobile Application Frameworkタグ・リファレンスを参照してください。
次の例は、MAF AMXファイルで定義されたpopup
と、そのshowPopupBehavior
およびclosePopupBehavior
要素を示しています。
<amx:view> <amx:panelPage id="panelPage1"> <amx:commandButton id="commandButton1" text="Show Popup"> <amx:showPopupBehavior popupId="popup1" type="action" align="topStart" alignId="panelPage1" decoration="anchor"/> </amx:commandButton> </amx:panelPage> <amx:popup id="popup1" animation="slideUp" autoDismiss="true" backgroundDimming="off"> <amx:panelGroupLayout id="pgl2" layout="vertical"> <amx:commandButton id="commandButton3" text="Close Popup"> <amx:closePopupBehavior type="action" popupId="popup1"/> </amx:commandButton> </amx:panelGroupLayout> </amx:popup> </amx:view>
ポップアップ・コンポーネントは、ユーザー入力エラーが発生したときに検証メッセージを表示できます。詳細は、「入力の検証」を参照してください。
ポップアップID属性を設定するには:
ソース・エディタまたは「構造」ウィンドウで、showPopupBehavior
要素またはcloseopupBehavior
要素を選択します。
「ポップアップID」フィールドの右側にある下矢印をクリックし、使用可能なポップアップ・コンポーネントのリストから選択するか(図15-8を参照)、「ポップアップID」フィールドの右側にある「プロパティ・メニュー」アイコンをクリックして「ポップアップID」プロパティ・エディタを開きます(図15-9を参照)。
図15-8 リストからのポップアップIDの選択
図15-9 ポップアップID属性の設定
プロパティ・エディタを使用する場合は、「ポップアップID」プロパティ・エディタで「編集」を選択し、図15-10に示す「プロパティの編集: ポップアップID」ダイアログを開きます。
図15-10 ポップアップIDのプロパティの編集ダイアログ
「ポップアップ表示動作」または「ポップアップを閉じる動作」を起動したときに表示されるポップアップ・コンポーネントまたは閉じるポップアップ・コンポーネントを選択します。
「位置合せID」属性を設定するには:
ソース・エディタまたは「構造」ウィンドウで、showPopupBehavior
要素を選択します。
「位置合せID」フィールドの右側にある「プロパティ・メニュー」アイコンをクリックし、図15-11に示すように「位置合せID」プロパティ・エディタを開きます。
図15-11 位置合せID属性の設定
「位置合せID」プロパティ・エディタで「編集」を選択し、図15-12に示す「プロパティの編集: 位置合せID」ダイアログを開きます。
図15-12 位置合せIDのプロパティの編集ダイアログ
「ポップアップ表示動作」操作の親コンポーネントを選択します。
iOSプラットフォームとAndroid 4.2以降のプラットフォームの両方に対応した開発を行う場合、右から左(RTL)の言語環境に対応するようにポップアップを構成するには、そのanimation
属性をslideStart
またはslideEnd
に設定します。
animation
属性をzoom
に設定することにより、元のコンポーネントをズーム・インまたはズーム・アウトするポップアップを有効にできます。
UILayoutDemoという名前のMAFサンプル・アプリケーションは、ポップアップ・コンポーネントの使用方法と、スタイルを適用してページ・レイアウトを特定のパターンに合せる方法を示しています。UIDemoアプリケーションは、開発コンピュータ上のjdev_install
/jdeveloper/jdev/extensions/oracle.maf/Samples
ディレクトリ内のPublicSamples.zip
ファイル内にあります。
パネル・スプリッタ(panelSplitter
)コンポーネントは、左側にあるナビゲーション・ペインで制御可能な複数のコンテンツ領域を表示するために使用します。パネル・スプリッタ・コンポーネントは、通常、表示サイズが大きいタブレット・デバイスで使用されます。これらのコンポーネントは、通常、表示領域の左側にリストが、右側にコンテンツがある場合に使用されます。
パネル・スプリッタには、MAF AMXページにパネル・スプリッタをドラッグ・アンド・ドロップすると自動的に生成されるナビゲータ・ファセット(「ファセット・コンポーネントの使用方法」を参照)およびパネル・アイテム・コンポーネントを含めることができます。パネル・アイテム(panelItem
)コンポーネントは、パネル・スプリッタのコンテンツ領域を表します。各パネル・スプリッタ・コンポーネントには少なくとも1つのパネル・アイテムが必要なため、パネル・スプリッタが作成されるときにパネル・アイテムがパネル・スプリッタに自動的に追加されます。各パネル・アイテム・コンポーネントには、パネル・グループ・レイアウトに含めることができるどのようなコンポーネントも含めることができます(「パネル・グループ・レイアウト・コンポーネントの使用方法」を参照)。
「パネル・スプリッタ」の左側は、ナビゲータ・ファセット(navigator
)によって表されます。これは、アニメーション付きの複数のコンテンツのみが必要とされる場合(たとえば、異なるボタンを選択してコンテンツを切り替えるときにアニメーションを必要とする選択ボタン付きの複数コンテンツ領域を描画する場合)のオプションです。横モードの場合、このファセットがレンダリングされます。縦モードの場合、ボタンはコンテンツ領域の上に配置され、クリックされたときにこのファセットのコンテンツがポップアップ内で起動されます。
iOSプラットフォームとAndroid 4.2以降のプラットフォームの両方に対応した開発を行う場合、右から左(RTL)の言語環境に対応するようにパネル・スプリッタとパネル・アイテムを構成するには、それらのanimation
属性をslideStart
、slideEnd
、flipStart
、flipEnd
のいずれかに設定します。パネル・アイテム・コンポーネントのanimation
属性は、パネル・スプリッタのanimation
属性をオーバーライドします。詳細は、Oracle Mobile Application Frameworkタグ・リファレンスを参照してください。
次の例は、MAF AMXファイルに定義されたpanelSplitter
要素と、子コンポーネントとして使用されるnavigator
ファセットを示しています。
<amx:panelSplitter id="ps1" selectedItem="#{bindings.display.inputValue}" animation="flipEnd"> <amx:facet name="navigator"> <amx:listView id="lv1" value="#{bindings.data.collectionModel}" var="row" showMoreStrategy="autoScroll" bufferStrategy="viewport> ... </listView> </facet> <amx:panelItem id="x"> <amx:panelGroupLayout> ... </panelGroupLayout> </panelItem> <amx:panelItem id="y"> <amx:panelGroupLayout> ... </panelGroupLayout> </panelItem> </panelSplitter>
その他の例は、開発コンピュータのjdev_install
/jdeveloper/jdev/extensions/oracle.maf/Samples
ディレクトリ内のPublicSamples.zip
ファイルにあるCompGalleryアプリケーションを参照してください。
詳細は、Oracle Mobile Application Frameworkタグ・リファレンスを参照してください。
スペーサ(spacer
)コンポーネントを使用して、MAF AMXページでコンポーネントを区切るために空白領域を作成します。spacer
のheight
属性(垂直空白用)およびwidth
属性(水平空白用)を使用して、縦または横の空白をページに組み込むことができます。
スペーサ・コンポーネントを追加するには、次の手順を実行します。
「コンポーネント」ウィンドウで、MAF AMX→「レイアウト」を選択し、「スペーサ」をMAF AMXページにドラッグ・アンド・ドロップします。
「プロパティ」ウィンドウを使用して、コンポーネントの属性を設定します。詳細は、Oracle Mobile Application Frameworkタグ・リファレンスを参照してください。
次の例は、MAF AMXファイルで定義されたspacer
要素とその子を示しています。
<amx:outputText id="ot1" value="This is a long piece of text for this page..."/> <amx:spacer id="s1" height="10"/> <amx:outputText id="ot2" value="This is some more lengthy text..."/>
表のレイアウト(tableLayout
)コンポーネントは、セルを含む行で構成される一般的な表のフォーマットでデータを表示するために使用します。
行のレイアウト(rowLayout
)コンポーネントは、表のレイアウトの単一の行を表します。表のレイアウト・コンポーネントには、1つ以上の行のレイアウト・コンポーネント、または行のレイアウト・コンポーネントを生成できるイテレータ・コンポーネントのいずれかが含まれている必要があります。
セル・フォーマット(cellFormat
)コンポーネントは、行のレイアウトのセルを表します。行のレイアウト・コンポーネントには、1つ以上のセル・フォーマット・コンポーネント、セル・フォーマット・コンポーネントを生成できるイテレータ・コンポーネント、属性リスト・イテレータ・コンポーネントまたはファセット定義コンポーネントのいずれかが含まれている必要があります。
表のレイアウト構造では、セル・コンテンツで割合による高さを使用したり、表構造全体に高さをまとめて割り当てることはできません。詳細は、Oracle Mobile Application Frameworkタグ・リファレンスの次の属性の説明を参照してください。
表のレイアウト・コンポーネントのlayout
属性およびwidth
属性
行のレイアウト・コンポーネントのwidth
属性およびheight
属性
表のレイアウト・コンポーネントを追加するには:
「コンポーネント」ウィンドウで、MAF AMX→「レイアウト」を選択し、「表のレイアウト」をMAF AMXページにドラッグ・アンド・ドロップします。
必要な数の行のレイアウト・コンポーネント、イテレータ・コンポーネント、属性リスト・イテレータ・コンポーネントまたはファセット定義の子コンポーネントを表のレイアウト・コンポーネントに挿入します。
セル・フォーマット・コンポーネント、イテレータ・コンポーネント、属性リスト・イテレータ・コンポーネントまたはファセット定義の子コンポーネントをそれぞれの行のレイアウト・コンポーネントに挿入します。
「プロパティ」ウィンドウを使用して、追加したすべてのコンポーネントの属性を設定します。詳細は、Oracle Mobile Application Frameworkタグ・リファレンスを参照してください。
次の例は、MAF AMXファイルで定義されたtableLayout
要素とその子を示しています。
<amx:tableLayout id="tableLayout1" rendered="#{pageFlowScope.pRendered}" styleClass="#{pageFlowScope.pStyleClass}" inlineStyle="#{pageFlowScope.pInlineStyle}" borderWidth="#{pageFlowScope.pBorderWidth}" cellPadding="#{pageFlowScope.pCellPadding}" cellSpacing="#{pageFlowScope.pCellSpacing}" halign="#{pageFlowScope.pHalign}" layout="#{pageFlowScope.pLayoutTL}" shortDesc="#{pageFlowScope.pShortDesc}" summary="#{pageFlowScope.pSummary}" width="#{pageFlowScope.pWidth}"> <amx:rowLayout id="rowLayout1"> <amx:cellFormat id="cellFormatA" rowSpan="2" halign="center"> <amx:outputText id="otA" value="Cell A"/> </amx:cellFormat> <amx:cellFormat id="cellFormatB" rowSpan="2" halign="center"> <amx:outputText id="otB" value="Cell B (wide content)"/> </amx:cellFormat> <amx:cellFormat id="cellFormatC" rowSpan="2" halign="center"> <amx:outputText id="otC" value="Cell C"/> </amx:cellFormat> </amx:rowLayout> <amx:rowLayout id="rowLayout2"> <amx:cellFormat id="cellFormatD" halign="end"> <amx:outputText id="otD" value="Cell D"/> </amx:cellFormat> <amx:cellFormat id="cellFormatE"> <amx:outputText id="otE" value="Cell E"/> </amx:cellFormat> </amx:rowLayout> </amx:tableLayout>
メーソンリー・レイアウト(masonryLayout
)は、ダッシュボードと同様に列と行に配置されたタイルとして子コンポーネントを提示するコンテナタイプのコンポーネントです。各列と行のサイズは固定で、CSSで定義されます。このサイズは、メーソンリー・レイアウト・コンポーネント自体のサイズから独立しています。表示される列数はメーソンリー・レイアウト・サイズに応じて変化する場合がありますが、タイル・サイズは変化しません。また、タイル・サイズはコンテンツに依存しません。
タイルは、コンテンツが様々なMAF AMX UIコンポーネントによって提供されるメーソンリー・レイアウト・アイテム(masonryLayoutItem
)コンポーネントによって表現されます。1つのタイルは複数の行および列を占めることができます(たとえば、タイルは3列と1行を占めることができます)。MAF AMXは、masonryLayoutItem
のdimension
属性を通じて使用可能な次のタイル・サイズの定義済セットを提供します。
1x1: 1列と1行。
1x2: 1列と2行。
1x3: 1列と3行。
2x1: 2列と1行。
2x2: 2列と2行。
2x3: 2列と3行。
3x1: 3列と1行。
3x2: 3列と2行。
CSSの.amx-masonryLayoutItem
セクションで追加のサイズを作成することにより、メーソンリー・レイアウト・コンポーネントの外観を再定義できます。
行と列の間のスペースも、CSSで指定されます。
メーソンリー・レイアウト・コンポーネントは、レイアウト内に以前に残された間隔を埋め、適合するタイルを配置することで、使用可能なスペースの最大限の利用を試みます。エンド・ユーザーがモバイル・デバイスを回転すると、タイルが再配置され、スペースが最適に埋められます。この機能は、メーソンリー・レイアウト・アイテムの配置を変更するたびに、メーソンリー・レイアウト・コンポーネントによって起動されるMasonryReorderEvent
を介して有効になります。
メーソンリー・レイアウト・コンポーネントを追加するには:
「コンポーネント」ウィンドウで、MAF AMX→「レイアウト」を選択し、メーソンリー・レイアウトをMAF AMXページにドラッグ・アンド・ドロップします。
目的の数のメーソンリー・レイアウト・アイテム・コンポーネントとその子UIコンポーネントをメーソンリー・レイアウト・コンポーネントに挿入します。
「プロパティ」ウィンドウを使用して、追加したすべてのコンポーネントの属性を設定します。詳細は、Oracle Mobile Application Frameworkタグ・リファレンスを参照してください。
次の例は、MAF AMXファイルで定義されたmasonryLayout
要素およびmasonryLayoutItem
要素とそれらの子を示しています。
<amx:masonryLayout id="ml1" initialOrder="#{pageFlowScope.componentProperties.order}"> <amx:masonryLayoutItem id="mt1" dimension="#{pageFlowScope.componentProperties.myTeamExpanded ? '3x1' : '1x1'}" rendered="#{pageFlowScope.componentProperties.myTeam}"> <amx:panelGroupLayout id="pgl9" layout="vertical" inlineStyle="margin: 6px; padding: 0px; border: none"> <amx:outputText value="My Team" id="ot4" inlineStyle="color: gray"/> <amx:panelGroupLayout id="pgl1" layout="horizontal" scrollPolicy="scroll" inlineStyle="margin: 0px; padding: 2px; border: none"> <amx:panelGroupLayout id="pgl10" inlineStyle="margin: 0px; padding: 2px; border: none"> <amx:image id="i8" source="/images/people/TerryLuca.png" shortDesc="Terry Luca"/> <amx:outputText value="Terry Luca" id="ot9" inlineStyle="font-size: 12px; color: gray"/> </amx:panelGroupLayout> <amx:panelGroupLayout id="pgl11" inlineStyle="margin: 0px; padding: 2px; border: none"> <amx:image id="i9" source="/images/people/SusanWong.png" shortDesc="Susan Wong"/> <amx:outputText value="Susan Wong" id="ot12" inlineStyle="font-size: 12px; color: gray"/> </amx:panelGroupLayout> <amx:panelGroupLayout id="pgl12" inlineStyle="margin: 0px; padding: 2px; border: none"> <amx:image id="i10" source="/images/people/RaviChouhan.png" shortDesc="Ravi Chouhan"/> <amx:outputText value="Ravi Chouhan" id="ot11" inlineStyle="font-size: 12px; color: gray"/> </amx:panelGroupLayout> <amx:panelGroupLayout id="pgl13" inlineStyle="margin: 0px; padding: 2px; border: none"> <amx:image id="i11" source="/images/people/KathyGreen.png" shortDesc="Kathy Green"/> <amx:outputText value="Kathy Green" id="ot10" inlineStyle="font-size: 12px; color: gray"/> </amx:panelGroupLayout> <amx:panelGroupLayout id="pgl16" inlineStyle="margin: 0px; padding: 2px; border: none"> <amx:image id="i5" source="/images/people/StellaBaumgardner.png" shortDesc="Stella Baum"/> <amx:outputText value="Stella Baum" id="ot3" inlineStyle="font-size: 12px; color: gray"/> </amx:panelGroupLayout> </amx:panelGroupLayout> </amx:panelGroupLayout> </amx:masonryLayoutItem> <amx:masonryLayoutItem id="mt2" dimension="#{pageFlowScope.componentProperties.socialExpanded ? '3x1' : '1x1'}" rendered="#{pageFlowScope.componentProperties.social}"> <amx:panelGroupLayout id="pgl2" inlineStyle="margin: 6px; padding: 0px; border: none"> <amx:panelGroupLayout id="pgl22" layout="vertical" inlineStyle="margin: 0px; padding: 0px; border: none"> <amx:outputText value="Social" id="ot2" inlineStyle="color: gray"/> <amx:spacer id="s5" height="6"/> <amx:outputText value="New Conversations" id="ot14" inlineStyle="color: gray; font-size: 15px"/> <amx:outputText value="6" id="ot15" inlineStyle="font-size:34px; color: #EE8A11"/> <amx:outputText value="New Followers" id="ot17" inlineStyle="color: gray; font-size: 15px"/> <amx:outputText value="5" id="ot16" inlineStyle="font-size:34px; color: #EE8A11"/> </amx:panelGroupLayout> </amx:panelGroupLayout> </amx:masonryLayoutItem> <amx:masonryLayoutItem id="mt3" ... </amx:masonryLayoutItem> </amx:masonryLayout>
詳細は、Oracle Mobile Application Frameworkタグ・リファレンスを参照してください。
リスト・アイテム子コンポーネント内のリスト・ビューのアクセサリ・レイアウト(accessoryLayout
)コンポーネントを使用して、オプションのコンテンツ領域を明らかにするコンテンツの左や右へのドラッグを有効にします。
通常、アクセサリ・レイアウトには、開始および終了の2つの子ファセット・コンポーネントを格納します。ドラッグ・ジェスチャーがファセットの幅を十分に超える場合、そのコンテンツ領域の子コンポーネントの1つのタップをトリガーするようなジェスチャーができます。別のアクセサリ・レイアウトのコンテンツが表示されるとき、または他のコンポーネントにフォーカスが移動したときには、通常、表示されているファセット・コンテンツは非表示になります。ただし、コンテンツがアクセシビリティのトリガーを使用して表示された場合は、フォーカスが移動しても非表示にはなりません。そうでないと、エンド・ユーザーがそのコンテンツ領域内のリンクを使用できません。
アクセサリ・レイアウト・コンポーネントを追加するには:
「コンポーネント」ウィンドウで、「MAF AMX」→「レイアウト」を選択し、アクセサリ・レイアウトをMAF AMXページにドラッグ・アンド・ドロップします。
必要に応じて、子ファセット・コンポーネントを追加し、それを他のMAF AMX UIコンポーネントに移入します。
「プロパティ」ウィンドウを使用して、コンポーネントの属性を設定します。詳細は、Oracle Mobile Application Frameworkタグ・リファレンスを参照してください。
次の例は、MAF AMXファイルで定義されているaccessoryLayout
要素と、その子コンポーネントとして使用されている開始と終了のファセットを示しています。
<amx:listView id="lv1"> <amx:listItem id="liSimple"> <amx:showPopupBehavior popupId="itemPopup" type="action" alignId="pp1" align="overlapMiddleCenter"/> <amx:accessoryLayout id="alSimple" rendered="#{pageFlowScope.componentProperties.rendered}" inlineStyle="#{pageFlowScope.componentProperties.inlineStyle}" styleClass="#{pageFlowScope.componentProperties.styleClass}" contentStyle="#{pageFlowScope.componentProperties.contentStyle}" contentClass="#{pageFlowScope.componentProperties.contentClass}" startDesc="#{pageFlowScope.componentProperties.startDesc}" startWidth="#{pageFlowScope.componentProperties.startWidth}" startStyle="#{pageFlowScope.componentProperties.startStyle}" startClass="#{pageFlowScope.componentProperties.startClass}" startFullTriggerSelector="#{pageFlowScope.componentProperties. startFullTriggerSelector}" endDesc="#{pageFlowScope.componentProperties.endDesc}" endWidth="#{pageFlowScope.componentProperties.endWidth}" endStyle="#{pageFlowScope.componentProperties.endStyle}" endClass="#{pageFlowScope.componentProperties.endClass}" endFullTriggerSelector="#{pageFlowScope.componentProperties. endFullTriggerSelector}"> <amx:facet name="start"> <amx:commandLink id="clStartSimple" text="Start" styleClass="full-trigger"> <amx:showPopupBehavior popupId="startPopup" type="action" alignId="pp1" align="overlapMiddleCenter"/> </amx:commandLink> </amx:facet> <amx:facet name="end"> <amx:commandLink id="clEndSimple" text="End" styleClass="full-trigger"> <amx:showPopupBehavior popupId="endPopup" type="action" alignId="pp1" align="overlapMiddleCenter"/> </amx:commandLink> </amx:facet> <outputText id="otContentSimple" value="Simple example"/> </amx:accessoryLayout> </amx:listItem> ... </amx:listView>
ジェスチャーの完了でリンクのいくつかを非表示にするのが目的ならば、commandLink
要素のstyleClass
属性をadfmf-accessoryLayout-hideWhenFull
に設定します。
その他の例は、開発コンピュータのjdev_install
/jdeveloper/jdev/extensions/oracle.maf/Samples
ディレクトリ内のPublicSamples.zip
ファイルにあるCompGalleryアプリケーションを参照してください。
詳細は、Oracle Mobile Application Frameworkタグ・リファレンスを参照してください。
デック(deck
)コンポーネントは、一度に1つの子コンポーネントを示すコンテナを表します。表示される子コンポーネント(displayedChild
属性によって定義)の別の子コンポーネントへの遷移は、アニメーションの形式をとる遷移(transition
)操作により有効になります。遷移は、フェードイン、スライディングおよび別の方向からのフリップと、子コンポーネントの非表示および表示によって発生します。
デッキは、前後に移動できます。
デック・コンポーネントを追加するには、次の手順を実行します。
「コンポーネント」ウィンドウで、MAF AMX→「レイアウト」を選択し、デッキをMAF AMXページにドラッグ・アンド・ドロップします。
必要な数の遷移操作および子UIコンポーネントをデック・コンポーネントに挿入します。
「プロパティ」ウィンドウを使用して、追加したすべてのコンポーネントの属性を設定します。詳細は、Oracle Mobile Application Frameworkタグ・リファレンスを参照してください。
次の例は、MAF AMXファイルで定義されたdeck
要素とその子を示しています。デッキ・コンポーネントのdisplayedChild
属性は、表示する子コンポーネントIDを定義します。通常、これは、ボタンを1つ選択などのコンポーネントまたはその他の選択コンポーネントによって制御されます。
<amx:deck id="deck1" rendered="#{pageFlowScope.pRendered}" styleClass="#{pageFlowScope.pStyleClass}" inlineStyle="width:95px;height:137px;overflow:hidden; #{pageFlowScope.pInlineStyle}" landmark="#{pageFlowScope.pLandmark}" shortDesc="#{pageFlowScope.pShortDesc}" displayedChild="#{pageFlowScope.pDisplayedChild}"> <amx:transition triggerType="#{pageFlowScope.pTriggerType}" transition="#{pageFlowScope.pTransition}"/> <amx:transition triggerType="#{pageFlowScope.pTriggerType2}" transition="#{pageFlowScope.pTransition2}"/> <amx:commandLink id="linkCardBack1" text="Card Back">> <amx:setPropertyListener from="linkCardA" to="#{pageFlowScope.pDisplayedChild}"/> </amx:commandLink> <amx:commandLink id="linkCardA1" text="Card Front A"> <amx:setPropertyListener id="setPL1" from="linkCardB" to="#{pageFlowScope.pDisplayedChild}"/> </amx:commandLink> <amx:commandLink id="linkCardB1" text="Card Front B"> <amx:setPropertyListener id="setPL2" from="linkCardC" to="#{pageFlowScope.pDisplayedChild}"/> </amx:commandLink> <amx:commandLink id="linkCardC1" text="Card Front C"> <amx:setPropertyListener id="setPL3" from="linkCardD" to="#{pageFlowScope.pDisplayedChild}"/> </amx:commandLink> <amx:commandLink id="linkCardD1" text="Card Front D"> <amx:setPropertyListener id="setPL4" from="linkCardE" to="#{pageFlowScope.pDisplayedChild}"/> </amx:commandLink> <amx:commandLink id="linkCardE1" text="Card Front E"> <amx:setPropertyListener id="setPL5" from="linkCardBack" to="#{pageFlowScope.pDisplayedChild}"/> </amx:commandLink> </amx:deck>
詳細は、Oracle Mobile Application Frameworkタグ・リファレンスを参照してください。
フレックス・レイアウト(flexLayout
)コンポーネントは、使用可能なスペースに応じて、その子コンポーネントの拡大、縮小、およびラップを可能とする水平または垂直いずれかの柔軟なフローを提供します。ネストされたフレックス・レイアウト・コンポーネントを作成できます。
このコンポーネントは、CSSで定義されている柔軟なボックス・レイアウトに基づいており、そのプロパティのサブセットをサポートしています。詳細は、W3CのWebサイト(http://www.w3.org/TR/css-flexbox-1/
)を参照してください。
フレックス・レイアウト・コンポーネントを追加するには:
「コンポーネント」ウィンドウで、「MAF AMX」→「レイアウト」とナビゲートし、フレックス・レイアウトをMAF AMXページにドラッグ・アンド・ドロップします。
フレックス・レイアウト・コンポーネントに、他のフレックス・レイアウト・コンポーネントを含め、必要な数の子UIコンポーネントを挿入します。
「プロパティ」ウィンドウを使用して、追加したすべてのコンポーネントの属性を設定します。詳細は、Oracle Mobile Application Frameworkタグ・リファレンスを参照してください。
次の例は、MAF AMXファイルで定義されているflexLayout
要素とその子を示しています。
<amx:flexLayout id="fl1" itemFlexibility="equal" orientation="#{pageFlowScope.componentProperties.layoutOrientation}" rendered="#{pageFlowScope.componentProperties.fl1Rendered}"> <amx:panelStretchLayout inlineStyle="background-color: #ff0000; text-align: center;" rendered="#{pageFlowScope.componentProperties.p1Rendered}"> <amx:facet name="center"> <amx:outputText value="1" inlineStyle="font-size: 36px"/> </amx:facet> </amx:panelStretchLayout> <amx:panelStretchLayout inlineStyle="background-color: #00ff00; text-align: center;" rendered="#{pageFlowScope.componentProperties.p2Rendered}"> <amx:facet name="center"> <amx:outputText value="2" inlineStyle="font-size: 36px"/> </amx:facet> </amx:panelStretchLayout> </amx:flexLayout>
詳細は、Oracle Mobile Application Frameworkタグ・リファレンスを参照してください。
フラグメント(fragment
)コンポーネントによってMAF AMXページ・コンテンツの共有が可能になります。このコンポーネントは、MAF AMXフラグメント・ファイルとともに使用されます。詳細は、「ページ・コンテンツの共有」を参照してください。
フラグメント・コンポーネントを追加するには:
次の例は、MAF AMXページに追加されたfragment
要素を示しています。
<?xml version="1.0" encoding="UTF-8" ?> <amx:view xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:amx="http://xmlns.oracle.com/adf/mf/amx" xmlns:dvtm="http://xmlns.oracle.com/adf/mf/amx/dvt"> <amx:panelPage id="pp1"> <amx:panelGroupLayout layout="vertical" id="itemPgl" styleClass="amx-style-groupbox"> <amx:fragment id="f1" src="/simpleFragment.amxf" <amx:attribute id="a1" name="text" value="defaultValue" /> <amx:facet name="facet"> <amx:outputText id="ot5" value="Fragment"/> </amx:facet> </amx:fragment> </amx:panelGroupLayout> </amx:panelPage> </amx:view>
次の例は、対応するMAF AMXフラグメント・ファイルを示しています。
<amx:fragmentDef xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:amx="http://xmlns.oracle.com/adf/mf/amx" xmlns:dvtm="http://xmlns.oracle.com/adf/mf/amx/dvt"> <fragment xmlns="http://xmlns.oracle.com/adf/mf/amx/fragment" id="f1"> <description id="d1">Description of the fragment</description> <facet id="f2"> <description id="d4">Description of the facet</description> <facet-name id="f3">facet1</facet-name> </facet> <attribute id="a1"> <description id="d2">Description of an attribute</description> <attribute-name id="a2">text</attribute-name> <attribute-type id="at1">String</attribute-type> <default-value id="d3">defaultValue</default-value> </attribute> </fragment> <amx:panelGroupLayout id="pgl1"> <amx:facetRef facetName="facet1" id="fr1"/> <amx:outputText value="#{text}" id="ot1"/> </amx:panelGroupLayout> </amx:fragmentDef>
FragmentDemoという名前のMAFサンプル・アプリケーションは、フラグメントの作成方法および使用方法を示しています。このサンプル・アプリケーションは、開発コンピュータ上のjdev_install
/jdeveloper/jdev/extensions/oracle.maf/Samples
ディレクトリ内のPublicSamples.zip
ファイル内にあります。
MAF AMXアプリケーション機能を開発する際に、次のUIコンポーネントを使用できます。
入力テキスト(「入力テキスト・コンポーネントの使用方法」を参照)
入力数値スライダ(「入力数値スライダ・コンポーネントの使用方法」を参照)
入力日(「入力日コンポーネントの使用方法」を参照)
出力テキスト(「出力テキスト・コンポーネントの使用方法」を参照)
ボタン(「ボタンの使用方法」を参照)
リンク(「リンクの使用方法」を参照)
イメージ(「イメージの表示方法」を参照)
チェック・ボックス(「チェック・ボックス・コンポーネントの使用方法」を参照)
チェック・ボックスを複数選択(「チェック・ボックスを複数選択コンポーネントの使用方法」を参照)
選択肢を複数選択(「選択肢を複数選択コンポーネントの使用方法」を参照)
ブール・スイッチ(「ブール・スイッチ・コンポーネントの使用方法」を参照)
選択肢(「選択肢コンポーネントの使用方法」を参照)
選択ボタン(「選択ボタン・コンポーネントの使用方法」を参照)
ラジオ・ボタン(「ラジオ・ボタン・コンポーネントの使用方法」を参照)
リスト・ビュー(「リスト・ビューおよびリスト・アイテム・コンポーネントの使用方法」を参照)
カルーセル(「カルーセル・コンポーネントの使用方法」を参照)
フィルム・ストリップ(「フィルム・ストリップ・コンポーネントの使用方法」を参照)
Verbatim (「Verbatimコンポーネントの使用方法」を参照)
出力HTML (「出力HTMLコンポーネントの使用方法」を参照)
イテレータ(「反復の有効化方法」を参照)
リフレッシュ・コンテナ (「UIコンポーネントのコンテンツのリフレッシュ方法」を参照)
MAF AMXアプリケーション機能を開発する際は、UIコンポーネントの子として、操作、リスナー・タイプ・コンポーネント、コンバータなど、次のその他のコンポーネントも使用できます。
バンドルのロード(「リソース・バンドルのロード方法」を参照)
アクション・リスナー(「アクション・リスナーの使用方法」を参照)
プロパティ・リスナーの設定(「プロパティ・リスナーの設定の使用方法」を参照)
クライアント・リスナー(「クライアント・リスナーの使用方法」を参照)
日時の変換(「日時の変換方法」を参照)
数値の変換(「数値の変換方法」を参照)
ナビゲーション・ドラッグ動作(「ドラッグ・ナビゲーションの有効化」を参照)
ロード・インジケータ動作(「ロード・インジケータの使用方法」を参照)
システム・アクション動作(「Androidシステムの戻るボタンの動作を構成する方法」を参照)
UIコンポーネントを追加するには、それを「コンポーネント」ウィンドウからMAF AMXページにドラッグ・アンド・ドロップします(「MAF AMXページにUIコンポーネントを追加する方法」を参照)。次に、「プロパティ」ウィンドウを使用して、コンポーネントの属性を設定します(「UIコンポーネントの構成」を参照)。各特定コンポーネントの属性の詳細は、Oracle Mobile Application Frameworkタグ・リファレンスを参照してください。
注意:
MAF AMXページで、レイアウト・コンポーネント内にUIコンポーネントを配置します(「ページ・レイアウトの設計」を参照)。<dvtm>
ネームスペースの下で宣言するデータ視覚化コンポーネントを除き、UI要素は<amx>
>ネームスペースの下で宣言します。
いくつかのUIコンポーネントにはイベント・リスナーを追加できます。詳細は、「イベント・リスナーの使用方法」を参照してください。イベント・リスナーは、iOSおよびAndroidのどちらのデバイスでもMAF AMXの実行時の記述のためにコンポーネントに適用できますが、それらのリスナーは設計時には何の効果も持ちません。
これらのUIコンポーネントにおけるアクセシビリティのサポートの詳細は、「MAFのアクセシビリティのサポートの理解」を参照してください。
注意:
MAFは、デザインタイムにEL式を評価しません。コンポーネントの属性の値が式に設定されている場合、この値はJDeveloperのプレビューでは式として表示され、実行時のコンポーネントの表示は異なる場合があります。
MAF AMXを使用してiOSプラットフォームとAndroid 4.2以降のプラットフォームの両方に対応して作成されたユーザー・インタフェースは、言語環境が左から右(LTR)、右から左(RTL)のいずれであっても正しく表示されます。後者の場合、コンポーネントは画面の左側ではなく右側から表示されます。
CompGalleryという名前のMAFサンプル・アプリケーションは、MAF AMX UIコンポーネントの作成方法および構成方法を示しています。UILayoutDemoという名前のもう1つのサンプル・アプリケーションは、MAF AMXページでのコンポーネントのレイアウト方法を示しています。これらのサンプル・アプリケーションは、開発コンピュータ上のjdev_install
/jdeveloper/jdev/extensions/oracle.maf/Samples
ディレクトリのPublicSamples.zip
ファイル内にあります。
入力テキスト(inputText
)コンポーネントは、編集可能テキスト・フィールドを表します。使用可能な入力テキスト・コンポーネントのタイプは次のとおりです。
標準単一行入力テキストで、これは、MAF AMXファイルのinputText
要素で宣言されます。
<amx:inputText id="text1" label="Text Input:" value="#{myBean.text}" />
パスワード入力テキスト:
<amx:inputText id="text1" label="Password Input:" value="#{myBean.text}" secret="true" />
複数行入力テキスト(テキスト領域とも呼ばれる):
<amx:inputText id="text1" label="Textarea:" value="#{myBean.text}" simple="true" rows="4" />
テキスト・クリア・アイコンを表示します。
<amx:inputText id="inputText1" label="Label" showClear="on" value="text"/>
図15-14に、showClear
属性がon
に設定されている入力テキストコンポーネントを示します。
図15-14 実行時のinputText
inputType
属性によって、コンポーネントでユーザー入力がどのように(テキスト(デフォルト)、電子メール・アドレス、数値、電話銀号、URLのいずれかとして)解釈されるのかを定義できます。これらの入力タイプは、HTML5によって許容される値に基づいています。
入力テキスト・コンポーネントに入力される数値の変換や日時の値の変換を有効にするには、数値の変換(「数値の変換方法」を参照)および日時の変換(「日時の変換方法」を参照)コンポーネントを使用できます。
詳細、図および例は、次を参照してください。
Oracle Mobile Application Frameworkタグ・リファレンス
開発コンピュータ上のjdev_install
/jdeveloper/jdev/extensions/oracle.maf/Samples
ディレクトリ内のPublicSamples.zip
ファイル内にあるMAFサンプル・アプリケーションのCompGallery
いくつかのモバイル・デバイスでは、エンド・ユーザーが入力テキスト・フィールドをタップすると、キーボードが表示(スライドアップ)されます。入力テキストがMAF AMXページの唯一のコンポーネントである場合、ページがロードされるときに、デフォルトで入力フォーカスはこのフィールド上に配置され、キーボードが表示されます。
複数行入力テキストは、それが唯一のコンポーネントである場合、セカンダリ・ページに表示されることがあります。その場合、ページがロードされてキーボードが表示されたときに複数行入力テキストがフォーカスを受け取ります。
iOSデバイスとAndroidデバイスでは、入力テキスト・コンポーネントのレンダリングおよび動作は異なります。iPhoneおよびiPadでは、入力テキスト・コンポーネントが表示されるときに境界線がある場合とない場合があります。
入力テキスト・コンポーネントを作成する際は、次の点を考慮してください。
コンテンツを入力または編集するには、エンド・ユーザーはフィールド内をタップする必要があります。それにより、タップした場所に点滅する挿入カーソルが表示され、エンド・ユーザーがコンテンツを編集できるようになります。フィールドにコンテンツが含まれていない場合、挿入カーソルはフィールドの先頭に配置されます。
入力テキスト・コンポーネントによって表されるフィールドには、通常、プロンプトとして使用されるデフォルト・テキストが含まれていることがあります。エンド・ユーザーがそのようなフィールド内でキーボードのキーをタップすると、編集モードになったときにそのデフォルト・テキストがクリアされます。この動作は、入力テキストのhintText
属性を使用して有効化および構成されます。
入力テキスト・コンポーネントによって表されるフィールドには、選択済の外観はありません。選択は、フィールド内の点滅する挿入カーソルによって示されます。
エンド・ユーザーがフィールドに収まる数を超えたテキストを入力すると、タイピングの続行に従って一度に1文字ずつテキスト・コンテンツが左にシフトします。
複数行入力テキスト・コンポーネントは、任意の高さの長方形としてレンダリングされます。このコンポーネントでは、コンテンツが大きすぎてフィールドの境界内に収まらない場合のスクロールがサポートされています。テキスト領域が一杯になるとテキストの行が上にスクロールし、新しい行のテキストが追加されます。指定された表示領域に表示できる数よりも多くの行がある場合、エンド・ユーザーは上または下にフリックしてテキストの行をスクロールできます。コンポーネント内にスクロールバーが表示されてその領域がスクロール可能であることを示します。
パスワード・フィールドは入力された各文字を一時的にエコーし、その後、その文字をドットに変換してパスワードを保護します。
iOSでの入力テキスト・コンポーネントの外観および動作はカスタマイズ可能です(「入力テキスト・コンポーネントのカスタマイズ」を参照)。
showClear
属性をon
に設定します。showClear
属性がoff
に設定されている場合は、テキスト・クリア・アイコンは表示されません。showClear
属性がauto
に設定されている場合は、inputText
の動作が、keyboardDismiss
属性に対して設定されている内容と一致するようオーバーライドされます。keyboardDismiss
属性がsearch
に設定されている場合は、テキスト・クリア・アイコンは表示されます。 MAF AMXは、iOSデバイスでの入力時の先頭大文字化および修正のサポートを提供します。また、フィールドを移動用に使用するか、検索用に使用するかを示すことができます。使用中のオペレーティング・システムとキーボードのバージョンによっては、モバイル・デバイスのソフト・キーパッドの右下にある「return」ボタン(図15-15を参照)の表示が「Go」または「Search」ボタンに変更される場合があります(図15-16を参照)。また、ボタンがアクティブ化されると、単一行入力テキスト・コンポーネントに対して、DataChangeEvent
がトリガーされます。
図15-15 実行時のiOSデバイスの「Return」ボタン
図15-16 実行時のiOS 7の「Go」および「Search」ボタン
表15-3に、入力テキスト・コンポーネントの属性をリストしますが、これらの属性を使用して、そのコンポーネントの外観および動作と、入力テキストによって表されるフィールドへの値の入力に使用されるソフト・キーパッドをカスタマイズできます。
表15-3 入力テキスト・コンポーネントの入力およびカスタマイズ属性
|
iOSデバイスのシミュレータでは、自動大文字化および自動修正のサポートが限定されているため、この機能をiOSデバイスでテストする必要があります。
入力数値スライダ(inputNumberSlider
)コンポーネントは、キーを使用して値を入力するかわりにスライダを使用して値の範囲から数値を選択できるようにします。スライダの溝またはトラックの塗り潰されている部分が、現在の値を視覚的に表しています。
スライダの値を数値的に示すには、出力または入力テキスト・コンポーネントとともに入力数値スライダを使用できます。入力テキスト・コンポーネントではスライダ値を直接入力することもできます。エンド・ユーザーが入力テキスト・フィールドをタップすると、数値モードのキーボードがスライドアップします。このキーボードは、スライドダウン・ボタンを使用するか、スライダ・コンポーネントからタップすることにより消去できます。
入力数値スライダ・コンポーネントは、常に、コンポーネントの定義済範囲内の最大値および最小値を表示します。
注意:
入力数値スライダ・コンポーネントは、正確な数値入力が必要な場合や値の範囲が広い場合(たとえば、0から1000)は使用しないでください。
次の例は、MAF AMXファイルで定義されたinputNumberSlider
要素を示しています。
<amx:inputNumberSlider id="slider1" value="#{myBean.count}"/>
図15-17は、「プレビュー」ペインに表示されている入力数値スライダ・コンポーネントを示しています。このコンポーネントのパラメータは、次のように設定されます。
<amx:inputNumberSlider id="inputNumberSlider1" label="Input Number" minimum="0" maximum="20" stepSize="1" value="10"/>
図15-17 デザインタイムの入力数値スライダ
入力数値スライダ・コンポーネントに入力される数値の変換を有効にするには、数値の変換コンポーネント(「数値の変換方法」を参照)を使用します。
詳細、図および例は、次を参照してください。
Oracle Mobile Application Frameworkタグ・リファレンス
開発コンピュータ上のjdev_install
/jdeveloper/jdev/extensions/oracle.maf/Samples
ディレクトリ内のPublicSamples.zip
ファイル内にあるMAFサンプル・アプリケーションのCompGallery
他のMAF AMX UIコンポーネントと同様に、入力数値スライダ・コンポーネントには通常の状態と選択済状態があります。コンポーネントは、いつでもタッチされたときに選択済状態になります。エンド・ユーザーは、スライダ値を変更するには、タッチしてからスライダ・ボタンを操作します。
入力数値スライダ・コンポーネントには、オプションのimageLeft
属性およびimageRight
属性があり、これらは、エンド・ユーザーに追加情報を提供するためにスライダのいずれかの側に表示可能なイメージを示します。
入力日(inputDate
)コンポーネントは、日付を入力するためのポップアップ入力フィールドを提示します。デフォルトの日付フォーマットは、現在のロケールに適切な省略の日付フォーマットです。たとえば、米語(ENU)のデフォルトの書式はmm/dd/yy
です。inputType
属性によって、コンポーネントが入力として日付、時刻または日時を受け入れるのかどうかが定義されます。タイムゾーンは、モバイル・デバイスに対して構成されているタイムゾーンに依存します。したがって、デバイスに関連しています。実行時に、入力日コンポーネントにはそのデバイスのネイティブのルック・アンド・フィールがあります。
次の例は、MAF AMXファイルで定義されたinputDate
要素を示しています。このコンポーネントのinputType
属性は、デフォルト値のdate
に設定されています。value
属性が読取り専用の場合、EL式またはその他のタイプの値に設定でき、value
が読取り専用でない場合は、EL式としてのみ指定できます。
<amx:inputDate id="inputDate1" label="Input Date" value="#{myBean.date}"/>
詳細は、次を参照してください。
Oracle Mobile Application Frameworkタグ・リファレンス
W3Cによって定義されているHTML5のグローバル日付と時刻
開発コンピュータ上のjdev_install
/jdeveloper/jdev/extensions/oracle.maf/Samples
ディレクトリ内のPublicSamples.zip
ファイル内にあるMAFサンプル・アプリケーションのCompGallery
MAF AMXは、テキストを表示するラベルとして使用するための出力テキスト(outputText
)コンポーネントを提供しています。
次の例は、MAF AMXファイルで定義されたoutputText
要素を示しています。
<amx:outputText id="ot1" value="output" styleClass="#{pageFlowScope.pStyleClass}"/>
図15-18は、「プレビュー」ペインに表示されている出力テキスト・コンポーネントを示しています。
図15-18 デザインタイムの出力テキスト
出力テキスト・コンポーネントの数値および日時関連データの変換を容易にするには、数値の変換(「数値の変換方法」を参照)および日時の変換(「日時の変換方法」を参照)コンバータを使用します。
詳細および例は、次を参照してください。
Oracle Mobile Application Frameworkタグ・リファレンス
開発コンピュータ上のjdev_install
/jdeveloper/jdev/extensions/oracle.maf/Samples
ディレクトリ内のPublicSamples.zip
ファイル内にあるMAFサンプル・アプリケーションのCompGallery
ボタン(commandButton
)コンポーネントは、アクション(たとえば、保存、取消し、送信)をトリガーするため、およびアプリケーション内で他のページへのナビゲーション(たとえば、戻るの場合は「戻るボタン・ナビゲーションの有効化」を参照)を有効化するために使用します。
ボタンは、次の方法のいずれかで使用できます。
テキスト・ラベル付きボタン。
テキスト・ラベルおよびイメージ・アイコン付きボタン。
注意:
アイコン・イメージと配置(テキスト・ラベルの左または右)を定義できます。
イメージ・アイコンのみが付いたボタン(たとえば、レコードを追加または削除するための + および - ボタン)。
MAFでは、次の3つの表示領域に対して1つのデフォルト・ボタン・タイプがサポートされています。
最上部のヘッダー・バーに表示されるボタン。MAF AMXページでは、ヘッダーは、ヘッダー、プライマリおよびセカンダリの各ファセットと組み合せたパネル・ページ・コンポーネント(「パネル・ページ・コンポーネントの使用方法」を参照)によって表されます(iPhoneではこれが一般的です)。
ヘッダー・ファセットには、ページ・タイトルが含まれています。
プライマリ・アクション・ファセットは、 ヘッダー・バーの左隅に表示される領域を表します。一般的にボタンまたはリンク・コンポーネントを保持しますが、任意のコンポーネント・タイプを含めることができます。
セカンダリ・アクション・ファセットは、ヘッダー・バーの右隅に表示される領域を表します。一般的にボタンまたはリンク・コンポーネントを保持しますが、任意のコンポーネント・タイプを含めることができます。
ページのコンテンツ領域に表示されるボタン。
ページのフッター・バーに表示されるボタン。MAF AMXページでは、フッターは、フッター・ファセットと組み合せたパネル・ページ・コンポーネントによって表されます(「パネル・ページ・コンポーネントの使用方法」を参照)。
フッター・ファセットは、コンテンツ領域の下に表示される領域を表します。一般的にボタンまたはリンク・コンポーネントを保持しますが、任意のコンポーネント・タイプを含めることができます。
どのタイプでも、すべてのボタン・コンポーネントには次の3つの状態があります。
標準。
アクティブ: ボタンがエンド・ユーザーによってタップまたはタッチされたときの外観を表します。ボタンがタップされた(タッチされてリリースされた)ときに、ボタン・アクションが実行されます。タッチしたときにアクティブ化された外観が表示され、リリースしたときにアクションが実行されます。エンド・ユーザーがボタンにタッチした後に指をドラッグしてボタンから離した場合、アクションは実行されません。ただし、ボタンにタッチしている間中、アクティブ化された外観が表示されます。
無効。
ボタン・コンポーネントの外観は、adfmf-commandButton-
<style>
に設定したそのstyleClass
属性によって定義されます。表15-4に示すどのスタイルでも、MAF AMXページ内の有効な任意の場所に配置されているボタンに適用できます。
表15-4 主なボタン・スタイル
ボタン・スタイル名 | 説明 |
---|---|
デフォルト |
次の場所に配置されているボタンのデフォルト・スタイル
|
戻る |
いずれかのパネル・ページ・ファセット(プライマリ、セカンダリ、ヘッダー、フッター)に配置されるボタンの戻るスタイル。このスタイルを、デフォルト・ボタンに適用すると、ページに戻るという外観を表示できます。このボタン・スタイルは、Springboardに戻るまたはページに戻るボタンによく使用されます。 詳細は、「戻るスタイル・ボタンの表示」を参照してください。 |
強調表示 |
いずれかのパネル・ページ・ファセット(プライマリ、セカンダリ、ヘッダー、フッター)またはMAF AMXページのコンテンツ領域に配置されるボタンの強調表示スタイル。このスタイルをボタンに追加すると、保存(または完了)ボタンで一般的なiPhoneボタンの外観を提供できます。 詳細は、「強調表示スタイル・ボタンの表示」を参照してください。 |
アラート |
アラート・スタイルは削除の外観をボタンに追加します。詳細は、「アラート・スタイル・ボタンの表示」を参照してください。 |
ボタンに適用して太い角丸の境界線でボタンを修飾できる角丸スタイル(adfmf-commandButton-rounded
)があります(図15-19を参照)。このスタイルは他のどのようなスタイルとも組み合せて定義できます。
図15-19 デザインタイムの角丸ボタン
MAF AMXには、多数の追加の装飾スタイルが用意されています(「追加のボタン・スタイルの使用」参照)。
MAF AMXでのボタン・コンポーネントの子の操作および属性の処理には、特定の順序があります。詳細は、「操作と属性の処理順序に関する必知事項」を参照してください。
「パネル・ページ」ファセットまたはコンテンツ領域内に配置可能な様々なデフォルト・スタイル・ボタンを次に示します。
テキスト・ラベルのみが付いた「標準」、「アクティブ」または「無効」の各ボタン。
イメージ・アイコンのみが付いた「標準」、「アクティブ」または「無効」の各ボタン。
次の例は、MAF AMXファイルで宣言されているcommandButton
要素を示しています。この要素は、テキスト・ラベルの付いたデフォルトのボタンを表します。
<amx:panelPage id="pp1"> <amx:facet name="primary"> <amx:commandButton id="cb1" text="Cancel" action="cancel" actionListener="#{myBean.rollback}"/> </amx:facet> </amx:panelPage>
次の例も、MAF AMXファイルで宣言されたcommandButton
要素を示しています。この要素は、イメージ・アイコンの付いたデフォルトのボタンを表します。
<amx:panelPage id="pp1"> <amx:facet name="primary"> <amx:commandButton id="cb1" icon="plus.png" action="add" actionListener="#{myBean.AddItem}"/> </amx:facet> </amx:panelPage>
次の例は、パネル・ページのフッター・ファセット内で宣言されているcommandButton
要素を示しています。この要素は、テキスト・ラベルとイメージ・アイコンの付いたデフォルトのボタンを表します。
<amx:panelPage id="pp1"> <amx:facet name="footer"> <amx:commandButton id="cb2" icon="folder.png" text="Move (#{myBean.mailcount})" action="move"/> </amx:facet> </amx:panelPage>
次の例は、パネル・ページのコンテンツ領域の一部で宣言されているcommandButton
要素を示しています。この要素は、テキスト・ラベルの付いたデフォルトのボタンを表します。
<amx:panelPage id="pp1"> <amx:commandButton id="cb1" text="Reply" actionListener="#{myBean.share}"/> </amx:panelPage>
詳細、図および例は、次を参照してください。
Oracle Mobile Application Frameworkタグ・リファレンス
開発コンピュータ上のjdev_install
/jdeveloper/jdev/extensions/oracle.maf/Samples
ディレクトリ内のPublicSamples.zip
ファイル内にあるMAFサンプル・アプリケーションのCompGallery
「パネル・ページ」ファセットまたはコンテンツ領域内に配置される様々な戻るスタイル・ボタンを次に示します。
テキスト・ラベルのみが付いた「標準」、「アクティブ」または「無効」の各ボタン。
イメージ・アイコンのみが付いた「標準」、「アクティブ」または「無効」の各ボタン。
次の例は、MAF AMXファイルで宣言されているcommandButton
要素を示しています。この要素は、テキスト・ラベルの付いた戻るボタンを表します。
<amx:panelPage id="pp1"> <amx:facet name="header"> <amx:outputText value="Details" id="ot1"/> </amx:facet> <amx:facet name="primary"> <amx:commandButton id="cb1" text="Back" action="__back"/> </amx:facet> ... </amx:panelPage>
プライマリ・ファセット内にボタン・コンポーネント配置し、そのaction
属性を__back
に設定した場合は常に、MAF AMXによって戻る矢印スタイル設定が自動的に適用されます(図15-20参照)。
図15-20 デザインタイムの戻るボタン
詳細、図および例は、次を参照してください。
Oracle Mobile Application Frameworkタグ・リファレンス
開発コンピュータ上のjdev_install
/jdeveloper/jdev/extensions/oracle.maf/Samples
ディレクトリ内のPublicSamples.zip
ファイル内にあるMAFサンプル・アプリケーションのCompGallery
他のタイプのボタンと同様に、「パネル・ページ」ファセットまたはコンテンツ領域内に配置される強調表示スタイル・ボタンには、「標準」、「アクティブ」または「無効」の状態があります。
次の例は、MAF AMXファイルで宣言されているcommandButton
要素を示しています。この要素は、テキスト・ラベルの付いたハイライト表示ボタンを表します。
<amx:panelPage id="pp1"> <amx:facet name="secondary"> <amx:commandButton id="cb2" text="Save" action="save" styleClass="adfmf-commandButton-highlight"/> </amx:facet> </amx:panelPage>
図15-21 デザインタイムの強調表示ボタン
詳細、図および例は、次を参照してください。
Oracle Mobile Application Frameworkタグ・リファレンス
開発コンピュータ上のjdev_install
/jdeveloper/jdev/extensions/oracle.maf/Samples
ディレクトリ内のPublicSamples.zip
ファイル内にあるMAFサンプル・アプリケーションのCompGallery
「パネル・ページ」内に配置されるアラート・スタイル・ボタンには、「標準」、「アクティブ」または「無効」の状態があります。
次の例は、MAF AMXファイルで宣言されているcommandButton
要素を示しています。この要素は、テキスト・ラベルの付いたアラート・ボタンを表します。
<amx:commandButton id="cb1" text="Delete" actionListener="#{myBean.delete}" styleClass="adfmf-commandButton-alert" />
図15-22 デザインタイムのアラート・ボタン
詳細、図および例は、次を参照してください。
Oracle Mobile Application Frameworkタグ・リファレンス
開発コンピュータ上のjdev_install
/jdeveloper/jdev/extensions/oracle.maf/Samples
ディレクトリ内のPublicSamples.zip
ファイル内にあるMAFサンプル・アプリケーションのCompGallery
MAF AMXには、次の追加のボタン・スタイルが用意されています。
暗いスタイル
明るいスタイル
小さいスタイル
大きいスタイル
強調表示スタイル
確認スタイル
2種類の「代替」スタイル
図15-23 追加のボタン・スタイル
MAFアプリケーションでは、次のコンテキスト内でボタン・コンポーネントを使用できます。
特定のアクションを実行するためのコンテンツ領域
ポップアップスタイルのアラート・メッセージ
MAFでは、ナビゲーション・バーで使用する標準ボタンを作成できます。
編集ボタンで、エンド・ユーザーは編集またはコンテンツ操作モードに入ることができます。
取消ボタンで、エンド・ユーザーは、変更を保存することなく編集またはコンテンツ操作モードを終了できます。
保存ボタンで、エンド・ユーザーは、変更を保存して編集またはコンテンツ操作モードを終了できます。
完了ボタンで、エンド・ユーザーは、変更があれば保存して現在のモードを終了できます。
元に戻すボタンで、エンド・ユーザーは最後のアクションを元に戻すことができます。
やり直しボタンで、エンド・ユーザーは最後の元に戻したアクションをやり直すことができます。
戻るボタンで、エンド・ユーザーはSpringboardに戻ることができます。
ページに戻るボタンで、エンド・ユーザーはボタン・テキスト・ラベルによって識別されるページに戻ることができます。
追加ボタンで、エンド・ユーザーは新しいオブジェクトを追加または作成できます。
ページのコンテンツ領域内に配置されたボタンは、そのページ内のボタンの場所およびコンテキストに指定されている特定のアクションを実行します。これらのボタンは、ナビゲーション・バーに配置されているボタンとは異なる外観を持っている場合があります。
アクション・シート内に配置されるボタンの例には、「ノートの削除」ボタンおよび「取消」ボタンのグループがあります。
アクション・シート・ボタンでは、表示の幅が拡張されます。
MAF AMXでは、前に訪問したページに戻るデフォルト動作を持つ戻るボタンを使用した移動がサポートされています。詳細は、「UIコンポーネントを使用したアクション結果の指定方法」を参照してください。
__back
ナビゲーションを備えたパネル・ページのプライマリ・ファセットにボタン・コンポーネントを追加すると、そのボタンには、戻る矢印の視覚的スタイリングが自動的に設定されます(「戻るスタイル・ボタンの表示」を参照)。スタイル設定を無効にするには、styleClass
属性をamx-commandButton-normal
に設定します。
詳細、図および例は、次を参照してください。
Oracle Mobile Application Frameworkタグ・リファレンス
開発コンピュータ上のjdev_install
/jdeveloper/jdev/extensions/oracle.maf/Samples
ディレクトリ内のPublicSamples.zip
ファイル内にあるMAFサンプル・アプリケーションのCompGallery
リンク(commandLink
)コンポーネントは、アクションをトリガーするためおよび他のビューへのナビゲーションを有効化するために使用します。
リンク・コンポーネントは、その子として任意のタイプのコンポーネントを定義できます。プロパティ・リスナーの設定(「プロパティ・リスナーの設定の使用方法」を参照)、アクション・リスナー(「アクション・リスナーの使用方法」を参照)、ポップアップ表示動作、ポップアップを閉じる動作(「ポップアップ・コンポーネントの使用方法」を参照)および検証動作(「入力の検証」を参照)などのコンポーネントをリンク・コンポーネントの子として使用することで、クリックおよびジェスチャーを実行できるアクション可能な領域を作成できます。
リンク内にイメージ・コンポーネントを配置することで(「イメージの表示方法」を参照)、クリック可能イメージを作成できます。
次の例は、MAF AMXファイルで宣言された基本的なcommandLink
要素を示しています。
<amx:commandLink id="cl1" text="linked" action="gotolink" actionListener="#{myBean.doSomething}"/>
図15-24は、「プレビュー」ペインに表示されている基本的なリンク・コンポーネントを示しています。
図15-24 デザインタイムのリンク
次の例は、MAF AMXファイルで宣言されたcommandLink
要素を示しています。このコンポーネントは、panelFormLayout
コンポーネントおよびpanelLabelAndMessage
コンポーネント内に配置されます。
<amx:panelPage id="pp1"> <amx:panelFormLayout id="form"> <amx:panelLabelAndMessage id="panelLabelAndMessage1" label="Label"> <amx:commandLink id="cl1" text="linked" action="gotolink" actionListener="#{myBean.doSomething}"/> </amx:panelLabelAndMessage> </amx:panelFormLayout> </amx:panelPage>
図15-25は、フォーム内に配置され、「プレビュー」ペインに表示されているリンク・コンポーネントを示しています。
図15-25 デザインタイムのフォーム内リンク
MAF AMXでのリンク・コンポーネントの子の操作および属性の処理には、特定の順序があります。詳細は、「操作と属性の処理順序に関する必知事項」を参照してください。
MAF AMXでは、リンクと類似していますが、ページ間のナビゲーションは許可されない別のコンポーネントであるリンク(実行) (goLink
)コンポーネントが提供されています。このコンポーネントを使用して、外部ページへのリンクを有効化できます。図15-26は、「プレビュー」ペインに表示されているリンク(実行)コンポーネントを示しています。このコンポーネントのパラメータは、次のように設定されます。
<amx:goLink id="goLink1" text="Go Link" url="http://example.com"/>
図15-26 デザインタイムのリンク(実行)
イメージは、リンク(実行)コンポーネントの子として指定できる唯一のコンポーネントです。
詳細、図および例は、次を参照してください。
Oracle Mobile Application Frameworkタグ・リファレンス
開発コンピュータ上のjdev_install
/jdeveloper/jdev/extensions/oracle.maf/Samples
ディレクトリ内のPublicSamples.zip
ファイル内にあるMAFサンプル・アプリケーションのCompGallery
MAF AMXでは、ビットマップによって表されるイメージ(image
)コンポーネントを使用して、iOSおよびAndroidデバイス上にイメージを表示できます。
ボタンおよびリスト・ビューにイメージを配置するだけでなく、それをリンク・コンポーネント内に配置して(「リンクの使用方法」を参照)クリック可能イメージを作成できます。
次の例は、MAF AMXファイルのimage
要素定義を示しています。
<amx:image id="i1" styleClass="prod-thumb" source="images/img-big-#{pageFlowScope.product.uid}.png" />
イメージ・ファイルのURIに加えて、ソースには、REST Webサービスからロードされたイメージに必要なbase 64でエンコードされたイメージ・データを含めることができます。data:image/gif;base64,
接頭辞を使用して、このようなイメージのソースを定義し、image
要素のsource
属性を次のように設定します。
<amx:image id="i2" source="data:image/gif;base64,#{row.ImageBase64}" />
GIFファイルに提供される値は、イメージ・タイプによって異なります。
Androidプラットフォームでサポートされているフォーマットは次のとおりです。
GIF
JPEG
PNG
BMP
iOSプラットフォームでサポートされているフォーマットは次のとおりです。
PNG
詳細および例は、次を参照してください。
Oracle Mobile Application Frameworkタグ・リファレンス
開発コンピュータのjdev_install
/jdeveloper/jdev/extensions/oracle.maf/Samples
ディレクトリ内のPublicSamples.zip
ファイル内にあるMAFサンプル・アプリケーションのCompGallery
チェック・ボックス(selectBooleanCheckbox
)コンポーネントは、true
またはfalse
の値からの単一選択(選択済状態と選択解除状態の間で切り替えできる)を可能にするために作成するチェックボックスを表します。
チェックボックス・コンポーネントのlabel
属性を使用するとチェックボックスの左側にテキストを配置でき、text
属性を使用すると右側にテキストを配置できます。
次の例は、MAF AMXファイルで宣言されたselectBooleanCheckbox
要素を示しています。
<amx:selectBooleanCheckbox id="check1" label="Agree to the terms:" value="#{myBean.bool1}" valueChangeListener= "#{PropertyBean.ValueChangeHandler}"/>
図15-27は、「プレビュー」ペインに表示される選択解除されたチェックボックス・コンポーネントを示しています。このコンポーネントのパラメータは、次のように設定されます。
<amx:selectBooleanCheckbox id="selectBooleanCheckbox1" label="Checkbox" value="false" valueChangeListener= "#{PropertyBean.ValueChangeHandler}"/>
図15-27 デザインタイムの選択解除されたチェックボックス
「プレビュー」ペインに表示される選択済のチェックボックス・コンポーネントを示しています。このコンポーネントのパラメータは、次のように設定されます。
<amx:selectBooleanCheckbox id="selectBooleanCheckbox1" label="Checkbox" value="true" valueChangeListener= "#{PropertyBean.ValueChangeHandler}"/>
図15-28 選択済のチェックボックスの定義
詳細、図および例は、次を参照してください。
Oracle Mobile Application Frameworkタグ・リファレンス
開発コンピュータ上のjdev_install
/jdeveloper/jdev/extensions/oracle.maf/Samples
ディレクトリ内のPublicSamples.zip
ファイル内にあるMAFサンプル・アプリケーションのCompGallery
iOSでは、ネイティブ・チェックボックス・コンポーネントはサポートされていません。ブール・スイッチは、通常、プロパティ・ページで使用され、ブール選択を可能にします(「ブール・スイッチ・コンポーネントの使用方法」を参照)。
チェック・ボックスを複数選択(selectManyCheckbox
)コンポーネントは、true
またはfalse
の値の複数選択を可能にするために使用するチェック・ボックスのグループを表します。これにより、グループ内の各チェックボックスの選択済と選択解除の切替えが可能になります。この選択メカニズムは、チェック・ボックスを複数選択コンポーネントに含まれている、アイテムの選択コンポーネント(「アイテムの選択コンポーネントの違いに関する必知事項」を参照)によって提供されます。
注意:
チェックボックスの複数選択コンポーネントには、アイテムの選択コンポーネントを1つ以上含めることができます。
次の例は、MAF AMXファイルで宣言されたselectManyCheckbox
要素を示しています。
<amx:selectManyCheckbox id="selectManyCheckbox1" label="Select shipping options" value="#{myBean.shipping}" valueChangeListener="#{PropertyBean.ValueChangeHandler}"> <amx:selectItem id="selectItem1" label="Air" value="#{myBean.shipping.air}"/> <amx:selectItem id="selectItem2" label="Rail" value="#{myBean.shipping.rail}"/> <amx:selectItem id="selectItem3" label="Water" value="#{myBean.shipping.water}"/> </amx:selectManyCheckbox>
図15-29は、「プレビュー」ペインに表示されているチェックボックスを複数選択コンポーネントを示しています。このコンポーネントのパラメータは、次のように設定されます。
<amx:selectManyCheckbox id="selectManyCheckbox1" label="Select Many Checkbox" value="value2" valueChangeListener="#{PropertyBean.ValueChangeHandler}"> <amx:selectItem id="selectItem1" label="Selection 1" value="value1"/> <amx:selectItem id="selectItem2" label="Selection 2" value="value2"/> <amx:selectItem id="selectItem3" label="Selection 3" value="value3"/> </amx:selectManyCheckbox>
図15-29 デザインタイムのチェックボックスを複数選択
詳細、図および例は、次を参照してください。
Oracle Mobile Application Frameworkタグ・リファレンス
開発コンピュータ上のjdev_install
/jdeveloper/jdev/extensions/oracle.maf/Samples
ディレクトリ内のPublicSamples.zip
ファイル内にあるMAFサンプル・アプリケーションのCompGallery
MAF AMXでは、ポップアップ・スタイル(デフォルト)とリスト・スタイル(使用可能な選択肢の数がデバイスの画面サイズを超えている場合に使用される)の、チェックボックスを複数選択コンポーネントを表示するための2つの代替方法が提供されています。
iPhoneとiPadの両方でのポップアップスタイルのチェックボックスを複数選択コンポーネントとエンド・ユーザーとの対話では、エンド・ユーザーがコンポーネントをタップすると選択肢のリストがポップアップに表示されます。選択を行うには、エンド・ユーザーは1つ以上の選択肢をタップします。選択内容を保存するには、エンド・ユーザーはポップアップの外をタップするか、閉じるボタン( x )を使用してポップアップを閉じます。
ポップアップを閉じるときに、コンポーネントに表示されている値が、選択済の値に更新されます。
選択肢の数がデバイスのサイズを超える場合、スクロール可能なリスト・ビュー(「リスト・ビューおよびリスト・アイテム・コンポーネントの使用方法」を参照)を含むフルページ・ポップアップが生成されます。
iPhoneとiPadの両方でのリストスタイルのチェックボックスを複数選択コンポーネントとエンド・ユーザーとの対話では、エンド・ユーザーがコンポーネントをタップすると選択肢のリストが表示されます。選択を行うには、エンド・ユーザーは上下にスクロールして使用可能な選択肢を参照し、1つ以上の選択肢をタップします。選択内容を保存するには、エンド・ユーザーは閉じるボタン( x )をタップします。
リストを閉じるときに、コンポーネントに表示されている値が、選択済の値に更新されます。
注意:
どちらの場合も、選択を取り消すメカニズムは提供されていません。
選択肢(selectOneChoice
)コンポーネントは、リストからの単一の値の選択を可能にするために使用するコンボ・ボックスを表します。この選択メカニズムは、選択肢コンポーネントに含まれている、アイテムの選択コンポーネント(「アイテムの選択コンポーネントの違いに関する必知事項」を参照)によって提供されます。
注意:
選択肢コンポーネントには、アイテムの選択コンポーネントを1つ以上含めることができます。
次の例は、MAF AMXファイルのselectOneChoice
要素の定義をselectItems
サブ要素とともに示しています。
<amx:selectOneChoice id="choice1" label="Your state:" value="#{myBean.myState}" valueChangeListener="#{PropertyBean.ValueChangeHandler}"> <amx:selectItem id="selectItem1" label="Alaska" value="AK"/> <amx:selectItem id="selectItem2" label="Alabama" value="AL"/> <amx:selectItem id="selectItem3" label="California" value="CA"/> <amx:selectItem id="selectItem4" label="Connecticut" value="CT"/> </amx:selectOneChoice>
<amx:selectOneChoice id="choice1" label="Your state:" value="#{myBean.myState}" valueChangeListener="#{PropertyBean.ValueChangeHandler}"> <amx:selectItems id="selectItems1" value="myBean.allStates"/> </amx:selectOneChoice>
図15-30は、「プレビュー」ペインに表示されている選択肢コンポーネントを示しています。このコンポーネントのパラメータは、次のように設定されます。
<amx:selectOneChoice id="selectOneChoice1" label="Choice" value="value1" valueChangeListener="#{PropertyBean.ValueChangeHandler}"> <amx:selectItem id="selectItem1" label="Value 1" value="value1"/> <amx:selectItem id="selectItem2" label="Value 2" value="value2"/> <amx:selectItem id="selectItem3" label="Value 3" value="value3"/> </amx:selectOneChoice>
図15-30 デザインタイムの選択肢
selectOneChoice
要素の初期値はnull
にできません。かわりに、選択肢を1つ選択コンポーネントに表示された値に設定する必要があります。これを行うには、必ず、モデル(Beanまたはバインディング)の値を、JDeveloperのデザインタイムで表示されるデフォルト値と同一にする必要があります。
詳細、図および例は、次を参照してください。
Oracle Mobile Application Frameworkタグ・リファレンス
開発コンピュータ上のjdev_install
/jdeveloper/jdev/extensions/oracle.maf/Samples
ディレクトリ内のPublicSamples.zip
ファイル内にあるMAFサンプル・アプリケーションのCompGallery
MAF AMXでは、選択肢コンポーネントを表示するため、ポップアップ・スタイルとドロップダウン・スタイルの2つの代替方法が提供されています。
iPhoneでのネイティブ選択肢コンポーネントとエンド・ユーザーとの対話では、エンド・ユーザーがコンポーネントをタップすると、選択肢のリストが、デフォルトで最初のオプションが選択された状態で表示されます。選択を行うには、エンド・ユーザーは上下にスクロールして使用可能な選択肢を参照します。選択内容を保存するには、エンド・ユーザーはツール・バーの「終了」をタップします。
iPadでは、ユーザーの対話は、次の点を除いてiPhoneにおける対話と同様です。
選択のリストは、ポップアップ・ダイアログに表示されます。
iPadのスタイリングが選択のリストの周囲に実装され、リストのソースを示すためにノッチが使用されます。
アイテムを選択しないで選択のリストを閉じるには、エンド・ユーザーはポップアップ・ダイアログの外をタップする必要があります。
注意:
選択のリストおよびツール・バーを表示するためのUIは、ブラウザにネイティブであり、CSSを使用してスタイリングすることはできません。
選択肢コンポーネント内のリスト値は、無効として表示できます。
選択肢の数がデバイスの表示サイズを超える場合、ネイティブな方法でスクロール可能なリスト・ページが生成されます。
Androidデバイスでのネイティブ選択肢コンポーネントとエンド・ユーザーとの対話では、エンド・ユーザーがコンポーネントをタップすると、ポップアップ・ダイアログ形式の選択肢のリストが表示されます。選択肢の数がデバイスのサイズ内に収まる場合は単純なポップアップが表示されます。この場合次のようになります。
選択リストの1つのアイテムを1回タップすると、そのアイテムが選択され、ポップアップが閉じます。選択内容は選択肢コンポーネント・ラベルに反映されます。
ポップアップの外で1回タップするか戻るキーをクリックすると、変更が適用されることなくポップアップが閉じます。
表示される選択肢の数がデバイス・サイズ内に収まらない場合は、ポップアップにスクロール可能リストが含まれます。その場合は次のようになります。
選択リストの1つのアイテムを1回タップすると、そのアイテムが選択され、ポップアップが閉じます。選択内容は選択肢コンポーネント・ラベルに反映されます。
戻るキーをクリックすると、変更が適用されることなくポップアップが閉じます。
選択肢を複数選択(selectManyChoice
)コンポーネントは、リストの複数の値の選択を可能にします。この選択メカニズムは、チェック・ボックスを複数選択コンポーネントに含まれている、アイテムの選択コンポーネント(「アイテムの選択コンポーネントの違いに関する必知事項」を参照)によって提供されます。
注意:
チェックボックスを複数選択コンポーネントには、アイテムの選択コンポーネントを1つ以上含めることができます。
次の例は、MAF AMXファイルで宣言されたselectManyChoice
要素を示しています。このコンポーネントは、アイテムの選択(selectItem
)コンポーネントを子として使用します。
<amx:selectManyChoice id="check1" label="Select Option:" value="#{myBean.shipping}" valueChangeListener="#{PropertyBean.ValueChangeHandler}"> <amx:selectItem id="selectItem1" label="Signature Required" value="signature" /> <amx:selectItem id="selectItem2" label="Insurance" value="insurance" /> <amx:selectItem id="selectItem3" label="Delivery Confirmation" value="deliveryconfirm"/> </amx:selectManyChoice>
図15-31 デザインタイムの選択肢を複数選択
<amx:selectManyChoice id="check1" label="Select Shipping Options:" value="#{myBean.shipping}"> <amx:selectItems id="selectItems1" value="#{myBean.shippingOptions}"/> </amx:selectManyChoice>
詳細、図および例は、次を参照してください。
Oracle Mobile Application Frameworkタグ・リファレンス
開発コンピュータ上のjdev_install
/jdeveloper/jdev/extensions/oracle.maf/Samples
ディレクトリ内のPublicSamples.zipファイル内にあるMAFサンプル・アプリケーションのCompGallery
すべてのサポートされているデバイスで、選択肢を複数選択コンポーネントの外観と動作は、チェック・ボックスを複数選択コンポーネントとほとんど同じです(詳細は、「チェック・ボックスを複数選択コンポーネントの使用方法」を参照してください)。
ブール・スイッチ(selectBooleanSwitch
)コンポーネントは、チェックボックスのかわりのスイッチ・メタファーとしてのブール値の編集を可能にします。
他のMAF AMX UIコンポーネントと同様に、このコンポーネントには標準および選択済の状態があります。値を切り替えるには、エンド・ユーザーはスイッチを1回タップ(タッチしてリリース)します。タップするたびにスイッチが切り替わります。
次の例は、MAF AMXファイルで定義されたselectBooleanSwitch
要素を示しています。
<amx:selectBooleanSwitch id="switch1" label="Flip switch:" onLabel="On" offLabel="Off" value="#{myBean.bool1}" valueChangeListener= "#{PropertyBean.ValueChangeHandler}"/>
図15-32は、「プレビュー」ペインに表示されているブール・スイッチ・コンポーネントを示しています。このコンポーネントのパラメータは、次のように設定されます。
<amx:selectBooleanSwitch id="selectBooleanSwitch1" label="Switch" value="value1" valueChangeListener= "#{PropertyBean.ValueChangeHandler}"/>
図15-32 デザインタイムのブール・スイッチ
詳細、図および例は、次を参照してください。
Oracle Mobile Application Frameworkタグ・リファレンス
開発コンピュータ上のjdev_install
/jdeveloper/jdev/extensions/oracle.maf/Samples
ディレクトリ内のPublicSamples.zip
ファイル内にあるMAFサンプル・アプリケーションのCompGallery
iOSでは、プール・スイッチ・コンポーネントは、属性値を有効化または無効化するために設定ページでよく使用されます。
選択ボタン(selectOneButton
)コンポーネントは、常に1つのボタンがアクティブになっている、アクションをリストするボタン・グループを表します。この選択メカニズムは、選択ボタン・コンポーネントに含まれている、アイテムの選択コンポーネント(「アイテムの選択コンポーネントの違いに関する必知事項」を参照)によって提供されます。
注意:
選択ボタン・コンポーネントには、アイテムの選択コンポーネントを1つ以上含めることができます。
次の例は、MAF AMXファイルで定義されたselectOneButton
要素を示しています。
<amx:selectOneButton id="bg1" value="#{myBean.myState}" valueChangeListener="#{PropertyBean.ValueChangeHandler}"> <amx:selectItem id="selectItem1" label="Yes" value="yes"/> <amx:selectItem id="selectItem2" label="No" value="no"/> <amx:selectItem id="selectItem3" label="Maybe" value="maybe"/> </amx:selectOneButton>
図15-33は、「プレビュー」ペインに表示されている選択ボタン・コンポーネントを示しています。このコンポーネントのパラメータは、次のように設定されます。
<amx:selectOneButton id="selectOneButton1" label="Select Button" value="value1" valueChangeListener="#{PropertyBean.ValueChangeHandler}"> <amx:selectItem id="selectItem1" label="Value 1" value="value1"/> <amx:selectItem id="selectItem2" label="Value 2" value="value2"/> <amx:selectItem id="selectItem3" label="Value 3" value="value3"/> </amx:selectOneButton>
図15-33 デザインタイムの選択ボタン
詳細、図および例は、次を参照してください。
Oracle Mobile Application Frameworkタグ・リファレンス
開発コンピュータ上のjdev_install
/jdeveloper/jdev/extensions/oracle.maf/Samples
ディレクトリ内のPublicSamples.zip
ファイル内にあるMAFサンプル・アプリケーションのCompGallery
ラジオ・ボタン(selectOneRadio
)コンポーネントは、使用可能な選択肢をリストするラジオ・ボタンのグループを表します。この選択メカニズムは、ラジオ・ボタン・コンポーネントに含まれている、アイテムの選択コンポーネント(「アイテムの選択コンポーネントの違いに関する必知事項」を参照)によって提供されます。
注意:
ラジオ・ボタン・コンポーネントには、アイテムの選択コンポーネントを1つ以上含めることができます。
次の例は、MAF AMXファイルのselectOneRadio
要素定義を示しています。このコンポーネントは、アイテムの選択(selectItems
)コンポーネントをその子として使用します。
<amx:selectOneRadio id="radio1" label="Choose a pet:" value="#{myBean.myPet}" valueChangeListener="#{PropertyBean.ValueChangeHandler}"> <amx:selectItem id="selectItem1" label="Cat" value="cat"/> <amx:selectItem id="selectItem2" label="Dog" value="dog"/> <amx:selectItem id="selectItem3" label="Hamster" value="hamster"/> <amx:selectItem id="selectItem4" label="Lizard" value="lizard"/> </amx:selectOneRadio>
次の例も、MAF AMXファイルのselectOneRadio
要素定義を示しています。このコンポーネントは、アイテムの選択(selectItems
)コンポーネントをその子として使用します。
<amx:selectOneRadio id="radio1" label="Choose a pet:" value="#{myBean.myPet}" valueChangeListener="#{PropertyBean.ValueChangeHandler}"> <amx:selectItems id="selectItems1" value="myBean.allPets"/> </amx:selectOneRadio>
図15-34は、「プレビュー」ペインに表示されているブール・スイッチ・コンポーネントを示しています。このコンポーネントのパラメータは、次のように設定されます。
<amx:selectOneRadio id="selectOneRadio1" label="Radio Button" value="value1" valueChangeListener="#{PropertyBean.ValueChangeHandler}"> <amx:selectItem id="selectItem1" label="Value 1" value="value1"/> <amx:selectItem id="selectItem2" label="Value 2" value="value2"/> <amx:selectItem id="selectItem3" label="Value 3" value="value3"/> </amx:selectOneRadio>
図15-34 デザインタイムのラジオ・ボタン
詳細、図および例は、次を参照してください。
Oracle Mobile Application Frameworkタグ・リファレンス
開発コンピュータ上のjdev_install
/jdeveloper/jdev/extensions/oracle.maf/Samples
ディレクトリ内のPublicSamples.zip
ファイル内にあるMAFサンプル・アプリケーションのCompGallery
リスト・ビュー(listView
)・コンポーネントを使用して、エンド・ユーザーが1つのオプションを選択できる選択肢のリストとしてデータを表示します。
通常、リスト・アイテム(listItem
)・コンポーネントは、リスト・ビュー・コンポーネント内の1つのアイテムを表しており、リスト・アイテム・コンポーネントをリスト・ビュー内に配置して、データ・アイテムのリストのレイアウト設定またはスタイル設定をします。各アイテムは複数のリスト・アイテム・コンポーネントを含むことができ、この場合、リスト・アイテム・コンポーネントはアイテム(行)を満たし、過剰なリスト・アイテム・コンポーネントは後続行に折り返します。これを構成するには、リスト・ビューのlayout
属性をcards
に設定します(デフォルトのレイアウトはrows
であり、リスト内の1つのアイテム当たり1つのリスト・アイテム・コンポーネントが表示されます)。詳細は、「リスト・ビュー・レイアウトの構成」を参照してください。
リスト・ビューによって、次のうち1つを定義できます。
リスト(コレクション)内のアイテム数に基づいてレプリケートされる選択可能アイテム。
リスト・ビューのvar
属性およびvalue
属性を指定することなく子リスト・アイテム・コンポーネントを追加することによって生成される静的アイテム。これらの静的アイテムは必要な数を追加できます。これは、設計時にリストのコンテンツがわかっている場合に便利です。この場合、リストは編集可能ではなく、メニュー・アイテムのセットのように動作します。
リスト・アイテム・コンポーネントは、実行時にスワイプ・ジェスチャーに応答します(「ジェスチャーの有効化」を参照)。
次のタイプのリスト・ビュー・コンポーネントを作成できます。
基本リスト
次の例は、MAF AMXファイルで定義されたlistView
要素を示しています。この定義は、基本コンポーネントに対応しています。
<amx:listView id="listView1" showMoreStrategy="autoScroll" bufferStrategy="viewport"> <amx:listItem id="listItem1"> <amx:outputText id="outputText1" value="ListItem Text"/> </amx:listItem> <amx:listItem id="listItem2"> <amx:outputText id="outputText3" value="ListItem Text"/> </amx:listItem> <amx:listItem id="listItem3"> <amx:outputText id="outputText5" value="ListItem Text"/> </amx:listItem> <amx:listItem id="listItem4"> <amx:outputText id="outputText7" value="This is really long text to test how it is handled"/> </amx:listItem> </amx:listView>
図15-35は、デザインタイムの基本リスト・ビュー・コンポーネントを示しています。
図15-35 デザインタイムの基本リスト・ビュー
次の例は、MAF AMXファイルでのlistView
要素の別の定義を示しています。この定義も基本コンポーネントに対応していますが、このリスト・ビューの値はコレクションによって設定されます。
<amx:listView id="list1" value="#{myBean.listCollection}" var="row" showMoreStrategy="autoScroll" bufferStrategy="viewport"> <amx:listItem actionListener="#{myBean.selectRow}" showLinkIcon="false" id="listItem1"> <amx:outputText value="#{row.name}" id="outputText1"/> </amx:listItem> </amx:listView>
注意:
現在は、リスト・アイテム内の出力テキストに含まれるテキスト文字列が長すぎて1行に収まらない場合、そのテキストは行の端で折り返されません。この動作を回避するには、件名の出力テキスト子コンポーネントのinlineStyle
属性に、"white-space: normal;"
を追加します。
アイコン付きリスト
次の例は、MAF AMXファイルで定義されたlistView
要素を示しています。この定義は、アイコン付きコンポーネントに対応しています。
<amx:listView id="list1" value="#{myBean.listCollection}" var="row" showMoreStrategy="autoScroll" bufferStrategy="viewport"> <amx:listItem id="listItem1"> <amx:tableLayout id="tl1" width="100%"> <amx:rowLayout id="rl1"> <amx:cellFormat id="cf11" width="40px" halign="center"> <amx:image id="image1" source="#{row.image}"/> </amx:cellFormat> <amx:cellFormat id="cf12" width="100%" height="43px"> <amx:outputText id="outputText1" value="#{row.desc}"/> </amx:cellFormat> </amx:rowLayout> </amx:tableLayout> </amx:listItem> </amx:listView>
図15-36は、デザインタイムのアイコンおよびテキスト付きリスト・ビュー・コンポーネントを示しています。
図15-36 デザインタイムのアイコン付きリスト・ビュー
検索付きリスト
区切り付きリスト。このタイプのリストでは、データをグループ化して順序を示すことができます。リスト・ビュー・コンポーネントの属性によって、各区切りの特性が定義されます。属性の詳細は、Oracle Mobile Application Frameworkタグ・リファレンスを参照してください。
MAF AMXでは、次のことを実行できるリスト区切りが提供されています。
そのコンテンツを個別に閉じます。
各区切り内のアイテム数を表示します。
同時に閉じます。
次の例は、MAF AMXファイルで定義されたlistView
要素を示しています。この定義は、折りたたみ可能な区切りおよびアイテム数付きのコンポーネントに対応しています。
<amx:listView id="list1" value="#{bindings.data.collectionModel}" var="row" collapsibleDividers="true" collapsedDividers="#{pageFlowScope.mylistDisclosedDividers}" dividerMode="all" dividerAttribute="type" showDividerCount="true" showMoreStrategy="autoScroll" bufferStrategy="viewport" fetchSize="10"> <amx:listItem> <amx:outputText id="ot1" value="#{row.name}"> </amx:listItem> </amx:listView>
注意:
この種類のリストはデータをソートしないだけでなく、受信するデータはソート済であると想定されるため、区切り付きリスト内のデータはdividerAttribute
でソートする必要があります。
注意:
リスト・ビュー・コンポーネントが編集モードになっている(つまり、そのeditMode
属性が指定されている)場合、区切りは表示されません。
区切りが表示されている場合、エンド・ユーザーは、リスト・ビューのローカライズされたアルファベット順のインデックス・ユーティリティ(dividerMode
属性がfirstLetter
に設定されているリスト・ビュー・コンポーネントで使用可能)を使用して特定の区切りにすばやく移動できます。このユーティリティは、sectionIndex
属性をoff
に設定することで無効化できます。
インデックス・ユーティリティ(indexer)は、インデックス・バーおよびインデックス・アイテムで構成され、次の特性があります。
リストにソートされていないデータまたは重複した区切りが含まれている場合、インデックス・アイテムは、リスト内の最初に出現したものを指します。
使用可能な文字のみがインデックスで強調表示され、その強調表示されたもののみがアクティブになります。これは、データ・モデルでは変更によってトリガーされます(エンド・ユーザーが「次へ」行アイテムをタップしたときなど)。
インデックスの大/小文字は区別されません。
不明な文字は、ハッシュ( # )記号で隠されます。
インデクサ文字は、リストにロードされた行でのみアクティブ化(タップ)できます。たとえば、リスト・ビューで、fetchSize
属性を使用して、文字Cまでの行がロードされた場合、インデクサではAからCまでの文字が有効になります。その他の文字は、行がさらにロードされるとインデクサに表示されます。
表15-5は、インデックス・ユーティリティに定義可能なスタイルを示しています。
表15-5 リスト・ビューのインデックス・スタイル
styleClass名 | 説明 |
---|---|
|
インデックス・バーのスタイルを定義します。 |
|
インデックス・バーの1つのアイテムのスタイルを定義します。 |
|
インデックス・バーの関連する区切りへのリンクを持つアイテムのスタイルを定義します。 |
|
インデックス・バーの文字のスタイルを定義します。 |
|
インデックス・バーの2つの文字間のブレットのスタイルを定義します。 |
|
インデックス・バーのすべての不明な文字を表す文字のスタイルを定義します。 |
区切りが表示されているリスト・ビュー・コンポーネントがスクロールを提供するコンテナとして機能し、スクロール対象となった場合、区切りはビューの上部に固定されます。この場合は、リスト・ビュー・コンポーネントの高さを明示的に設定する必要があります。その他のすべての場合で、リスト・ビュー自体ではスクロールを実行せず、かわりに親コンテナ(パネル・ページなど)のスクロールを使用する場合は、リスト・ビューに高さの制約は設定されず、その子コンポーネントによって高さが決定されます。明確な高さの制約がないことにより、実質的に、アニメーション化された遷移および区切りの固定が無効になります。
凹枠リスト
次の例は、MAF AMXファイルで定義されたlistView
要素を示しています。この定義は、凹枠コンポーネントに対応しています。
<amx:listView id="listView1" styleClass="adfmf-listView-insetList" showMoreStrategy="autoScroll" bufferStrategy="viewport"> <amx:listItem id="listItem1"> <amx:outputText id="outputText1" value="ListItem Text"/> </amx:listItem> <amx:listItem id="listItem2"> <amx:outputText id="outputText3" value="ListItem Text"/> </amx:listItem> <amx:listItem id="listItem3"> <amx:outputText id="outputText5" value="ListItem Text"/> </amx:listItem> <amx:listItem id="listItem4"> <amx:outputText id="outputText7" value="This is really long text to test how it is handled"/> </amx:listItem> </amx:listView>
図15-37は、デザインタイムの凹枠リスト・ビュー・コンポーネントを示しています。
図15-37 デザインタイムの凹枠リスト・ビュー
次の例は、MAF AMXファイルでのlistView
要素の別の定義を示しています。この定義も凹枠コンポーネントに対応していますが、このリスト・ビューの値はコレクションによって設定されます。
<amx:listView id="list1" value="#{CarBean.carCollection}" var="row" styleClass="adfmf-listView-insetList" showMoreStrategy="autoScroll" bufferStrategy="viewport" fetchSize="10"> <amx:listItem id="li1" action="go"> <amx:outputText id="ot1" value="#{row.name}"/> </amx:listItem> </amx:listView>
MAF AMXでのリスト・アイテム・コンポーネントの子の操作および属性の処理には、特定の順序があります。詳細は、「操作と属性の処理順序に関する必知事項」を参照してください。
他のMAF AMXコンポーネントとは異なり、リスト・ビューをMAF AMXページにドラッグ・アンド・ドロップすると、「ListViewギャラリ」というダイアログが表示されます(図15-38を参照)。このダイアログでリスト・ビューに対して特定のレイアウトを選択できます。
図15-38 「ListViewギャラリ」ダイアログ
表15-6は、「ListViewギャラリ」に表示される、サポートされるリスト・フォーマットを示しています。
表15-6 リスト・ビュー・フォーマット
フォーマット | 要素行の値 |
---|---|
シンプル |
|
メイン-サブ・テキスト |
|
開始-終了 |
|
四分円 |
|
選択したリスト・フォーマットの「ListViewギャラリ」に表示されている「バリエーション」(図15-38を参照)は、区切りか先頭イメージのいずれかまたは両方を追加するためのオプションで構成されています。
先頭イメージのあるバリエーションを選択すると、イメージ行が「リスト・アイテム・コンテンツ」表(図15-39を参照)に追加されます。
区切りのあるバリエーションを選択すると、「区切り属性」フィールドがデフォルト値の「区切りなし」ではなく、リスト内の最初の属性にデフォルトで設定され、「区切りモード」フィールドにそのデフォルト値の「すべて」が移入されます。
「ListViewギャラリ」に表示されている「スタイル」オプション(図15-38を参照)では、シェブロンを抑制することも、凹枠スタイル・リストを使用することも、その両方を行うこともできます。
この選択によって、「リスト・ビューの編集」ダイアログ(図15-39を参照)の状態は変更されません。影響するのは、生成されるMAF AMXマークアップのみです。
凹枠リストのあるスタイルを選択すると、生成されたMAF AMXマークアップのlistView
要素にadfmf-listView-insetList
スタイル・クラスが設定されます。
凹枠リストのある「シンプル」フォーマットの例を次に示します。
<amx:listView var="row" value="#{bindings.employees.collectionModel}" fetchSize="#{bindings.employees.rangeSize}" styleClass="adfmf-listView-insetList" id="listView2" showMoreStrategy="autoScroll" bufferStrategy="viewport"> <amx:listItem id="li2"> <amx:outputText value="#{row.employeename}" id="ot3"/> </amx:listItem> </amx:listView>
「ListViewギャラリ」の「説明」ペインは、現在選択されているバリエーションに基づいて更新されます。フォーマットには、メイン・スタイルの簡単な説明が示され、その後に選択したバリエーションの詳細が続きます。4つのメイン・スタイルに、それぞれ4つのバリエーションがあり、表15-7に示す16の固有の説明が提供されています。
表15-7 リスト・ビューのバリエーションとスタイル
|
「ListViewギャラリ」で選択し、「OK」をクリックすると、「リスト・ビューの編集」ウィザードが起動されます。それを使用して、リスト・アイテム子コンポーネントに静的テキストを表示するバインドなしリスト・ビュー・コンポーネント(図15-39を参照)を作成するか、または動的バインディングのデータソースを選択(図15-40を参照)できます。
図15-39 バインドなしリスト・ビューの作成
図15-39に示すダイアログに入力する際は、次の点を考慮してください。
「リスト・データ・コレクション」および「要素タイプ」フィールドは、「データのバインド」チェックボックスが選択解除された状態のときは無効化されています。
左側にあるイメージは、選択されているリスト・ビュー・フォーマットのメイン・コンテンツ要素を反映しています。
「値」列の編集可能セルには、静的テキスト文字列が移入されます(表15-8を参照)。
「リスト・アイテム・コンテンツ」セルにイメージが含まれている場合、「値」
セルはデフォルトで<add path to your image>
文字列になります。この場合、それをイメージのパスに置き換える必要があります。
「リスト・アイテム選択」は選択モードを示します。詳細は、図14-79でこのオプションの説明を参照してください。
リスト・ビューに、データがバインドされているのではなく、リスト・アイテム子コンポーネントが含まれている場合、区切り属性を設定できないため、「区切り属性」と「区切りモード」の両方のフィールドは無効化されています。
表15-8 リスト・ビューの静的テキスト文字列
|
図15-40は、リスト・ビュー・コンポーネントをデータにバインドすることを選択した場合の「リスト・ビューの作成」ダイアログを示しています。
図15-40 バインド済リスト・ビューの作成
図15-40に示すダイアログに入力する際は、次の点を考慮してください。
「データのバインド」チェック・ボックスを選択した場合、「リスト・データ・コレクション」フィールドが有効になります。式ビルダーを使用して「リスト・データ・コレクション」フィールドにEL式を設定した場合、「要素タイプ」フィールドが有効になります。データ・コントロール定義タブからデータ・コントロールを選択すると、「要素タイプ」フィールドは無効なままになります。
データソースを選択するには、「参照」をクリックします。これによって「リスト・ビュー・データ・コレクションの選択」ダイアログが開きます。そこで、データ・コントロール定義を選択するか(図15-41を参照)、ELビルダーを使用して適切なEL式を選択できます(図15-42を参照)。
図15-41 データ・コントロール定義の選択
図15-42 EL式の選択
「要素タイプ」フィールドを使用してデータ・コレクションのタイプを宣言できます(図15-40を参照)。
有効なデータ・コレクションを選択すると、「リスト・アイテム・コンテンツ」表の「値」列が「値バインディング」に変更され、その編集可能なセルにはデータ・コレクションから属性のリストが移入されます。特別な場合の設定の説明は、図15-43を参照してください。
左側のイメージは、選択したリスト・ビュー・フォーマットのメイン・コンテンツ要素を反映し、略図から基礎となる表の名前付き要素へのマッピングを提供します。
リスト・アイテムは、その特定要素に対してどちらが適切であるかによって、出力テキストまたはイメージ・コンポーネントのいずれかとして生成されます。
要素(行)数は選択したリスト・ビュー・フォーマットであらかじめ決まっているため、行を追加または削除することはできません。
要素の順序は変更できません。
「区切り属性」フィールドのデフォルト値は「区切りなし」であり、この場合、「区切りモード」フィールドは無効です。デフォルト以外の値を選択する場合は、「区切りモード」パラメータを指定する必要があります。さらに、「ListViewギャラリ」で区切りを含むバリエーションを選択した場合、デフォルト値はリストの最初の属性に設定されます。
バインド済リスト・ビューを作成するときに考慮する特殊な場合は次のとおりです。
Java Beanメソッドによって汎用性がないリストが戻される場合、図15-40に示すように「要素タイプ」フィールドを使用して、リスト・アイテム・コンテンツを作成する必要があります。
入力されているリスト・データ・コレクション値がコレクションベースではない場合、図15-43に示すように、「値」列が空白の値を持つ「値バインディング」列に置換されます。
図15-43 非コレクションベース値の入力
詳細は、次を参照してください。
Oracle Mobile Application Frameworkタグ・リファレンス
開発コンピュータのjdev_install
/jdeveloper/jdev/extensions/oracle.maf/Samples
ディレクトリ内のPublicSamples.zip
ファイル内にあるMAFサンプル・アプリケーションのCompGalleryおよびUILayoutDemo。これらのサンプルは、様々なタイプのリスト・ビュー・コンポーネントの使用方法と、スタイルを適用してページ・レイアウトを特定のパターンに合せる方法を示しています。
リスト・ビュー・コンポーネントを構成して、任意の長さのリストにデータを表示するには、ユーザー・ジェスチャーによる要求に応じて、リストの下部にデータを追加します。
fetchSize
属性によって、リスト・ビュー・コンポーネントが最初にロードする行数が決定されます。fetchSize
で定義されているよりも多くの使用可能な行がある場合、リスト・ビューでは特定のユーザー・ジェスチャーを待ってから、さらに行をロードして表示します(「リスト・ビューのスクロール方法」を参照)。fetchSize
属性は、ユーザーがさらに行を表示するジェスチャーを実行するたびにロードおよび表示される行数を決定する場合にも使用されます。
fetchSize
属性が-1に設定されている場合は、すべてのレコードの取得と表示が行われるため、ページングも動的スクロール動作も発生しません。
「データ・コントロール」ウィンドウからMAF AMXページにコレクションをドラッグしてリスト・ビュー・コンポーネントが作成されると、fetchSize
属性はデフォルトでPageDef
イテレータのrangeSize
を指すEL式を使用するように設定され、これを変更することはできません。詳細は、次を参照してください。
次の例は、データ・コントロールのtestResults
というコレクションから作成されたlistView
要素を示しています(「MAF AMXページへのデータ・コントロールの追加方法」を参照)。
<amx:listView var="row" value="#{bindings.testResults.collectionModel}" fetchSize="#{bindings.testResults.rangeSize}">
前述の例では、fetchSize
属性はbindings.testResults
のrangeSize
を指しています。次の例は、このMAF AMXページのPageDef
ファイルの行を示しています。このPageDef
ファイルには、testResults
かバインドされるtestResultsIterator
というaccessorIterator
要素が含まれています。
<accessorIterator MasterBinding="Class1Iterator" Binds="testResults" RangeSize="25" DataControl="Class1" BeanClass="mobile.Test" id="testResultsIterator"/>
そのinitialScrollRowKeys
属性を使用して、自己スクロール可能なリスト・ビューの初期スクロール位置を指定できます(つまり、リスト・ビューは独自のスクロールを提供します。詳細は、「リスト・ビューの独自のスクロール」を参照してください)。便利なことに、次の例に示すように、この属性値はselectedRowKeys
属性の値と同じEL式で設定できます。
<amx:listView id="lv1" var="row" value="#{bindings.departments.collectionModel}" fetchSize="25" inlineStyle="height: 200px" selectedRowKeys="#{bindings.departments.collectionModel.selectedRow} selectionListener="#{bindings.departments.collectionModel.makeCurrent}" initialScrollRowKeys="#{bindings.departments.collectionModel.selectedRow}"> <amx:listItem id="li1"> <amx:outputText id="ot1" value="#{row.name} #{row.id}"/> </amx:listItem> </amx:listView>
最初の行セットが表示されるときに、MAF AMXによってスクロール位置が割り当てられるため、指定した行のキーがフェッチされている行の最初のセットの一部であることを確認する必要があります。
詳細は、Oracle Mobile Application Frameworkタグ・リファレンスを参照してください。
リスト・ビュー・コンポーネントの次の属性によってスクロール動作が有効になります。
showMoreStrategy
: 必要な場合にさらに行をロードするためのリスト・ビュー・コンポーネントの計画を定義します。
リスト・ビュー・コンポーネントがその独自のスクロール(「リスト・ビューの独自のスクロール」を参照)を提供し、リスト・ビューが最後までスクロールされたとき、次のように、自動的に属性の値に基づくshowMoreStrategy
が起動されます。
autoLink
: モデルからさらに行を使用できる場合、リスト・ビューには、表示されたリストの下部に「さらに行をロード」リンクが表示されます(図15-44を参照)。
図15-44 リスト・ビューの「さらに行をロード」
リスト・ビューに追加の行をロードして表示するには、エンド・ユーザーがこのリンクをタップする必要があります。
autoScroll
: モデルからさらに行を使用できる場合、リスト・ビューには、表示する追加の行をロードしている間、ロード・インジケータが表示されます。
forceLink
: 「さらに行をロード」リンクが表示されます(図15-44を参照)。エンド・ユーザーがリンクをタップすると、リスト・ビューでは追加の行をロードして表示しようとします。
off
: リスト・ビューでは何のアクションも実行されません。最初にロードされた行のみが表示されます。
bufferStrategy
: 表示された行をバッファリングする、リスト・ビュー・コンポーネントの方法を定義します。
リスト・ビューの独自のスクロール(「リスト・ビューの独自のスクロール」を参照)が許されていて、その高さに制約があるときは、次のように、bufferStrategy属性の値に基づいてレンダリング・エンジンのバッファ内に行が保持されます。
additive
: 新しい行がレンダリング・エンジンのバッファに追加され、すべての行がバッファ内に保持されます。このオプションは、メモリー消費量を考慮する必要のない短いリストに使用できます。
viewport
: 行は、リスト・ビューのビューポート内で表示されるようになった場合にのみ、レンダリング・エンジンのバッファに追加されます。行が表示されなくなると、リスト・ビューのbufferSize
属性に基づいて行がバッファから削除されます。このオプションは、長いリストを表示する場合に、メモリー消費量の削減に役立ちます。
bufferSize
: bufferStrategyがviewportに設定されている場合、bufferSize属性は、行が非表示になる、行のビューポートからの距離(ピクセル単位)を定義します。
詳細は、Oracle Mobile Application Frameworkタグ・リファレンスを参照してください。
デフォルトで、リスト・ビュー・コンポーネントのスクロール動作は、親コンテナによって制御されます(つまり、親コンテナのスクロールがデフォルトで設定されるなどです)。
リスト・ビュー・コンポーネント独自のスクロールが提供されるようにするには、次のいずれかを実行します。
リスト・ビューを、パネル・ページの唯一の非ファセットの子にする。
リスト・ビューに固定の高さを設定する。次に例を示します。
inlineStyle="height: 200px;"
リスト・ビュー・コンポーネントでは、oracle.adfmf.amx.event.RangeChangeEvent
などのイベントを介してサーバー側ページングをサポートしています。
「データ・コントロール」ウィンドウからMAF AMXページにコレクションをドラッグしてリスト・ビュー・コンポーネントが作成されると、リスト・ビュー・コンポーネントはバンディング・イテレータから行を取得します(「ページングおよび動的スクロールの構成」を参照)。バインディング・イテレータは、AttributeIterator
のRangeSize
属性によって定義された単位で、データ・コントロールのコレクションから行を取得します。使用可能なデータがすべて取得されると、RangeChangeEvent
が起動されます。このイベントを捕捉するには、データ・コントロールのプロバイダ・コードにoracle.adfmf.amx.event.RangeChangeListener
を実装して、rangeChange
メソッドを提供する必要があります。このメソッドでは、サーバーからさらにデータをロードして、それをコレクションに追加できます。これらの行がリスト・ビュー・コンポーネントによって表示されるようにするには、AdfmfJavaUtilities
クラスのaddDataControlProviders
メソッドをコールして、新たに追加された行をデータ・コントロール・フレームワークに通知する必要があります。
public class Departments implements RangeChangeListener { public void rangeChange(RangeChangeEvent rce) { List newRows = null; if (rangeChangeEvent.isDataExhausted()) { newRows = loadMoreData(rangeChangeEvent.getFetchSize()); AdfmfJavaUtilities.addDataControlProviders("Departments", rangeChangeEvent.getProviderKey(), rangeChangeEvent.getKeyAttribute(), newRows, newRows.size() > 0); } } ... }
注意:
データ・コントロールのプロバイダ・クラスをインスタンス化する際、サーバーからのデータの初期ロードでは、バインディング・イテレータのRangeSize
属性で定義されている行数と同じ数の行を要求する必要があります。
マネージドBeanを使用してリスト・ビューのモデルを提供している場合、リスト・ビュー・コンポーネントのrangeChangeListener
属性(「イベント・リスナーの使用方法」を参照)では、エンド・ユーザーがさらに行をロードするジェスチャーを実行したときにコールされるJavaハンドラ・メソッドをバインドできます。このメソッドはoracle.adfmf.amx.event.RangeChangeEvent
オブジェクトをパラメータとして使用し、図15-45および図15-46に示すように、「プロパティ」ウィンドウから「プロパティの編集: 範囲変更リスナー」ダイアログを起動すると作成されます。
図15-45 「範囲変更リスナー」属性の編集
図15-46 「プロパティの編集」ダイアログ
ダイアログで「OK」をクリックすると、MAF AMXページのlistView
要素に次の設定が追加されます。
<amx:listView id="listView1" rangeChangeListener="#{pageFlowScope.HRBean.goGet}" >
また、次の例に示すJavaメソッドは、サンプルのHRBean
クラスに追加されます。
public void goGet(RangeChangeEvent rangeChangeEvent) { // Add event code here ... }
注意:
RangeChangeEvent
を使用してサーバー側ページングをサポートしている場合、リスト・ビューのfetchSize
属性は-1に設定できません。
追加の例は、開発コンピュータのjdev_install
/jdeveloper/jdev/extensions/oracle.maf/Samples
ディレクトリ内のPublicSamples.zip
ファイルにあるRangeChangeDemoというMAFサンプル・アプリケーションを参照してください。
リスト・ビューを含む、すべてのスクロール可能なMAF AMX UIコンポーネントは、メモリーが不足した状態でモバイル・デバイスを実行している場合にリソースを節約するよう最適化されています。このようなコンポーネントでは、フリック機能が無効化され、慣性スクロールが機能します(つまり、エンド・ユーザーが画面から指を離した後もコンポーネントがスクロールし続けるようにするため、エンド・ユーザーはコンポーネントを指でフリックできなくなります)。
リスト・ビューのアイテムは再配置できます。この機能は、iOSとAndroidのプラットフォームで類似しており、どちらも各リスト・アイテムの右マージンに沿って整列した再配置アイコンが表示されます。再配置操作は、エンド・ユーザーがハンドルとして再配置アフォーダンスを使用してリスト・アイテムにタッチしてドラッグしたときに開始されます。この操作は、エンド・ユーザーが表示画面から指を離したときに完了します。
注意:
エンド・ユーザーがリスト・アイテム上の他の場所をタッチしてドラッグした場合は、リストが上下にスクロールします。
再配置ドラッグ操作によって、リスト・アイテムがドッキング解除され、エンド・ユーザーがリスト内でリスト・アイテムを上下に移動できるようになります。
そのアイテムを再配置可能にするには、リスト・ビューが静的ではなく編集モードになっており、移動を許容可能になっている必要があります。
次の例は、MAF AMXファイルで定義されたlistView
要素を示しています。この定義によって、リスト・モードを編集可能と読取り専用の間で切り替えることができる「編集」および編集停止ボタンが上部に表示されたリストが提示されます。
<amx:panelPage id="pp1"> <amx:commandButton id="edit" text="Edit" rendered="#{!bindings.inEditMode.inputValue}"> <amx:setPropertyListener id="spl1" from="true" to="#{bindings.inEditMode.inputValue}" type="action"/> </amx:commandButton> <amx:commandButton id="stop" text="Stop Editing" rendered="#{bindings.inEditMode.inputValue}"> <amx:setPropertyListener id="spl2" from="false" to="#{bindings.inEditMode.inputValue}" type="action"/> </amx:commandButton> <amx:listView id="lv1" value="#{bindings.data.collectionModel}" var="row" editMode="#{bindings.inEditMode.inputValue}" moveListener="#{MyBean.Reorder}"> <amx:listItem id="li1"> <amx:outputText id= "ot1" value="#{row.description}"> </amx:listItem> </amx:listView> </amx:panelPage>
詳細は、Oracle Mobile Application Frameworkタグ・リファレンスを参照してください。
リスト・ビュー・コンポーネントは、各行が1つのリスト・アイテム・コンポーネントを含んでいる行のセット(デフォルト)として、または各カードが1つ以上のリスト・アイテム・コンポーネントを含んでいるカードのセットとしてレイアウトできます。
レイアウトを定義するには、リスト・ビューのlayout
属性を使用し、これをrows
またはcards
に設定します。cards
レイアウトを使用する場合は、次の点を考慮してください。
各リスト・アイテム・コンポーネントは、水平に並べられたカードのグループ内のカードとして表示されます。
使用可能なスペースがすべて消費されると、次のカードが新しい行で折り返されます。
リスト・ビュー内でリスト・アイテム・コンポーネント(カード)の水平配置を制御するには、リスト・ビューのhalign
属性をstart
、center
またはend
に設定します。
リスト・ビューの外観を一般的にカスタマイズするには、次の手順を実行します。
スキン内でデフォルトで定義されているカード・サイズをオーバーライドするには、リスト・アイテムのinlineStyle
属性を使用して新しい幅を指定します。詳細は、「コンポーネント属性を使用したスタイルの定義方法」を参照してください。
注意:
値をauto
に設定することも、パーセント単位を使用することもできません。
あるいは、スキニングを使用して.amx-listView-cards .amx-listItem
セレクタから幅をオーバーライドできます(「スキニングに関する必知事項」を参照)。
スキン内でデフォルトで定義されているカードの周囲のスペースをオーバーライドするには、リスト・アイテムのinlineStyle
属性を使用して新しいmargin-top
およびmargin-left
を指定し(「コンポーネント属性を使用したスタイルの定義方法」を参照)、リスト・ビューのcontentStyle
属性を使用して新しいpadding-bottom
およびpadding-right
を指定します。
あるいは、スキニングを使用して、.amx-listView-cards .amx-listItem
セレクタからmargin-top
およびmargin-left
をオーバーライドし、.amx-listView-cards .amx-listView-content
セレクタからpadding-bottom
およびpadding-rightをオーバーライドします(「スキニングに関する必知事項」を参照)。
rows
レイアウトの場合、halign
属性を使用してわずかなリスト・アイテム・コンテンツの配置を変更できます。ただし、この属性を使用しても、視覚的な効果がないことがあります。
カード・レイアウトを備えたリスト・ビュー・コンポーネントが編集モードにあると、レイアウトはrows
モードに切り替わります。
MAF AMXページ・レイアウトを特定のパターンに合せるために、一連の事前定義済スタイルを使用するstyleClass
属性(「UIコンポーネントのスタイル設定」を参照)を介して定義される様々なタイプのリスト・ビュー・コンポーネントおよびスタイルを組み合せて使用できます。
UILayoutDemoという名前のMAFサンプル・アプリケーションは、各コンポーネントのすべてのオプションのスタイルおよびそれに関連するレンダリングを示しています。このアプリケーションは、開発コンピュータのjdev_install
/jdeveloper/jdev/extensions/oracle.maf/Samples
ディレクトリ内のPublicSamples.zip
ファイル内にあります。
次の例は、MAF AMXファイルで定義されたlistView
要素とその子要素を示しています。各outputText
子要素がリスト内でどのようにレイアウトされるかは、listItem
のtableLayout
子要素によって指定されます。かわりに、styleClass
属性を使用してoutputText
要素をレイアウトおよびスタイル設定できます。この属性をadfmf-listItem-startText
に設定すると、出力テキスト・コンポーネントが行の開始(左)側に配置され、そのテキストに黒いフォントが適用されます。この属性をadfmf-listItem-endText
に設定すると、出力テキスト・コンポーネントが行の終了(右)側に配置され、そのテキストに青いフォントが適用されます。右向き矢印が表示されるかどうかは、listItem
要素のshowLinkIcon
属性によって構成されます。この属性のデフォルト値はtrue
であるため、この例にはこの設定は含まれていません。
<amx:listView id="listView1" value="#{myBean.listCollection}" var="row"> <amx:listItem id="listItem1"> <amx:tableLayout id="tl1" width="100%"> <amx:rowLayout id="rl1"> <amx:cellFormat id="cf1s1" width="10px"/> <amx:cellFormat id="cf11" width="60%" height="43px"> <amx:outputText id="outputText11" value="#{row.name}"/> </amx:cellFormat> <amx:cellFormat id="cf1s2" width="10px"/> <amx:cellFormat id="cf12" halign="end" width="40%"> <amx:outputText id="outputText12" value="#{row.status}" styleClass="adfmf-listItem-highlightText"/> </amx:cellFormat> </amx:rowLayout> </amx:tableLayout> </amx:listItem> </amx:listView>
図15-47は、各行の開始(左)側と終了(右)側に異なるスタイルのテキストが追加されたリスト・ビュー・コンポーネントを示しています。行には、テキストの他に各リスト・アイテムを拡張するリンクを表す右向き矢印が配置されています。
図15-47 デザインタイムの開始および終了テキストを持つリスト・ビュー
次の例は、MAF AMXファイルで定義されたlistView
要素とその子要素を示しています。各outputText
子要素がリスト内でどのようにレイアウトされるかは、listItem
のtableLayout
子要素によって指定されます。かわりに、styleClass
属性を使用してoutputText
要素をレイアウトおよびスタイル設定できます。この属性をadfmf-listItem-startText
に設定すると、出力テキスト・コンポーネントが行の開始に配置され、そのテキストに黒いフォントが適用されます。この属性をadfmf-listItem-endText
に設定すると、出力テキスト・コンポーネントが行の終了に配置され、そのテキストに青いフォントが適用されます。それぞれの特定の行に右向き矢印が表示されるかどうかは、listItem
要素のshowLinkIcon
属性によって構成されます。この例では、この属性はすべてのlistItem
要素に対してfalse
に設定されているため、右向き矢印は表示されません。
<amx:listView id="listView1" value="#{myBean.listCollection}" var="row"> <amx:listItem id="listItem1" showLinkIcon="false"> <amx:tableLayout id="tl1" width="100%"> <amx:rowLayout id="rl1"> <amx:cellFormat id="cf1s1" width="10px"/> <amx:cellFormat id="cf11" width="60%" height="43px"> <amx:outputText id="outputText11" value="#{row.name}"/> </amx:cellFormat> <amx:cellFormat id="cf1s2" width="10px"/> <amx:cellFormat id="cf12" halign="end" width="40%"> <amx:outputText id="outputText12" value="#{row.status}" styleClass="adfmf-listItem-highlightText"/> </amx:cellFormat> </amx:rowLayout> </amx:tableLayout> </amx:listItem> </amx:listView>
図15-48は、各行の開始と終了に異なるスタイルのテキストが追加されたリスト・ビュー・コンポーネントを示しています。行には、リンクを表す右向き矢印は含まれていません。
図15-48 デザインタイムの拡張リンクのない開始および終了テキストを持つリスト・ビュー
次の例は、MAF AMXファイルで定義されたlistView
要素とその子要素を示しています。このリスト・ビューには、各行の開始と終了に表示されるテキストに加えて、終了テキストの下に配置されるサブテキストが含まれています。各outputText
子要素がリスト内でどのようにレイアウトされるかは、listItem
のtableLayout
子要素によって指定されます。かわりに、styleClass
属性を使用してoutputText
要素をレイアウトおよびスタイル設定できます。この属性をadfmf-listItem-upperStartText
に設定すると、出力テキスト・コンポーネントが行の左側に配置され、そのテキストに黒いフォントが適用されます。この属性をadfmf-listItem-upperEndText
に設定すると、出力テキスト・コンポーネントが行の右側に配置され、そのテキストに小さいグレー・フォントが適用されます。この属性をadfmf-listItem-captionText
に設定すると、出力テキスト・コンポーネントが、styleClass
属性がadfmf-listItem-upperStartText
に設定されている出力テキスト・コンポーネントの下に配置され、そのテキストに小さいグレー・フォントが適用されます。
<amx:listView id="listView1" value="#{myBean.listCollection}" var="row"> <amx:listItem id="listItem1"> <amx:tableLayout id="tl1" width="100%"> <amx:rowLayout id="rl11"> <amx:cellFormat id="cf1s1" width="10px" rowSpan="2"/> <amx:cellFormat id="cf11" width="60%" height="28px"> <amx:outputText id="outputTexta1" value="#{row.name}"/> </amx:cellFormat> <amx:cellFormat id="cf1s2" width="10px"/> <amx:cellFormat id="cf12" halign="end" width="40%"> <amx:outputText id="outputTexta2" value="#{row.status}" styleClass="adfmf-listItem-highlightText"/> </amx:cellFormat> </amx:rowLayout> <amx:rowLayout id="rl12"> <amx:cellFormat id="cf13" columnSpan="3" width="100%" height="12px"> <amx:outputText id="outputTexta3" value="#{row.desc}" styleClass="adfmf-listItem-captionText"/> </amx:cellFormat> </amx:rowLayout> </amx:tableLayout> </amx:listItem> </amx:listView>
図15-49は、各行の開始と終了に異なるスタイルのテキストが追加され、左側の終了テキストの下にサブテキストが追加されたリスト・ビュー・コンポーネントを示しています。
図15-49 デザインタイムの開始および終了テキストとサブテキストを持つリスト・ビュー
次の例は、MAF AMXファイルで定義されたlistView
要素とその子要素を示しています。このリスト・ビューには、メイン・テキストおよびサブテキストを含む行が移入されます。各outputText
子要素がリスト内でどのようにレイアウトされるかは、listItem
のtableLayout
子要素によって指定されます。かわりに、styleClass
属性を使用してoutputText
要素をレイアウトおよびスタイル設定できます。この属性をadfmf-listItem-mainText
に設定すると、出力テキスト・コンポーネントが行の開始に配置され、そのテキストに大きい黒いフォントが適用されます。この属性をadfmf-listItem-captionText
に設定すると、出力テキスト・コンポーネントが、styleClass
属性がadfmf-listItem-mainText
に設定されている出力テキスト・コンポーネントの下に配置され、そのテキストに小さいグレー・フォントが適用されます。
<amx:listView id="listView1" value="#{myBean.listCollection}" var="row"> <amx:listItem id="listItem1"> <amx:tableLayout id="tla1" width="100%"> <amx:rowLayout id="rla1"> <amx:cellFormat id="cf1s1" width="10px" rowSpan="2"/> <amx:cellFormat id="cfa1" width="100%" height="28px"> <amx:outputText id="outputTexta1" value="#{row.name}"/> </amx:cellFormat> </amx:rowLayout> <amx:rowLayout id="rla2"> <amx:cellFormat id="cfa2" width="100%" height="12px" > <amx:outputText id="outputTexta2" value="#{row.desc}" styleClass="adfmf-listItem-captionText"/> </amx:cellFormat> </amx:rowLayout> </amx:tableLayout> </amx:listItem> </amx:listView>
図15-50は、各行にメイン・テキストとサブテキストとして異なるスタイルのテキストが追加されたリスト・ビュー・コンポーネントを示しています。
図15-50 デザインタイムのメイン・テキストとサブテキストを持つリスト・ビュー
次の例は、MAF AMXファイルで定義されたlistView
要素とその子要素を示しています。このリスト・ビューには、アイコン、メイン・テキストおよびサブテキストを含むセルが移入されます。各outputText
子要素がリスト内でどのようにレイアウトされるかは、listItem
のtableLayout
子要素によって指定されます。かわりに、styleClass
属性を使用してoutputText
要素をレイアウトおよびスタイル設定できます。この属性をadfmf-listItem-mainText
に設定すると、出力テキスト・コンポーネントが行の左側に配置され、そのテキストに大きい黒いフォントが適用されます。この属性をadfmf-listItem-captionText
に設定すると、出力テキスト・コンポーネントが、styleClass
属性がadfmf-listItem-mainText
に設定されている出力テキスト・コンポーネントの下に配置され、そのテキストに小さいグレー・フォントが適用されます。image
要素の位置は、それが囲むcellFormat
によって定義されます。
<amx:listView id="lv1" value="#{myBean.listCollection}" var="row"> <amx:listItem id="li1"> <amx:tableLayout id="tl1" width="100%"> <amx:rowLayout id="rl1"> <amx:cellFormat id="cf1" rowSpan="2" width="40px" halign="center"> <amx:image id="i1" source="#{row.image}"/> </amx:cellFormat> <amx:cellFormat id="cf2" width="100%" height="28px"> <amx:outputText id="ot1" value="#{row.name}"/> </amx:cellFormat> </amx:rowLayout> <amx:rowLayout id="rl2"> <amx:cellFormat id="cf3" width="100%" height="12px"> <amx:outputText id="ot2" value="#{row.desc}" styleClass="adfmf-listItem-captionText"/> </amx:cellFormat> </amx:rowLayout> </amx:tableLayout> </amx:listItem> </amx:listView>
図15-51は、各行に、アイコンおよびメイン・テキストとサブテキストとして異なるスタイルのテキストが追加されたリスト・ビュー・コンポーネントを示しています。
図15-51 デザインタイムのアイコン、メイン・テキストおよびサブテキストを持つリスト・ビュー
次の例は、MAF AMXファイルで定義されたlistView
要素とその子要素を示しています。このリスト・ビューには、各行の開始と終了に表示されるテキストに加えて、各行の両側に配置されている2つの異なるタイプのテキストが含まれています。各outputText
子要素がリスト内でどのようにレイアウトされるかは、listItem
のtableLayout
子要素によって指定されます。かわりに、styleClass
属性を使用してoutputText
要素をレイアウトおよびスタイル設定できます。この属性をadfmf-listItem-upperStartText
に設定すると、出力テキスト・コンポーネントが行の左上隅に配置され、そのテキストに大きい黒いフォントが適用されます。この属性をadfmf-listItem-upperEndText
に設定すると、出力テキスト・コンポーネントが行の右上隅に配置され、そのテキストに大きいグレー・フォントが適用されます。この属性をadfmf-listItem-lowerStartText
に設定すると、出力テキスト・コンポーネントが行の左下隅に配置され、そのテキストに小さいグレー・フォントが適用されます。この属性をadfmf-listItem-lowerEndText
に設定すると、出力テキスト・コンポーネントが行の右下隅に配置され、そのテキストに小さいグレー・フォントが適用されます。右向き矢印が表示されるかどうかは、listItem
要素のshowLinkIcon
属性によって構成されます。この属性のデフォルト値はtrue
であるため、この例にはこの設定は含まれていません。
<amx:listView id="lv1" value="#{myBean.listCollection}" var="row"> <amx:listItem id="li1"> <amx:tableLayout id="tl1" width="100%"> <amx:rowLayout id="rl1"> <amx:cellFormat id="cf1" width="10px" rowSpan="2"/> <amx:cellFormat id="cf2" width="60%" height="28px"> <amx:outputText id="ot1" value="#{row.name}"/> </amx:cellFormat> <amx:cellFormat id="cf3" width="10px" rowSpan="2"/> <amx:cellFormat id="cf4" width="40%" halign="end"> <amx:outputText id="ot2" value="#{row.status}" styleClass="adfmf-listItem-highlightText"/> </amx:cellFormat> </amx:rowLayout> <amx:rowLayout id="rla2"> <amx:cellFormat id="cf5" width="60%" height="12px"> <amx:outputText id="ot3" value="#{row.desc}" styleClass="adfmf-listItem-captionText"/> </amx:cellFormat> <amx:cellFormat id="cf6" width="40%" halign="end"> <amx:outputText id="ot4" value="#{row.priority}" styleClass="adfmf-listItem-captionText"/> </amx:cellFormat> </amx:rowLayout> </amx:tableLayout> </amx:listItem> </amx:listView>
図15-52は、各行の開始と終了に2つのタイプの異なるスタイルのテキストが追加されたリスト・ビュー・コンポーネントを示しています。行には、テキストの他に各リスト・アイテムを拡張するリンクを表す右向き矢印が配置されています。
図15-52 デザインタイムの4つのタイプのテキストを持つリスト・ビュー
次の例は、MAF AMXファイルで定義されたlistView
要素とその子要素を示しています。このリスト・ビューには、各行の開始と終了に表示されるテキストに加えて、各行の両側に配置されている2つの異なるタイプのテキストが含まれています。各outputText
子要素がリスト内でどのようにレイアウトされるかは、listItem
のtableLayout
子要素によって指定されます。かわりに、styleClass
属性を使用してoutputText
要素をレイアウトおよびスタイル設定できます。この属性をadfmf-listItem-upperStartText
に設定すると、出力テキスト・コンポーネントが行の左上隅に配置され、そのテキストに大きい黒いフォントが適用されます。この属性をadfmf-listItem-upperEndText
に設定すると、出力テキスト・コンポーネントが行の右上隅に配置され、そのテキストに大きいグレー・フォントが適用されます。この属性をadfmf-listItem-lowerStartTextNoChevron
に設定すると、出力テキスト・コンポーネントが行の左下隅に配置され、そのテキストに小さいグレー・フォントが適用されます。この属性をadfmf-listItem-lowerEndTextNoChevron
に設定すると、出力テキスト・コンポーネントが行の右下隅に配置され、そのテキストに小さいグレー・フォントが適用されます。それぞれの特定の行に右向き矢印が表示されるかどうかは、listItem
要素のshowLinkIcon
属性によって構成されます。この例では、この属性はすべてのlistItem
要素に対してfalse
に設定されているため、右向き矢印は表示されません。
<amx:listView id="lv1" value="#{myBean.listCollection}" var="row"> <amx:listItem id="li1" showLinkIcon="false"> <amx:tableLayout id="tl1" width="100%"> <amx:rowLayout id="rl1"> <amx:cellFormat id="cf1" width="10px" rowSpan="2"/> <amx:cellFormat id="cf2" width="60%" height="28px"> <amx:outputText id="ot1" value="#{row.name}"/> </amx:cellFormat> <amx:cellFormat id="cf3" width="10px" rowSpan="2"/> <amx:cellFormat id="cf4" width="40%" halign="end"> <amx:outputText id="ot2" value="#{row.status}" styleClass="adfmf-listItem-highlightText"/> </amx:cellFormat> </amx:rowLayout> <amx:rowLayout id="rl2"> <amx:cellFormat id="cf5" width="60%" height="12px"> <amx:outputText id="ot3" value="#{row.desc}" styleClass="adfmf-listItem-captionText"/> </amx:cellFormat> <amx:cellFormat id="cf6" width="40%" halign="end"> <amx:outputText id="ot4" value="#{row.priority}" styleClass="adfmf-listItem-captionText"/> </amx:cellFormat> </amx:rowLayout> </amx:tableLayout> </amx:listItem> </amx:listView>
図15-53は、各行の開始と終了に2つのタイプの異なるスタイルのテキストが追加されたリスト・ビュー・コンポーネントを示しています。
図15-53 デザインタイムの拡張リンクのない4つのタイプのテキストを持つリスト・ビュー
モデルからではなくハードコード化された値によって移入されるリスト・ビュー・コンポーネントを作成する場合、このリスト・ビューは静的になり、デザインタイムに設定するそのプロパティのいくつか(たとえばdividerAttribute
、dividerMode
、fetchSize
、moveListener
)が実行時に無視されるようになります。
MAF AMXでは、リスト・ビュー・コンポーネントのvalue
属性が設定されていない場合、そのコンポーネントを静的であるとみなします。そのようなリストは編集できません(つまり、リストのeditMode
属性を指定できません)。
カルーセル(carousel
)コンポーネントは、回転カルーセルにイメージなどの他のコンポーネントを表示するために使用します。エンド・ユーザーは、スライダを使用するか、別のイメージを正面にドラッグすることでアクティブなアイテムを変更できます。
カルーセル・コンポーネントにはカルーセル・アイテム(carouselItem
)コンポーネントが含まれており、text
属性によって表されるそのテキストは、それがそのカルーセルのアクティブなアイテムであるときに表示されます。通常、カルーセル・アイテムにはイメージ・コンポーネントが含まれていますが、他のコンポーネントを使用することもできます。たとえば、イメージを囲む子としてリンクを使用することもできます。表示するオブジェクトごとにカルーセル・アイテム・コンポーネントを作成し、これらのコンポーネントを個々のオブジェクトにバインドするかわりに、カルーセル・コンポーネントを完全なコレクションにバインドします。その後、コンポーネントは各アイテムに値をスタンプすることで、1つのカルーセル・アイテム・コンポーネントを繰り返しレンダリングします。各アイテムがスタンプされると、現在のアイテムのデータが、EL式でカルーセル・コンポーネントのvar
属性を使用して特定可能なプロパティにコピーされます。カルーセルのレンダリングが完了したら、このプロパティは削除されるか前の値に戻ります。カルーセル・コンポーネントにはnodeStamp
というファセットが含まれており、これは、各アイテムのテキストと短い説明の両方を表示するために使用されるカルーセル・アイテムのホルダーであり、各アイテムに表示されるイメージに対する親コンポーネントでもあります。
カルーセル・アイテムは、その子コンポーネントのみ拡大します。単一のイメージ・コンポーネントをカルーセル・アイテムの内部に配置する場合、イメージはそのアイテムに割り当てられた四角形に合せて拡大されます(エンド・ユーザーがカルーセルをスピンすると、これらのサイズが縮小または拡大されます)。
ヒント:
アプリケーションのパフォーマンスの低下を最小限に抑えるは、重いコンポーネントを子として使用しないようにします。複雑な構造にすると、いくつかのカルーセル・アイテム・スタンプが同時に表示されるため、その影響が倍増します。
デフォルトでは、カルーセルは水平に表示されます。水平方向のカルーセル内にあるオブジェクトは中央に垂直に配置され、カルーセル自体はコンテナの中心に水平に配置されます。参照ローロデックスが必要な場合は、垂直に表示されるようにカルーセルを構成できます。デフォルトでは、垂直方向のカルーセル内にあるオブジェクトは中心に水平に配置され、カルーセル自体は中央に垂直に配置されます。カルーセルのorientation
属性を使用してこの配置を変更できます。
前後のイメージを部分的に表示するかわりに、displayItems
属性を使用して、フィルムストリップ・デザインまたは循環デザインでイメージを表示するようにカルーセルを構成することができます。
デフォルトでは、カルーセルが循環モードで表示するように構成されている場合、エンド・ユーザーが補助アイテム(現在、中央に表示されていないアイテム)にポインタを置くと、そのアイテムが枠で囲まれ選択可能であることが示されます。auxiliaryPopOut
属性を使用すると、アイテムが移動し、最大サイズで表示されるように、カルーセルを構成できます。
JDeveloperでは、「カルーセル」は「コンポーネント」ウィンドウの「データ・ビュー」の下にあります(図15-54を参照)。
図15-54 「コンポーネント」ウィンドウの「カルーセル」
カルーセル・コンポーネントを作成するには、表示するイメージを含むデータ・モデルを作成してから、カルーセルをそのモデルにバインドし、カルーセル・アイテム・コンポーネントをカルーセルのnodeStamp
ファセットに挿入します。最後に、イメージ・コンポーネント(またはイメージ・コンポーネントを含むその他のコンポーネント)をカルーセル・アイテム・コンポーネントに子として挿入します。
次の例は、MAF AMXファイルのcarousel
要素定義を示しています。carousel
要素を定義するときは、carousel
要素のnodeStamp
ファセット内にcarouselItem
要素を配置する必要があります。
<amx:carousel id="carousel1" value="#{bindings.products.collectionModel}" var="item" auxiliaryOffset="0.9" auxiliaryPopOut="hover" auxiliaryScale="0.8" controlArea="full" displayItems="circular" halign="center" valign="middle" disabled="false" shortDesc="spin" orientation="horizontal" styleClass="AMXStretchWidth" inlineStyle="height:250px;background-color:#EFEFEF;"> <amx:facet name="nodeStamp"> <amx:carouselItem id="item1" text="#{item.name}" shortDesc="Product: #{item.name}"> <amx:commandLink id="link1" action="goto-productDetails" actionListener="#{someMethod()}"> <amx:image id="image1" styleClass="prod-thumb" source="images/img-big-#{item.uid}.png"/> <amx:setPropertyListener id="spl1" from="#{item}" to="#{pageFlowScope.product}" type="action"/> </amx:commandLink> </amx:carouselItem> </amx:facet> </amx:carousel>
カルーセル・コンポーネントでは、CollectionModel
クラスを使用して基礎となるコレクションのデータにアクセスします。java.util.List
やarray
などの他のモデル・クラスを使用することもできますが、その場合、カルーセルによってインスタンスが自動的にCollectionModel
クラスに変換されますが、機能は追加されません。
スライダを使用することで、エンド・ユーザーはカルーセル・コレクションを移動できます。通常、スライダ上のサムにはオブジェクトの総数のうちの現在のオブジェクト番号が表示されます。オブジェクトの総数が大きすぎて計算できない場合、スライダ上のサムには現在のオブジェクト番号のみ表示されます。
詳細および例は、次を参照してください。
Oracle Mobile Application Frameworkタグ・リファレンス
開発コンピュータ上のjdev_install
/jdeveloper/jdev/extensions/oracle.maf/Samples
ディレクトリ内のPublicSamples.zip
ファイル内にあるMAFサンプル・アプリケーションのCompGallery
フィルム・ストリップ(filmStrip
)は、一連のグループ(ページ)間に分散されたデータを、垂直または水平ストリップ形式で視覚化するコンテナです。グループに含まれるディスプレイ・アイテム(filmStripItem
)を表すUIコンポーネントは、同じサイズおよびタイプである必要があり、一度に1つのグループのみを表示できます。エンド・ユーザーは、フィルム・ストリップのページを移動でき、アイテムを選択してタップすることでアクションを生成できます。
JDeveloperでは、フィルム・ストリップは「コンポーネント」ウィンドウの「データ・ビュー」の下にあります(図15-55を参照)。
図15-55 「コンポーネント」ウィンドウのフィルム・ストリップ
次の例は、MAF AMXファイルのfilmStrip
要素定義を示しています。
<amx:filmStrip id="fs1" var="item" value="#{bindings.contacts.collectionModel}" rendered="#{pageFlowScope.pRendered}" styleClass="#{pageFlowScope.pStyleClass}" inlineStyle="#{pageFlowScope.pInlineStyle}" shortDesc="#{pageFlowScope.pShortDesc}" halign="#{pageFlowScope.pFsHalign}" valign="#{pageFlowScope.pFsValign}" itemsPerPage="#{pageFlowScope.pMaxItems}" orientation="#{pageFlowScope.pOrientation}" pageControlPosition="#{pageFlowScope.pageControlPosition}"> <amx:filmStripItem id="fsi1" inlineStyle="text-align:center; width:200px;"> <amx:commandLink id="ciLink" action="details" shortDesc="Navigate to details"> <amx:image id="ciImage" source="images/people/#{item.first}.png"/> <amx:setPropertyListener id="spl1" from="#{item.rowKey}" to="#{pageFlowScope.currentContact}" type="action"/> <amx:setPropertyListener id="spl2" from="#{item.first}" to="#{pageFlowScope.currentContactFirst}" type="action"/> <amx:setPropertyListener id="spl3" from="#{item.last}" to="#{pageFlowScope.currentContactLast}" type="action"/> </amx:commandLink> </amx:filmStripItem> </amx:filmStrip>
詳細および例は、次を参照してください。
Oracle Mobile Application Frameworkタグ・リファレンス
開発コンピュータ上のjdev_install
/jdeveloper/jdev/extensions/oracle.maf/Samples
ディレクトリ内のPublicSamples.zip
ファイル内にあるMAFサンプル・アプリケーションのCompGallery
垂直に配置されたフィルム・ストリップでは、ディスプレイ・アイテムは上から下に配置されます。テキストの方向に応じて、ページ制御は次のように配置されます。
テキストの方向が左から右の場合、ページ制御は右側に置かれます。
テキストの方向が右から左の場合、ページ制御は左側に置かれます。
水平に配置されたフィルム・ストリップでは、テキストの方向モードを反映する必要があり、左から右モードでは最初のアイテムが左に置かれ、右から左モードでは最初のアイテムは右に置かれます。どちらの場合でも、ページ・コントロールは一番下にあります。
フィルム・ストリップ・コンポーネントのpageControlPosition
属性を使用すると、ページ・コントロールの場所をフィルム・ストリップ・アイテムの内側または外側のいずれかに構成できます。
dottedPageControl
コンポーネントが構成されている場合は、図15-56で示すように、フィルム・ストリップ・ページ間の移動用のオーバーフロー・ドット付きページ・コントロールを表示できます。次の例では、MAF AMXファイル内で構成されているdottedPageControl
コンポーネントとともにFilm Strip要素を示します。<amx:filmStrip> <amx:filmStripItem/> <amx:facet name="pageControl"> <amx:dottedPageControl id="pc1" dotsPerGroup="10" lastGroupBehavior="remaining|full" displayArrowLabels="none|inside|outside"/> </amx:facet> </amx:filmStrip>
図15-56 ドット付きページ・コントロール・コンポーネント
フィルム・ストリップ・コンポーネントのナビゲーションは、デック(「デック・コンポーネントの使用方法」を参照)およびパネル・スプリッタ・コンポーネント(「パネル・スプリッタ・コンポーネントの使用方法」を参照)と似ています。一度に1つのページが表示され、ページIDまたは番号を選択するとページの変更がトリガーされます。
子フィルム・ストリップ・アイテム・コンポーネントは、他のMAF AMXページに移動するための使用は想定されていないため、action
属性をサポートしていません。必要な場合は、ネストされているコマンド・リンク・コンポーネントを介してナビゲーションを有効化できます。
該当するコンポーネントが存在しない場合や自身でHTMLを使用してレイアウトする必要がある場合は、Verbatim (verbatim
)操作を使用して独自のHTMLをページに挿入できます。
JDeveloperでは、「Verbatim」は、「コンポーネント」ウィンドウの「一般コントロール」の下にあります(図15-59を参照)。
図15-57 「コンポーネント」ウィンドウの「Verbatim」
詳細および例は、次を参照してください。
Oracle Mobile Application Frameworkタグ・リファレンス
開発コンピュータ上のjdev_install
/jdeveloper/jdev/extensions/oracle.maf/Samples
ディレクトリ内のPublicSamples.zip
ファイル内にあるMAFサンプル・アプリケーションのCompGallery
JavaScriptを直接Verbatimコンテンツ(amx:verbatim
要素内)に挿入することは、現在サポートされているプラットフォームの今後のバージョンまたはMAFが今後サポートする可能性のあるその他のプラットフォームで正しく実行されない可能性があるため推奨されていません。かわりに、maf-feature.xml
ファイルにある既存のadfmf:include
要素を介してJavaScriptおよびCSS包含を実行する必要があり、これにより、MAF AMXアプリケーション機能の起動時にスクリプトが確実にページに挿入されます。
さらに、VerbatimコンポーネントでのJavaScriptの使用は、AMXページからサーバーへのAJAXコールがサポートされていないために影響を受けます。これは、セキュリティ・アーキテクチャによるもので、これによってMAF AMXページをホストするブラウザが、そのリソースを取得するためにセキュア・サーバーに接続するために必要なセキュリティ情報に対してアクセス権を持たないことが保証されます。かわりに、サーバーとの通信は、埋込みJavaコード層から発生する必要があります。
出力HTML (outputHtml
)コンポーネントでは、HTMLコンテンツをMAF AMXページに表示するために、ELでバインドされたプロパティまたはメソッドから動的および安全に取得できます。出力HTMLコンポーネントはVerbatimコンポーネント(「Verbatimコンポーネントの使用方法」を参照)と同様に動作し、JavaScriptおよびAJAXの使用に関して同じ制限が適用されます(「JavaScriptおよびAJAXのVerbatimコンポーネントでの使用に関する必知事項」を参照)。
JDeveloperでは、出力HTMLは、「コンポーネント」ウィンドウの「一般コントロール」の下にあります(図15-58を参照)。
図15-58 「コンポーネント」ウィンドウの出力HTML
次の例は、MAF AMXファイルのoutputHtml
要素定義を示しています。value
属性は、文字列プロパティに対してELバインディングを提供し、これは、MAF AMXページの最終レンダリングのoutputHTML
として表示されるHTMLコンテンツを取得するために使用されます。
<amx:tableLayout id="t1" width="100%"> <amx:rowLayout id="r1"> <amx:cellFormat id="cf1" width="100%"> <amx:outputHtml id="ReceiptView" value="#{pageFlowScope.purchaseBean.htmlReceiptView}"/> </amx:cellFormat> </amx:rowLayout> <amx:rowLayout id="r2"> <amx:cellFormat id="cf2" width="100%"> <amx:outputHtml id="CheckView" value="#{pageFlowScope.purchaseBean.htmlCheckView}"/> </amx:cellFormat> </amx:rowLayout> </amx:tableLayout>
次の例は、前の例に示したHTMLの出力コンポーネントにHTMLを提供するMyPurchaseBean
というJava Beanからのコードを示しています。
// The property accessor that gets the receipt view HTML public String getHtmlReceiptView() { // Perform some URL remote call to get the HTML to be // inserted as a view of the Receipt and return that value return obtainReceiptHTMLFromServer(); } // The property accessor that gets the check view HTML public String getHtmlCheckView() { // Perform some URL remote call to get the HTML to be // inserted as a view of the Check and return that value return obtainCheckHTMLFromServer(); }
出力HTMLコンポーネントはそのHTMLコンテンツをリモート・ソースから直接ダウンロードするのではなく、Java Beanプロパティから取得するため、動的に提供されるHTMLの取得または生成をコーディングする場合は、既存のMAFセキュリティ機能を使用することを検討してください。詳細は、「MAFアプリケーションの保護」および「カスタムHTMLコンポーネントからのインジェクション攻撃リスクについて」を参照してください。さらに、提供されるHTMLが信頼できるソースからのもので、脅威がないことを確認します。
詳細および例は、次を参照してください。
Oracle Mobile Application Frameworkタグ・リファレンス
開発コンピュータ上のjdev_install
/jdeveloper/jdev/extensions/oracle.maf/Samples
ディレクトリ内のPublicSamples.zip
ファイル内にあるMAFサンプル・アプリケーションのCompGallery
イテレータ(iterator
)操作を使用して、同じ種類のデータを持つ任意の数のアイテムをスタンプします。これによりデータを繰り返し処理して各要素のUIを作成できます。
JDeveloperでは、「イテレータ」は「コンポーネント」ウィンドウの「データ・ビュー」の下にあります(図15-59を参照)。
図15-59 「コンポーネント」ウィンドウの「イテレータ」
詳細は、Oracle Mobile Application Frameworkタグ・リファレンスを参照してください。
リフレッシュ・コンテナ(refreshContainer
)コンポーネントには、エンド・ユーザーのプルダウン・ジェスチャーによってステータス・インジケータが表示され、リフレッシュできるコンテンツが格納されます。
プルダウン・ジェスチャーが解放されるか、またはそのしきい値に到達したときにコンテンツの更新が開始され、リスト・アイテムのインスタンスなどのコンテンツがリフレッシュされるまでステータス・インジケータが変化します。
つまり、リフレッシュ・コンテナ・コンポーネントでは、リフレッシュをジェスチャーとして公開でき、MAF AMXページにリフレッシュ・ボタンを追加する必要がなくなります。エンド・ユーザーにとって望ましくないスクロールを発生させることになるため、リフレッシュ・コンテナをスクロール可能な親コンポーネント内で配置しないように注意してください。そのかわりに、リフレッシュ・コンテナの内側にリスト・ビューなどのスクロール可能なコンポーネントを配置できます。エンド・ユーザーがリフレッシュ・コンテナ内の任意の場所でプルダウン・ジェスチャーを実行すると、MAF AMXにより、リフレッシュ・コンテナとエンド・ユーザーの指の間で、その上にスクロールされているUIコンポーネントがないか確認されます。その上にスクロールされているコンポーネントがない場合は、エンド・ユーザーが通常どおりにコンテンツをスクロールできるように、リフレッシュ・コンテナはジェスチャーを無視します。すべてのコンポーネントがその上にスクロールされている場合は、リフレッシュ・コンテナは、エンド・ユーザーがコンテンツをプルダウンすることを許し、以前非表示にされた情報ポケットがリフレッシュ・コンテナの上に表示されます。必要なしきい値(スキンに指定された高さ)に到達する前に指が離された場合は、そのポケットは再び非表示になります。エンド・ユーザーがそのしきい値を超えて指を下にドラッグした場合は、アクション・イベントが発生してアプリケーションは操作を実行でき、データがリフレッシュされます。このポケットは、処理が完了するか、またはリフレッシュ・コンテナのオプションのrefreshCompleteExpression
属性が指定されていれば、データの変更イベントが発生するまで、開いたままです。
JDeveloperでは、リフレッシュ・コンテナは「コンポーネント」ウィンドウの「データ・ビュー」の下にあります。
図15-60 「コンポーネント」ウィンドウ内のリフレッシュ・コンテナ
次の例は、MAF AMXファイルのrefreshContainer
要素の定義を示しています。このコンポーネントでは、「リスト・ビュー」のコンテンツがリフレッシュされます。pullText
、busyText
、subText
の各属性は、アクティブ化されたリフレッシュ・コンテナの様々な段階で表示されるテキストを定義します。
<amx:refreshContainer id="rc1" refreshDesc="#{pageFlowScope.componentProperties.refreshDesc}" pullText="#{pageFlowScope.componentProperties.pullText}" busyText="#{pageFlowScope.componentProperties.busyText}" subText="#{pageFlowScope.componentProperties.subText}" actionListener="#{PropertyBean.RefreshActionHandler}"> <amx:setPropertyListener type="action" from="Last updated: Recently" to="#{pageFlowScope.componentProperties.subText}"/> <amx:listView id="listView1" var="row" value="#{bindings.contacts.collectionModel}" bufferStrategy="viewport" collapsibleDividers="true" dividerAttribute="last" dividerMode="firstLetter" rendered="#{pageFlowScope.componentProperties.rendered}" showDividerCount="true" showMoreStrategy="autoScroll"> <amx:listItem id="listItem1" action="details"> <amx:outputText id="outputText1" value="#{row.first} #{row.last}"/> <amx:setPropertyListener from="#{row.rowKey}" to="#{pageFlowScope.currentContact}" type="action"/> <amx:setPropertyListener from="#{row.first}" to="#{pageFlowScope.currentContactFirst}" type="action"/> <amx:setPropertyListener from="#{row.last}" to="#{pageFlowScope.currentContactLast}" type="action"/> <amx:setPropertyListener from="#{row.address}" to="#{pageFlowScope.currentContactAddress}" type="action"/> <amx:setPropertyListener from="#{row.city}" to="#{pageFlowScope.currentContactCity}" type="action"/> <amx:setPropertyListener from="#{row.state}" to="#{pageFlowScope.currentContactState}" type="action"/> <amx:setPropertyListener from="#{row.zip}" to="#{pageFlowScope.currentContactZip}" type="action"/> <amx:setPropertyListener from="#{row.phone}" to="#{pageFlowScope.currentContactPhone}" type="action"/> <amx:setPropertyListener from="#{row.mobile}" to="#{pageFlowScope.currentContactMobile}" type="action"/> </amx:listItem> </amx:listView> </amx:refreshContainer>
詳細および例は、次を参照してください。
Oracle Mobile Application Frameworkタグ・リファレンス
開発コンピュータ上のjdev_install
/jdeveloper/jdev/extensions/oracle.maf/Samples
ディレクトリ内のPublicSamples.zip
ファイル内にあるMAFサンプル・アプリケーションのCompGallery
バンドルのロード(loadBundle
)操作によって、ページ上のMAF AMX UIコンポーネントにローカライズ済テキストを提供するリソース・バンドルを指定できます。詳細は、「UIコンポーネントのローカライズ」を参照してください。
JDeveloperでは、「バンドルのロード」は「コンポーネント」ウィンドウの「操作」の下にあります(図15-61を参照)。
図15-61 「コンポーネント」ウィンドウの「バンドルのロード」
MAF AMXファイル内で、loadBundle
要素をview
要素の子として宣言します。
詳細は、Oracle Mobile Application Frameworkタグ・リファレンスを参照してください。
アクション・リスナー(actionListener
)コンポーネントにより、親コンポーネントが使用するタイプに基づいてELを介して宣言でコマンドを呼び出すことができます。
アクション・リスナー・コンポーネントを使用する主な理由は、親コンポーネントにジェスチャー対応アクションを追加すること、およびタップなどの単一ジェスチャーに対して複数の操作を実行できるためです。詳細は、「アクション・リスナー・コンポーネントと属性間の相違点に関する必知事項」を参照してください。
JDeveloperでは、「アクション・リスナー」コンポーネントは「コンポーネント」ウィンドウの「操作」→「リスナー」の下にあります(図15-62を参照)。
図15-62 「コンポーネント」ウィンドウの「アクション・リスナー」
0個以上のアクション・リスナー・コンポーネントを、任意のコマンド・コンポーネント(ボタン、リンク、リスト・アイテム、フィルム・ストリップ・アイテム)の子として追加できます。アクション・リスナー・コンポーネントのtype
属性は、ActionEvent
を作動させるジェスチャー(swipeLeft
、swipeRight
、tapHold
など)を定義します。
詳細は、次を参照してください。
Oracle Mobile Application Frameworkタグ・リファレンス
プロパティ・リスナーの設定(setPropertyListener
)コンポーネントによって、コンポーネントでのエンド・ユーザー・アクションを受けて、1つの場所(コンポーネントのfrom
属性で定義)から別の場所(コンポーネントのto
属性で定義)に宣言的に値をコピーできるため、同じ結果を得るためにJavaコードを記述する必要がありません。
JDeveloperでは、「プロパティ・リスナーの設定」コンポーネントは「コンポーネント」ウィンドウの「操作」→「リスナー」の下にあります(図15-63を参照)。
図15-63 「コンポーネント」ウィンドウの「プロパティ・リスナーの設定」
次の例は、MAF AMXファイルのsetPropertyListener
要素定義を示しています。
<amx:listView value="#{bindings.products.collectionModel}" var="row" id="lv1"> <amx:listItem id="li1" action="details"> <amx:outputText value="#{row.name}" id="ot1" /> <amx:setPropertyListener id="spl1" from="#{row}" to="#{pageFlowScope.product}" type="action"/> </amx:listItem> </amx:listView>
0個以上のプロパティ・リスナーの設定コンポーネントを、任意のコマンド・コンポーネント(ボタン、リンク、リスト・アイテム、フィルム・ストリップ・アイテムおよびデータ視覚化コンポーネントのサブセットとその子コンポーネント)の子として追加できます。プロパティ・リスナーの設定コンポーネントのtype
属性は、swipeLeft
、swipeRight
、tapHold
などのジェスチャーのいずれによってActionEvent
が起動するかを定義します。
詳細は、次を参照してください。
Oracle Mobile Application Frameworkタグ・リファレンス
クライアント・リスナー(clientListener
)コンポーネントを使用すると、特定のイベント・タイプの起動時に実行されるJavaScriptリスナー・スクリプトを宣言的に登録できます。
ナビゲーション・ドラッグ動作やポップアップ表示動作など、既存の動作コンポーネントにはスクリプトが不要なものもあるため、クライアント・リスナー・コンポーネントを使用する前に、このようなコンポーネントがMAF AMXに含まれているかどうかを確認する必要があります。
JDeveloperでは、「クライアント・リスナー」コンポーネントは「コンポーネント」ウィンドウの「操作」→「リスナー」の下にあります(図15-64を参照)。
図15-64 「コンポーネント」ウィンドウの「クライアント・リスナー」
次の例は、MAF AMXファイルのclientListener
要素定義を示しています。両方の属性が必要で、次のように指定されている必要があります。
method
: 指定タイプのイベントでトリガーされると起動する、クライアント側のJavaScriptメソッド名を定義します。
type
: リスニング対象のクライアント側コンポーネント・イベントのタイプを定義します。必ずしもすべてのイベント・タイプがすべてのコンポーネントに存在するわけではなく、すべてのイベントがプラットフォーム間または同じプラットフォームのバージョン間で常に動作しているわけではありません。イベントの例としては、action
(親コンポーネントがボタンの場合)、valueChange
(親コンポーネントが入力テキストの場合)などがあります。親コンポーネントによっては、touchstart
、touchend
、tap
、taphold
など、いくつかのDOMイベントを使用できる場合があります。また、ビュー・コンポーネントのshowpagecomplete
、mafviewvisible
、mafviewhidden
、amxnavigatestart
、amxnavigateend
(これらのイベントの詳細は、「デバイス・プロパティに関する必知事項」を参照)など、特別なDOMイベントを持つコンポーネントもあります。
type
属性は初期宣言のELはサポートしていますが、そのEL値への変更はサポートしていません(つまり、親コンポーネントを再レンダリングするアクションが実行されないかぎり、式に関連付けられた値は変更できません)。
<amx:view xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:amx="http://xmlns.oracle.com/adf/mf/amx" xmlns:dvtm="http://xmlns.oracle.com/adf/mf/amx/dvt"> <amx:clientListener type="showpagecomplete" method="handleClientListenerBlue"/> <amx:clientListener type="mafviewvisible" method="handleClientListenerBlue"/> <amx:clientListener type="mafviewhidden" method="handleClientListenerBlue"/> <amx:clientListener type="amxnavigatestart" method="handleClientListenerBlue"/> <amx:clientListener type="amxnavigateend" method="handleClientListenerBlue"/> <amx:panelPage id="pp1"> <amx:facet name="header"> <amx:outputText id="header" value="clientListener"/> </amx:facet> <amx:facet name="primary"> <amx:commandButton id="back" action="__back" text="Back"/> </amx:facet> <amx:facet name="secondary"> <amx:commandButton id="props" text="Properties" action="properties"/> </amx:facet> <amx:commandButton id="button1" text="Click Me"> <amx:clientListener type="#{bindings.pType}" method="#{bindings.pMethod}"/> </amx:commandButton> <amx:verbatim id="v1"><![CDATA[ <script type="text/javascript"> function handleClientListenerGray(clientEvent) { _handleClientListener(clientEvent, "gray"); } function handleClientListenerBlue(clientEvent) { _handleClientListener(clientEvent, "blue"); } function handleClientListenerOrange(clientEvent) { _handleClientListener(clientEvent, "orange"); } function clearRecentEvents(clientEvent) { for (var i=9; i>=0; --i) { var row = document.getElementsByClassName("recent"+i)[0]; row.textContent = "n/a"; row.style.color = ""; } } function _handleClientListener(clientEvent, color) { try { for (var i=9; i>0; --i) { var currentRow = document.getElementsByClassName("recent"+i)[0]; var olderRow = document.getElementsByClassName ("recent"+(i-1))[0]; currentRow.textContent = olderRow.textContent; currentRow.style.color = olderRow.style.color; } document.getElementsByClassName("recent0")[0]. textContent = clientEvent; document.getElementsByClassName("recent0")[0].style.color = color; console.log("Handled clientListener: " + clientEvent, clientEvent); } catch (problem) { console.log("Error in verbatim code: " + clientEvent, clientEvent, problem); alert("Error in verbatim code: " + clientEvent + "\n\n" + problem); } } </script> <style type="text/css"> .recentLine { white-space: normal; word-wrap: break-word; font-size: 12px; color: gray; } </style> <fieldset style="min-width: 50px;"> <legend style="color: gray;">Recent Events</legend> <div id="recent0" class="recent0 recentLine">n/a</div> <div id="recent1" class="recent1 recentLine">n/a</div> <div id="recent2" class="recent2 recentLine">n/a</div> <div id="recent3" class="recent3 recentLine">n/a</div> <div id="recent4" class="recent4 recentLine">n/a</div> <div id="recent5" class="recent5 recentLine">n/a</div> <div id="recent6" class="recent6 recentLine">n/a</div> <div id="recent7" class="recent7 recentLine">n/a</div> <div id="recent8" class="recent8 recentLine">n/a</div> <div id="recent9" class="recent9 recentLine">n/a</div> </fieldset> ]]></amx:verbatim> </amx:panelPage> </amx:view>
詳細は、次を参照してください。
Oracle Mobile Application Frameworkタグ・リファレンス
日時の変換(convertDateTime
)は、独立したUIコンポーネントではありません。これは、出力テキストおよび入力テキスト・コンポーネントと組み合せて使用して、指定されたパターンに従った様々な書式で、変換された日付、時刻または日時の組合せを表示するコンバータ操作です。
JDeveloperでは、「日時の変換」は「コンポーネント」ウィンドウの「バリデータおよびコンバータ」の下にあります(図15-65を参照)。
図15-65 「コンポーネント」ウィンドウの「日時の変換」
次の例は、MAF AMXファイルで宣言されたconvertDateTime
要素を示しています。
<amx:panelPage id="pp1"> <amx:inputText styleClass="ui-text" value="Order Date" id="it1" > <amx:convertDateTime id="cdt1" type="both"/> </amx:inputText> </amx:panelPage>
日時値を変換するには:
「コンポーネント」ウィンドウから、「日時の変換」コンポーネントをドラッグして「出力テキスト」コンポーネントまたは「入力テキスト」コンポーネント内に挿入し、それをそのコンポーネントの子要素にします。
日時の変換コンポーネントの「プロパティ」ウィンドウを開き、その属性を定義します。詳細は、Oracle Mobile Application Frameworkタグ・リファレンスを参照してください。
注意:
日時の変換コンポーネントは、デザインタイムには何の効果も持ちません。
日時の変換コンポーネントでは、入力値文字列を日付に変換する際に一定レベルの寛容性があります。
月に対して関連付けられたパターンMMM
を持つコンバータは、値のホルダーに添付されると、MM
またはM
の形で指定された月の値を有効な値として受け入れます。
関連付けられたパターンで指定されているセパレータに関係なく、ダッシュ( - )、ピリオド( . )、スラッシュ( / )などのセパレータを使用できます。
パターン定義における寛容性は、pattern
属性で設定します。
たとえば、コンバータのパターンが"MMM/d/yyyy"
に設定されている場合、次の入力はコンバータにより有効なものとして許容されます。
Jan/4/2004 Jan-4-2004 Jan.4.2004 01/4/2004 01-4-2004 01.4.2004 1/4/2004 1-4-2004 1.4.2004
コンバータでは、java.text.SimpleDateFormat
(dateStyle
、timeStyle
およびpattern
属性を使用して指定される)と同じ解析および書式設定規則がサポートされています。ただし、タイムゾーンが、timeStyle=full
などの長い表示またはzzzz
で設定されるパターンを持つように指定されている場合は例外です。タイムゾーンは太平洋標準時のような長い説明の文字列ではなく、一般的なタイムゾーン形式(GMT +/-オフセット)またはRFC-822タイムゾーンで表示されます。
変換の正確な結果は、ロケールによって異なりますが、一般的に次のルールが適用されます。
SHORT
は、12.13.52や3:30pmなど完全に数値です。
MEDIUM
はそれより長いJan 12、1952などです。
LONG
は、それよりも長いJanuary 12、1952、3:30:32pmなどです。
FULL
は、完全に指定されたTuesday, April 12, 1952 ADや3:30:42pm PSTなどです。
java.text.SimpleDateFormat
定義に従って、日時書式を、日時パターン文字列で指定します。日時パターン文字列では、引用符で囲まれていないA
からZ
およびa
からz
の文字は、日付または時間の文字列のコンポーネントを表すパターン文字と認識されます。テキストは、解釈されないように一重引用符('
)で囲むことができます。" ' ' "
は一重引用符を表します。すべてのその他の文字は解釈されません。かわりに、それらは書式設定中に単に出力文字列にコピーされるか、解析中に入力文字列と照合されます。
表15-9は、定義済パターン文字を示しています(A
からZ
およびa
からz
のすべてのその他の文字は予約されています)。
表15-9 日時パターン文字
|
パターン文字は通常繰り返されます。これは、それらの数が正確な表示を決定するためです。
数値の変換(convertNumber
)は、独立したUIコンポーネントではなく、出力テキストおよび入力テキスト、入力テキストおよび入力数値スライダの各コンポーネントと組み合せて使用して、次の指定されたパターンに従った様々な書式で、変換された数値または通貨値を表示するコンバータ操作です。
数値の変換コンポーネントは、次のタイプの操作を提供します。
値から文字列。表示目的です。
書式設定された文字列から値。書式設定された入力値が、基礎となっている値に解析される場合です。
数値の変換が、入力テキスト・コンポーネントの子として指定されている場合、デフォルトで、モバイル・デバイスに数字キーボードが表示されます。
JDeveloperでは、「数値の変換」は「コンポーネント」ウィンドウの「バリデータおよびコンバータ」の下にあります(図15-66を参照)。
図15-66 「コンポーネント」ウィンドウの「数値の変換」
次の例は、MAF AMXファイルで定義されたconvertNumber
要素を示しています。
<amx:panelPage id="pp1"> <amx:inputText styleClass="ui-text" value="Product Price" id="it1" > <amx:convertNumber id="cn1" type="percent" groupingUsed="false" integerOnly="true"/> </amx:inputText> </amx:panelPage>
数値を変換するには:
「コンポーネント」ウィンドウから、「数値の変換」コンポーネントをドラッグして「出力テキスト」コンポーネント、「入力テキスト」コンポーネントまたは「入力数値スライダ」コンポーネント内に挿入し、それをそのコンポーネントの子要素にします。
数値の変換コンポーネントの「プロパティ」ウィンドウを開き、その属性を定義します。詳細は、Oracle Mobile Application Frameworkタグ・リファレンスを参照してください。
注意:
数値の変換コンポーネントは、デザインタイムには何の効果も持ちません。
ナビゲーション・ドラッグ動作(navigationDragBehavior
)の処理では、モバイル・デバイスの画面を指定された方向(左または右)にドラッグすることで、次または前のMAF AMXページに移動するアクションを起動できます。指定された方向へのドラッグが発生するとインジケータが画面の適切な側に表示され、引き続きドラッグしてインジケータが完全に表示されたときに停止するとアクションが実行されることを示します。インジケータが完全に表示される前にドラッグを放すと、インジケータがスライドされ、アクションは起動されません。
注意:
ドラッグ・ジェスチャーを消費する近いコンテナが他にない場合、この動作は発生しません。
MAF AMXページには、navigationDragBehavior
要素の3つ以上のインスタンスを含むことはできず、1つはdirection
属性をback
に設定したもので、もう1つはforward
に設定したものです。
JDeveloperでは、ナビゲーション・ドラッグ動作は「コンポーネント」ウィンドウの「操作」の下にあります(図15-67を参照)。
図15-67 「コンポーネント」ウィンドウのナビゲーション・ドラッグ動作
次の例は、MAF AMXファイルで定義されたnavigationDragBehavior
要素を示しています。この要素は、view
要素の子にのみできます。
<amx:view xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:amx="http://xmlns.oracle.com/adf/mf/amx" xmlns:dvtm="http://xmlns.oracle.com/adf/mf/amx/dvt"> <amx:navigationDragBehavior id="ndb1" direction="forward" action="gotoDetail"/> Foot 1 <amx:panelPage id="pp1"> <amx:facet name="header"> ... </amx:panelPage> </amx:view>
図15-68は、実行時のドラッグ・ナビゲーション動作を示しています(mobileFusionFx
スキンを使用して表示)。
図15-68 実行時のドラッグ・ナビゲーション動作の処理
詳細および例は、次を参照してください。
Oracle Mobile Application Frameworkタグ・リファレンス
開発コンピュータ上のjdev_install
/jdeveloper/jdev/extensions/oracle.maf/Samples
ディレクトリ内のPublicSamples.zip
ファイル内にあるMAFサンプル・アプリケーションのCompGallery
disabled
属性の値は、次のいずれかが発生した場合に計算されます。
MAF AMXページがレンダリングされる。
PropertyChangeListener
がコンポーネントを更新する: エンド・ユーザーのナビゲーション・ドラッグ動作を起動する機能を動的に有効化または無効化する場合、PropertyChangeListener
を使用します(Beanからの更新が必要な他のコンポーネントで使用される方法と同様)。
次の例は、disabled属性が定義されているnavigationDragBehavior
要素を含むMAF AMXページを示しています。アクティブ化された場合に、disabled
属性がその値を読み取るバッキングBeanのboolean
値(MyBean
の例のnavDisabled
)を変更するボタン(commandButton
)によって機能が駆動されます。バッキングBeanは、プロパティ変更リスナーを使用します。
<amx:view xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:amx="http://xmlns.oracle.com/adf/mf/amx" xmlns:dvtm="http://xmlns.oracle.com/adf/mf/amx/dvt"> <amx:panelPage id="pp1"> <amx:facet name="header"> <amx:outputText value="Header1" id="ot1"/> </amx:facet> <amx:commandButton id="cb1" text="commandButton1" actionListener="#{pageFlowScope.myBean.doSomething}"/> </amx:panelPage> <amx:navigationDragBehavior id="ndb1" direction="forward" action="goView2" disabled="#{pageFlowScope.myBean.navDisabled}"/> </amx:view>
次の例は、navigationDragBehavior
のdisabled
属性の値を提供するバッキングBean(navigationDragBehavior
の例のmyBean
)を示します。
public class MyBean { boolean navDisabled = true; private PropertyChangeSupport propertyChangeSupport = new PropertyChangeSupport(this); public void setNavDisabled(boolean navDisabled) { boolean oldNavDisabled = this.navDisabled; this.navDisabled = navDisabled; propertyChangeSupport.firePropertyChange("navDisabled", oldNavDisabled, navDisabled); } public boolean isNavDisabled() { return navDisabled; } public void doSomething(ActionEvent actionEvent) { setNavDisabled(!navDisabled); } public void addPropertyChangeListener(PropertyChangeListener l) { propertyChangeSupport.addPropertyChangeListener(l); } public void removePropertyChangeListener(PropertyChangeListener l) { propertyChangeSupport.removePropertyChangeListener(l); } }
ロード・インジケータ動作(loadingIndicatorBehavior
)の処理では、次のことをオーバーライドすることで、ロード・インジケータの動作を定義できます。
フェイルセーフ・タイマーの持続時間(ミリ秒単位)。
フェイルセーフしきい値に達した場合に、アクションの方針の決定するために起動できるオプションのJavaScript関数名。
詳細は、表21-1のadf.mf.api.amx.showLoadingIndicator
を参照してください。
JDeveloperでは、ロード・インジケータ動作は「コンポーネント」ウィンドウの「操作」の下にあります(図15-69を参照)。
図15-69 「コンポーネント」ウィンドウのロード・インジケータ動作
次の例は、MAF AMXファイルで定義されたloadingIndicatorBehavior
要素を示しています。この要素は、view
要素の子にのみできます。
<amx:view xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:amx="http://xmlns.oracle.com/adf/mf/amx" xmlns:dvtm="http://xmlns.oracle.com/adf/mf/amx/dvt"> <amx:loadingIndicatorBehavior id="lib1" failSafeDuration="3000" failSafeClientHandler="window.customFailSafeHandler"/> <amx:panelPage id="pp1"> <amx:facet name="header"> <!-- The loading indicator custom fail safe handler will appear if the long running operation runs longer than 3 seconds --> <amx:commandButton id="cb1" text="longRunningOperation" actionListener= "#{pageFlowScope.myBean.longRunningOperation} /> </amx:panelPage> </amx:view>
前述の例では、commandButton
は長時間実行メソッドにバインドされ、ページがロードされると、ロード・インジケータが実行時間の長い操作に適用されることを示しています(ページ自体のロードに時間がかかる場合ではなく)。
次の例は、アプリケーション機能に含まれるcustom.js
ファイルを示しています。これは、loadingIndicatorBehavior
ページでfailSafeClientHandler
のクライアント・ハンドラを定義します。API要件によって、この関数はhide
、repeat
またはfreeze
のいずれかのString
を返します。詳細は、表21-1のadf.mf.api.amx.showLoadingIndicator
を参照してください。
window.customFailSafeHandler = function() { var answer = prompt( "This is taking a long time.\n\n" + "Use \"a\" to hide the indicator.\n" + "Use \"z\" to wait for it.\n" + "Otherwise, give it more time."); if (answer == "a") return "hide"; // don't ask again; hide the indicator else if (answer == "z") return "freeze" // don't ask again; wait for it to finish else return "repeat"; // ask again after another duration };
詳細および例は、次を参照してください。
Oracle Mobile Application Frameworkタグ・リファレンス
開発コンピュータ上のjdev_install
/jdeveloper/jdev/extensions/oracle.maf/Samples
ディレクトリ内のPublicSamples.zip
ファイル内にあるMAFサンプル・アプリケーションのCompGallery
次のジェスチャーに反応するために、ボタン、リンク、リスト・アイテムおよび多数のデータ視覚化の各コンポーネントを構成できます。
右方向にスワイプ
左方向にスワイプ
上方向にスワイプ
下方向にスワイプ
タップしたまま押さえる
アクション: ジェスチャーとしては、アクションは基本的なタップを表します。
始点方向にスワイプ: このジェスチャーは、右から左(RTL)のテキスト方向に対応するために使用されます。このジェスチャーは、次のように解決されます。
テキスト方向が左から右である場合、左方向にスワイプします。
テキスト方向が右から左である場合、右方向にスワイプします。
終点方向にスワイプ: このジェスチャーは、右から左(RTL)のテキスト方向に対応するために使用されます。このジェスチャーは、次のように解決されます。
テキスト方向が左から右である場合、右方向にスワイプします。
テキスト方向が右から左である場合、左方向にスワイプします。
次の操作のtype
属性に対して、swipeRight
、swipeLeft
、swipeUp
、swipeDown
、swipeStart
、swipeEnd
、action
およびtapHold
値を定義できます。
プロパティ・リスナーの設定(「プロパティ・リスナーの設定の使用方法」を参照)
アクション・リスナー(「アクション・リスナーの使用方法」を参照)
ポップアップ表示動作(「ポップアップ・コンポーネントの使用方法」を参照)
ポップアップを閉じる動作(「ポップアップ・コンポーネントの使用方法」を参照)
type
属性の値は親コンポーネントに基づいて制限されており、リンク(commandLink
)およびリスト・アイテム(listItem
)のコンポーネントに対してのみサポートされています。
注意:
リンク(実行) (linkGo
)コンポーネントに対するジェスチャー・サポートはありません。
始点方向にスワイプと終点方向にスワイプは、右から左(RTL)のテキスト方向に対応するために使用されます。通常は、左と右ではなく、始点と終点のスワイプ・スタイルを設定することをお薦めします。
次の例は、MAF AMXファイルのtype
属性のtapHold
値の使用を示しています。この例では、タップしたまま押さえるジェスチャーによってポップアップ・コンポーネントの表示がトリガーされます。
<amx:panelPage id="pp1"> <amx:listView id="lv1" value="#{bindings.data.collectionModel}" var="row"> <amx:listItem id="li1" action="gosomewhere"> <amx:outputText id="ot1" value="#{row.description}"/> <amx:setPropertyListener id="spl1" from="#{row.rowKey}" to="#{mybean.currentRow}" type="tapHold"/> <amx:showPopupBehavior id="spb1" type="tapHold" alignid="pp1" popupid="pop1" align="startAfter"/> </amx:listItem> </amx:listView>> </amx:panelPage> <amx:popup id="pop1"> <amx:panelGroupLayout id="pgl1" layout="horizontal"> <amx:commandLink id="cm1" actionListener="#{mybean.doX}"> <amx:image id="i1" source="images/x.png"/> <amx:closePopupBehavior id="cpb1" type="action" popupid="pop1"/> </amx:commandLink> <amx:commandLink id="cm2" actionListener="#{mybean.doY}"> <amx:image id="i2" source="images/y.png"/> <amx:closePopupBehavior id="cpb2" type="action" popupid="pop1"/> </amx:commandLink> <amx:commandLink id="cm3" actionListener="#{mybean.doZ}"> <amx:image id="i3" source="images/y.png"/> <amx:closePopupBehavior id="cpb3" type="action" popupid="pop1"/> </amx:commandLink> </amx:panelGroupLayout> </amx:popup>
次の例は、MAF AMXファイル内のswipeRight
ジェスチャーの使用方法を示しています。
<amx:panelPage id="pp1"> <amx:listView id="lv1" value="#{bindings.data.collectionModel}" var="row"> <amx:listItem id="li1" action="gosomewhere"> <amx:outputText id="ot1" value="#{row.description}"/> <amx:setPropertyListener id="spl1" from="#{row.rowKey}" to="#{mybean.currentRow}" type="swipeRight"/> <actionListener id="al1" binding="#{mybean.DoX}" type="swipeRight"/> </amx:listItem> </amx:listView>> </amx:panelPage>
詳細は、Oracle Mobile Application Frameworkタグ・リファレンスを参照してください。
GestureDemoという名前のMAFサンプル・アプリケーションは、様々なMAF AMX UIコンポーネントでのジェスチャーの使用方法を示しています。このサンプル・アプリケーションは、開発コンピュータ上のjdev_install
/jdeveloper/jdev/extensions/oracle.maf/Samples
ディレクトリ内のPublicSamples.zip
ファイル内にあります。
MAFでは、データ視覚化コンポーネントのセットを様々なチャート、ゲージおよびマップの作成に使用して、MAF AMXアプリケーション機能のデータを表すことができます。MAF AMXファイルの<dvtm>
ネームスペースの下で次の要素を宣言できます。
areaChart
(「面グラフの作成方法」を参照)
barChart
(「棒グラフの作成方法」を参照)
bubbleChart
(「バブル・チャートの作成方法」を参照)
comboChart
(「コンボ・チャートの作成方法」を参照)
lineChart
(「線グラフの作成方法」を参照)
pieChart
(「円グラフの作成方法」を参照)
scatterChart
(「散布図の作成方法」を参照)
sparkChart
(「スパーク・チャートの作成方法」を参照)
funnelChart
(「ファンネル・チャートの作成方法」を参照)
stockChart
(「株価チャートの作成方法」を参照)
ledGauge
(「LEDゲージの作成方法」を参照)
statusMeterGauge
(「ステータス・メーター・ゲージの作成方法」を参照)
dialGauge
(「ダイアル・ゲージの作成方法」を参照)
ratingGauge
(「評価ゲージの作成方法」を参照)
geographicMap
(「地理マップ・コンポーネントの作成方法」を参照)
thematicMap
(「テーマ・マップ・コンポーネントの作成方法」を参照)
treemap
(「ツリーマップ・コンポーネントの作成方法」を参照)
sunburst
(「サンバースト・コンポーネントの作成方法」を参照)
timeline
(「時系列コンポーネントの作成方法」を参照)
nBox
(「NBoxコンポーネントの作成方法」を参照)
pictoChart
(統計図表の作成方法を参照)
チャート、ゲージ、マップおよび拡張コンポーネント要素には、すべてまたはほとんどに共通の多数の属性があります。詳細は、Oracle Mobile Application Frameworkタグ・リファレンスを参照してください。
JDeveloperでは、データ視覚化コンポーネントは「コンポーネント」ウィンドウの次の場所にあります。
チャート・コンポーネントは、「MAF AMXデータ視覚化」→「共通」→「チャート」の下にあります。
ゲージ・コンポーネントは、「MAF AMXデータ視覚化」→「共通」→「ゲージ」の下にあります。
マップ・コンポーネントは、「MAF AMXデータ視覚化」→「共通」→「マップ」の下にあります。
ツリーマップ、サンバースト、時系列およびNBoxは、「MAF AMXデータ視覚化」→「共通」→「その他」の下にあります。
図15-70 「コンポーネント」ウィンドウのデータ視覚化コンポーネント
データ視覚化コンポーネントをトラック・アンド・ドロップすると、次のようなダイアログの1つが開き、作成しているコンポーネントのタイプに関する情報が表示されます。
モバイル・チャートの作成 (図15-71を参照)
図15-71 チャートの作成コンポーネント
モバイル・ゲージの作成 (図15-72を参照)
図15-72 ゲージの作成コンポーネント
コンポーネント・ギャラリ (図15-73を参照)
図15-73 マップの作成コンポーネント
サンバーストの作成(図15-74を参照)
図15-74 サンバーストの作成
注意:
コンポーネントの作成後、ソース・エディタまたは「構造」ビューでそのコンポーネントを選択し、「プロパティ」ウィンドウで「コンポーネント定義の編集」をクリックすることによって、作成ダイアログを再起動できます。
「プロパティ」ウィンドウで提供される同一の編集機能を使用すると、いくつかのデータ視覚化コンポーネントの子コンポーネント(データ・ポイント・レイヤーなど)を編集できます。
CompGalleryという名前のMAFサンプル・アプリケーションは、MAF AMXアプリケーション機能での様々なデータ視覚化コンポーネントの使用方法を示しています。このサンプル・アプリケーションは、開発コンピュータ上のjdev_install
/jdeveloper/jdev/extensions/oracle.maf/Samples
ディレクトリ内のPublicSamples.zip
ファイル内にあります。
MAF AMXデータ視覚化コンポーネントの詳細は、次を参照してください:
データ視覚化コンポーネントにイベント・リスナーを追加する方法の詳細は、「イベント・リスナーの使用方法」を参照してください。イベント・リスナーは、iOSおよびAndroidのどちらのデバイスでもMAF AMXの実行時の記述のためにコンポーネントに適用できますが、それらのリスナーは設計時には何の効果も持ちません。
「データ・コントロール」ウィンドウから作成されるデータバインドされたデータ視覚化コンポーネントの詳細は、「データバインドされたデータ視覚化コンポーネントの作成方法」を参照してください。
チャートおよびその他のデータ視覚化コンポーネント用の静的データの提供方法の詳細は、「静的データに基づくデータ視覚化コンポーネントの作成方法」を参照してください。
チャート・コンポーネントのインタラクティブ性の詳細は、「チャート・コンポーネントのインタラクティブ性を有効にする方法」を参照してください。
極チャートの作成の詳細は、「極チャートを作成する方法」を参照してください。
データ視覚化コンポーネントにおけるアクセシビリティのサポートの詳細は、「MAFのアクセシビリティのサポートの理解」を参照してください。
面グラフ(areaChart
)は、一連のデータ・アイテムが関連付けられ、グループおよび系列にカテゴリ分けれされている場合に、データを視覚的に表すために使用します。系列は、いくつかの一般的なスタイル・プロパティ(たとえば、面の色やパターンなど)を持つグラフィカル要素を使用して視覚化されます。それらのプロパティは、個々のデータ・アイテムごとではなく、系列レベルで適用する必要があります。デフォルト系列スタイルを使用するかカスタム系列スタイルを使用するかを選択できます。カスタム系列スタイルの定義の詳細は、「線グラフの作成方法」を参照してください。
面グラフは、X軸に沿ってズームおよびスクロールできます。これはzoomAndScroll
属性を使用して有効化されます。
次の例は、MAF AMXファイルに定義されたareaChart
要素を示しています。デフォルト系列スタイルで基本的な面グラフを作成するには、それにコレクションを渡し、chartDataItem
要素をネストしたdataStamp
ファセットを指定します。
<dvtm:areaChart id="areaChart1" value="#{bindings.lineData.collectionModel}" var="row" inlineStyle="width: 400px; height: 300px;" animationOnDisplay="auto" animationDuration="1500" > <amx:facet name="dataStamp"> <dvtm:chartDataItem id="areaChartItem1" series="#{row.series}" group="#{row.group}" value="#{row.value}" /> </amx:facet> <dvtm:yAxis id="yAxis1" axisMaxValue="80.0" majorIncrement="20.0" title="yAxis Title" /> <dvtm:legend id="l1" position="end" /> </dvtm:areaChart>
図15-75 デザインタイムの面グラフ
データ・アイテムはコレクション・モデルで初期化され、スタンプ・メカニズムを備えています。少なくとも、各コレクションのrow
に次のプロパティが含まれている必要があります。
series
: このデータ・アイテムが属する系列の名前。
group
: このデータ・アイテムが属するグループの名前。
value
: データ・アイテムの値。
コレクションのrow
には、個々のデータ・アイテムに適用可能なcolor
やmarkerShape
などの他のプロパティも含めることもできます。
次の例に示すように、属性グループ(attributeGroups
要素)を使用して、なんらかのグループ化条件に基づいてデータ・アイテムのグループに対してスタイル・プロパティを設定できます。この場合、chartDataItem
のcolor
属性およびmarkerShape
属性は、追加のグループ化式に基づいて設定されます。
attributeGroups
設定はデータ視覚化コンポーネント間で共有でき、属性値は対象のコンポーネント全体に自動的に適用されます。この機能を有効にするには、attributeGroups
のdiscriminant
属性を設定します。同じdiscriminant
値を持つコンポーネントは各自の設定(attributeGroups
のattributeMatchRule
子要素の値など)を共有します。
attributeGroups
は、次の子要素を持つことができます。
dvtm
ネームスペースのattributeExceptionRule
: 特定のブール条件が満たされる場合に、属性値を別の値に置き換えます。
dvtm
ネームスペースのattributeMatchRule
: データが特定の値に一致する場合に、属性を置き換えます。
amx
ネームスペースのattribute
。
<dvtm:areaChart id="areaChart1" value="#{bindings.lineData.collectionModel}" var="row" inlineStyle="width: 400px; height: 300px;" title="Chart Title" animationOnDisplay="auto" animationDuration="1500" > <amx:facet name="dataStamp"> <dvtm:chartDataItem id="chartDataItem1" series="#{row.series}" group="#{row.group}" value="#{row.value}" /> <dvtm:attributeGroups id="ag1" type="color" value="#{row.brand}" /> </amx:facet> <dvtm:yAxis id="yAxis1" axisMaxValue="80.0" majorIncrement="20.0" title="yAxis Title" /> <dvtm:legend id="l1" position="end" /> </dvtm:areaChart>
注意:
前の例および図15-75では、カスタム・スタイルが系列レベルで設定されていないため、系列はデフォルトの色傾斜に基づいた色で表示されます。
orientation
属性では、面グラフを水平方向または垂直方向として定義できます。
このコンポーネントに対して定義できるareaChart
子要素およびdvtm
子要素の属性の詳細は、Oracle Mobile Application Frameworkタグ・リファレンスを参照してください。
amx
ネームスペースからfacet
子要素を定義できます。facet
には、chartDataItem
を子として含めることができます(「チャートのデータ・アイテムの定義」を参照)。
次のクラスで定義されているデフォルトCSS設定を上書きすることで、面グラフ・コンポーネントのトップレベル要素をスタイル設定できます。
.dvtm-areaChart - supported properties: all
チャートのスタイル設定の詳細は、「チャート・コンポーネントのスタイル設定方法」を参照してください。
CSSファイルの拡張方法の詳細は、「データ視覚化コンポーネントのスタイル設定方法」を参照してください。
棒グラフ(barChart
)は、一連のデータ・アイテムが関連付けられ、グループおよび系列にカテゴリ分けされている場合に、データを垂直の棒として視覚的に表すために使用します。系列は、個々のデータ・アイテムごとではなく系列レベルで適用する必要があるいくつかの一般的なスタイル・プロパティを持つグラフィカル要素を使用して視覚化されます。
棒グラフは、X軸に沿ってズームおよびスクロールできます。これはzoomAndScroll
属性を使用して有効化されます。
次の例は、MAF AMXファイルで定義されたbarChart
要素を示しています。dataStamp
ファセットは、ネストされたchartDataItem
要素とともに指定されます。
<dvtm:barChart id="barChart1" value="#{bindings.barData.collectionModel}" var="row" inlineStyle="width: 400px; height: 300px;" animationOnDisplay="zoom" animationDuration="3000" > <amx:facet name="dataStamp"> <dvtm:chartDataItem id="chartDataItem1" series="#{row.series}" group="#{row.group}" value="#{row.value}" /> </amx:facet> <dvtm:yAxis id="yAxis1" axisMaxValue="80.0" majorIncrement="20.0" title="yAxis Title" /> <dvtm:legend id="l1" position="start" /> </dvtm:barChart>
図15-76 デザインタイムの棒グラフ
棒グラフのデータ・モデルは、個々の棒を記述するアイテム(行)のコレクションによって表されます。通常、各棒のプロパティには次のようなものがあります。
series
: この棒が属する系列の名前。
group
: この棒が属するグループの名前。
value
: データ・アイテムの値(必須)。
データには、系列ごとに同じ数のグループが含まれている必要があります。系列またはデータのペアのいずれかが欠けている場合、それはAPIにnull
として渡されます。
orientation
属性では、棒グラフを水平方向または垂直方向として定義できます。
chartDataItem
のx
およびy
属性に加え、z
属性を設定することにより、第3の次元となるバーの幅を有効にできます。これは、各バーが別々の重みを表す離散的なデータ・ポイントを記述するときに便利です。
このコンポーネントに対して定義できるbarChart
子要素およびdvtm
子要素の属性の詳細は、Oracle Mobile Application Frameworkタグ・リファレンスを参照してください。
amx
ネームスペースからfacet
子要素を定義できます。facet
には、chartDataItem
を子として含めることができます(「チャートのデータ・アイテムの定義」を参照)。
次のクラスで定義されているデフォルトCSS設定を上書きすることで、棒グラフ・コンポーネントのトップレベル要素をスタイル設定できます。
.dvtm-barChart - supported properties: all
チャートのスタイル設定の詳細は、「チャート・コンポーネントのスタイル設定方法」を参照してください。
CSSファイルの拡張方法の詳細は、「データ視覚化コンポーネントのスタイル設定方法」を参照してください。
レンジ・チャートによって、データ・アイテムの低値および高値をチャートに表示できます。
レンジ・チャートとしてレンダリングするように面グラフまたは棒グラフを構成するには、<dvtm:chartDataItem>
子コンポーネントがサポートするlow
およびhigh
属性の値を指定します。次の例は、レンジ・チャートをレンダリングするように面グラフを構成する方法を示しています。図15-77は、棒グラフ・コンポーネントによってレンダリングされたレンジ・チャートの例を示しています。
<dvtm:areaChart var="row" value="#{bindings.rangeData.collectionModel}" id="ac1"> <amx:facet name="dataStamp"> <dvtm:chartDataItem group="#{row.group}" series="#{row.series}" low="#{row.low}" high="#{row.high}" id="cdi1"/> </amx:facet> <dvtm:legend position="end" id="l1"/> </dvtm:areaChart>
図15-77 棒グラフでのレンジ・チャートのレンダリング
1つの範囲属性の値(low
またはhigh
)のみを指定している場合、MAFはデータ・アイテムをnull
として処理し、チャート上でそのアイテムをレンダリングしません。レンジ・チャートをレンダリングするには、low
とhigh
の両方の属性の値を指定する必要があります。ツールチップおよびデータ・カーソルは、データの高値および低値を表示します。
詳細は、次を参照してください。
バブル・チャート(bubbleChart
)は、各データ・アイテムがx
、y
座標とサイズ(バブル)を持つ一連のデータ・アイテムを表示します。さらに、各データ・アイテムには、color
やmarkerShape
など様々なスタイル属性を設定できます。各データ・アイテムのプロパティを個別に設定することも、様々な条件に基づいてデータ・アイテムをグループにカテゴリ分けすることもできます。複数のグループ化条件を同時に使用でき、データ・アイテムの関係を視覚化するために様々なスタイル属性を使用することもできます。ただし、線グラフ(「線グラフの作成方法」を参照)や面グラフ(「面グラフの作成方法」を参照)とは異なり、バブル・チャートには系列およびグループの厳密な概念がありません。
バブル・チャートは、X軸およびY軸に沿ってズームおよびスクロールできます。これはzoomAndScroll
属性を使用して有効化されます。
次の例は、MAF AMXファイルで定義されたbubbleChart
要素を示しています。dataStamp
ファセットは、ネストされたchartDataItem
要素とともに指定されます。各データ・アイテムのcolor
およびmarkerShape
属性は、データ・モデルで提供されている値に基づいて個別に設定されます。また、基礎となるデータ・コントロールでは、row.label
、row.size
およびrow.shape
の変数参照がそれぞれサポートされている必要があります。
<dvtm:bubbleChart id="bubbleChart1" value="#{bindings.bubbleData.collectionModel}" inlineStyle="width: 400px; height: 300px;" dataSelection="multiple" rolloverBehavior="dim" animationOnDisplay="auto" var="row"> <amx:facet name="dataStamp"> <dvtm:chartDataItem id="chartDataItem1" group="#{row.group}" x="#{row.x}" y="#{row.y}" markerSize="#{row.size}" color="#{row.color}" markerShape="#{row.shape}" /> </amx:facet> </dvtm:bubbleChart>
図15-78 デザインタイムのバブル・チャート
次の例では、attributeGroups
要素はデータ・アイテムの関連グループの共通スタイル属性の設定に使用されます。
<dvtm:bubbleChart id="bubbleChart1" value="#{bindings.bubbleData.collectionModel}" dataSelection="multiple" rolloverBehavior="dim" animationOnDisplay="auto" title="Bubble Chart" var="row"> <amx:facet name="dataStamp"> <dvtm:chartDataItem id="chartDataItem1" group="#{row.label}" x="#{row.x}" y="#{row.y}" > <dvtm:attributeGroups id="ag1" type="color" value="#{row.category}" /> <dvtm:attributeGroups id="ag2" type="shape" value="#{row.brand}" /> </dvtm:chartDataItem> </amx:facet> </dvtm:bubbleChart>
バブル・チャートのデータ・モデルは、個々のデータ・アイテムを記述するアイテム(行)のコレクションによって表されます。通常、各棒のプロパティには次のようなものがあります。
label
: データ・アイテム・ラベル(オプション)。
x
、y
: 値の座標(必須)。
z
: データ・アイテムのサイズ(必須)。
データには、系列ごとに同じ数のグループが含まれている必要があります。系列またはデータのペアのいずれかが欠けている場合、それはAPIにnull
として渡されます。
このコンポーネントに対して定義できるbubbleChart
子要素およびdvtm
子要素の属性の詳細は、Oracle Mobile Application Frameworkタグ・リファレンスを参照してください。
amx
ネームスペースからfacet
子要素を定義できます。facet
には、chartDataItem
を子として含めることができます(「チャートのデータ・アイテムの定義」を参照)。
次のクラスで定義されているデフォルトCSS設定を上書きすることで、バブル・チャート・コンポーネントのトップレベル要素をスタイル設定できます。
.dvtm-bubbleChart - supported properties: all
チャートのスタイル設定の詳細は、「チャート・コンポーネントのスタイル設定方法」を参照してください。
CSSファイルの拡張方法の詳細は、「データ視覚化コンポーネントのスタイル設定方法」を参照してください。
コンボ・チャート(comboChart
)は、線グラフと棒グラフなど、2つ以上の異なるグラフを重ねたものを表します。
次の例は、MAF AMXファイルで定義されたcomboChart
要素を示しています。dataStamp
ファセットは、ネストされたchartDataItem
要素とともに指定されます。seriesStamp
ファセットは、系列のデフォルト・スタイル・プロパティをオーバーライドし、seriesStyle
要素を使用してカスタム系列スタイルを設定します。
<dvtm:comboChart id="comboChart1" value="#{bindings.barData.collectionModel}" var="row" inlineStyle="width: 400px; height: 300px;" animationOnDisplay="auto" animationDuration="1500" > <amx:facet name="dataStamp"> <dvtm:chartDataItem id="chartDataItem1" series="#{row.series}" group="#{row.group}" value="#{row.value}" /> </amx:facet> <amx:facet name="seriesStamp"> <dvtm:seriesStyle id="seriesStyle1" series="#{row.series}" type="bar" rendered="#{(row.series eq 'Series 1') or (row.series eq 'Series 2') or (row.series eq 'Series 3')}" /> <dvtm:seriesStyle id="seriesStyle2" series="#{row.series}" type="line" lineWidth="5" rendered="#{(row.series eq 'Series 4') or (row.series eq 'Series 5')}" /> </amx:facet> <dvtm:yAxis id="yAxis1" axisMaxValue="80.0" majorIncrement="20.0" title="yAxis Title" /> <dvtm:legend position="start" id="l1" /> </dvtm:comboChart>
図15-79 デザインタイムのコンポ・チャート
orientation
属性では、コンボ・チャートを水平方向または垂直方向として定義できます。
このコンポーネントに対して定義できるcomboChart
子要素およびdvtm
子要素の属性の詳細は、Oracle Mobile Application Frameworkタグ・リファレンスを参照してください。
amx
ネームスペースからfacet
子要素を定義できます。facet
には、chartDataItem
を子として含めることができます(「チャートのデータ・アイテムの定義」を参照)。
次のクラスで定義されているデフォルトCSS設定を上書きすることで、コンボ・チャート・コンポーネントのトップレベル要素をスタイル設定できます。
.dvtm-comboChart - supported properties: all
チャートのスタイル設定の詳細は、「チャート・コンポーネントのスタイル設定方法」を参照してください。
CSSファイルの拡張方法の詳細は、「データ視覚化コンポーネントのスタイル設定方法」を参照してください。
線グラフ(lineChart
)は、一連のデータ・アイテムが関連付けられ、グループおよび系列にカテゴリ分けされている場合に、データを視覚的に表すために使用します。系列は、いくつかの一般的なスタイル・プロパティ(たとえば、線の色、太さ、スタイルなど)を持つグラフィカル要素を使用して視覚化されます。それらのプロパティは、個々のデータ・アイテムごとではなく、系列レベルで適用する必要があります。デフォルト系列スタイルを使用するかカスタム系列スタイルを使用するかを選択できます。
線グラフは、X軸に沿ってズームおよびスクロールできます。これはzoomAndScroll
属性を使用して有効化されます。
次の例は、MAF AMXファイルに定義されたlineChart
要素を示しています。デフォルト系列スタイルで基本的な線グラフを作成するには、それにコレクションを渡し、chartDataItem
要素をネストしたdataStamp
ファセットを指定します。
<dvtm:lineChart id="lineChart1" inlineStyle="width: 400px; height: 300px;" rolloverBehavior="dim" animationOnDisplay="auto" value="#{bindings.lineData1.collectionModel}" var="row" > <amx:facet name="dataStamp"> <dvtm:chartDataItem id="chartDataItem1" series="#{row.series}" group="#{row.group}" value="#{row.value}" color="#{row.color}" /> </amx:facet> </dvtm:lineChart>
図15-80 デザインタイムの線グラフ
データ・アイテムはコレクション・モデルで初期化され、スタンプ・メカニズムを備えています。少なくとも、各コレクションのrow
に次のプロパティが含まれている必要があります。
series
: この線が属する系列の名前。
group
: この線が属するグループの名前。
value
: データ・アイテムの値。
コレクションのrow
には、個々のデータ・アイテムに適用可能なcolor
やmarkerShape
などの他のプロパティも含めることもできます。
次の例に示すように、属性グループ(attributeGroups
要素)を使用して、なんらかのグループ化条件に基づいてデータ・アイテムのグループに対してスタイル・プロパティを設定できます。この場合、データ・アイテムのcolor
およびshape
属性が、追加のグループ化式に基づいて設定されます。attributeGroups
は、次の子要素を持つことができます。
dvtm
ネームスペースのattributeExceptionRule
: 特定のブール条件が満たされる場合に、属性値を別の値に置き換えます。
dvtm
ネームスペースのattributeMatchRule
: データが特定の値に一致する場合に、属性を置き換えます。
amx
ネームスペースのattribute
。
<dvtm:lineChart id="lineChart1" inlineStyle="width: 400px; height: 300px;" rolloverBehavior="dim" animationOnDisplay="auto" title="Line Chart" value="#{bindings.lineData1.collectionModel}" var="row" > <amx:facet name="dataStamp"> <dvtm:chartDataItem id="chartDataItem1" series="#{row.series}" group="#{row.group}" value="#{row.value}" /> <dvtm:attributeGroups id="ag1" type="color" value="#{row.brand}" /> </dvtm:chartDataItem> </amx:facet> </dvtm:lineChart>
注意:
次の2つの例では、カスタム・スタイルが系列レベルで設定されていないため、系列はデフォルトの色傾斜に基づいた色で表示されます。
系列のデフォルト・スタイル・プロパティをオーバーライドするには、次の例に示すように、オプションのseriesStamp
ファセットを定義し、seriesStamp
要素を使用してカスタム系列スタイルを設定します。
<dvtm:lineChart id="lineChart1" inlineStyle="width: 400px; height: 300px;" rolloverBehavior="dim" animationOnDisplay="auto" title="Line Chart" value="#{bindings.lineData1.collectionModel}" var="row" > <amx:facet name="dataStamp"> <dvtm:chartDataItem id="chartDataItem1" series="#{row.series}" group="#{row.group}" value="#{row.value}" /> </amx:facet> <amx:facet name="seriesStamp"> <dvtm:seriesStyle series="#{row.series}" lineStyle="#{row.lineStyle}" lineWidth="#{row.lineWidth}" /> </amx:facet> </dvtm:lineChart>
前述の例では、seriesStyle
要素がseries
属性の値に基づいてグループ化されています。同じ名前を持つ系列は、seriesStyle
の他の属性(color
、lineStyle
、lineWidth
など)によって定義された、同じプロパティ・セットを共有する必要があります。MAF AMXでは、同じ系列名を持つ異なる属性値を検出した場合、前回処理された値を適用します。
かわりに、次の例に示すように、seriesStyle
要素のrendered
属性を使用して、MAF AMXチャートで系列スタイルを制御できます。
<dvtm:lineChart id="lineChart1" inlineStyle="width: 400px; height: 300px;" rolloverBehavior="dim" animationOnDisplay="auto" title="Line Chart" value="#{bindings.lineData1.collectionModel}" var="row" > <amx:facet name="dataStamp"> <dvtm:chartDataItem id="chartDataItem1" series="#{row.series}" group="#{row.group}" value="#{row.value}" color="#{row.color}" /> </amx:facet> <amx:facet name="seriesStamp"> <dvtm:seriesStyle series="#{row.series}" color="red" lineWidth="3" lineStyle="solid" rendered="#{row.series == 'Coke'}" /> <dvtm:seriesStyle series="#{row.series}" color="blue" lineWidth="2" lineStyle="dotted" rendered="#{row.series == 'Pepsi'}" /> </amx:facet> </dvtm:lineChart>
orientation
属性では、線グラフを水平方向または垂直方向として定義できます。
このコンポーネントに対して定義できるlineChart
子要素およびdvtm子要素の属性の詳細は、Oracle Mobile Application Frameworkタグ・リファレンスを参照してください。
amx
ネームスペースからfacet
子要素を定義できます。facet
には、chartDataItem
を子として含めることができます(「チャートのデータ・アイテムの定義」を参照)。
次のクラスで定義されているデフォルトCSS設定を上書きすることで、線グラフ・コンポーネントのトップレベル要素をスタイル設定できます。
.dvtm-lineChart - supported properties: all
チャートのスタイル設定の詳細は、「チャート・コンポーネントのスタイル設定方法」を参照してください。
CSSファイルの拡張方法の詳細は、「データ視覚化コンポーネントのスタイル設定方法」を参照してください。
円グラフ(pieChart
)は、各データ・アイテムを円セグメント(区分)で表したデータの比率によって区分を示すために使用します。区分はサイズ別に(最大から最小へと)ソートでき、小さい区分は他の単一の区分に集約できます。
次の例は、MAF AMXファイルで定義されたpieChart
要素を示しています。dataStamp
ファセットは、ネストされたpieDataItem
要素とともに指定されます。
<dvtm:pieChart id="pieChart1" inlineStyle="width: 400px; height: 300px;" value="#{bindings.pieData.collectionModel}" var="row" animationOnDisplay="zoom" animationDuration="3000" > <amx:facet name="dataStamp"> <dvtm:pieDataItem id="pieDataItem1" label="#{row.name}" value="#{row.data}" /> </amx:facet> <dvtm:legend position="bottom" id="l1" /> </dvtm:pieChart>
図15-81 デザインタイムの円グラフ
円グラフの区分ラベルの位置を構成するには、sliceLabelPosition
属性を使用します。デフォルト(auto
)で、区分内にラベルが収まる場合、ラベルは区分の内側に配置されます。それ以外は、区分の外側に配置されます。
selectionEffect
属性を設定することにより、円グラフ・コンポーネントの展開(区分の間隔)効果を定義することもできます。
sliceGaps
属性を使用すると、次の図に示すような、隣接する区分の間にギャップのある円グラフ・コンポーネントを作成できます。sliceGaps
の値は、チャートにギャップのない0(デフォルト)から、最大のギャップを可能にする1の範囲です。
円グラフのデータ・モデルは、個々の円データ・アイテムを定義するアイテムのコレクションによって表されます。通常、各データ・アイテムのプロパティには、次のものがあります。
label
: 区分ラベル
value
: 区分の値。
モデルは、次のようなデータ・アイテムの他のプロパティも定義している場合があります。
borderColor
: 区分の境界線の色。
color
: 区分の色
explode
: 区分を開くときのオフセット。
このコンポーネントに対して定義できるpieChart
子要素およびdvtm
子要素の属性の詳細は、Oracle Mobile Application Frameworkタグ・リファレンスを参照してください。
amx
ネームスペースからfacet
子要素を定義できます。facet
には、pieDataItem
を子として含めることができます(「円グラフのデータ・アイテムの定義」を参照)。
中心が空洞のドーナツのような円グラフ・コンポーネントを作成できます。
空いている領域(と、結果的にはドーナツの幅)のサイズを構成するには、pieChart
のinnerRadius
属性を使用します。また、ドーナツの中心部のテキストを指定するには、centerLabel
属性を設定します。
図15-82 デザインタイムのドーナツ・グラフ
dvtm-pieChart
、dvtm-chartPieLabel
、dvtm-chartPieCenterLabel
およびdvtm-chartSliceLabel
クラスで定義されているデフォルトのCSS設定を上書きすることで、円グラフ・コンポーネントのスタイルを設定できます。
トップレベル要素は次を使用してスタイル設定できます。
.dvtm-pieChart - supported properties: all
円グラフのラベルのスタイルは、次のものを使用して設定できます。
.dvtm-chartPieLabel - supported properties: font-family, font-size, font-weight, color, font-style
円グラフの区分ラベルは次を使用してスタイル設定できます。
.dvtm-chartSliceLabel - supported properties: font-family, font-size, font-weight, color, font-style
ドーナツ・グラフの中心部のラベルのスタイルは、次のものを使用して設定できます。
.dvtm-chartPieCenterLabel - supported properties: font-family, font-size, font-weight, color, font-style
チャートのスタイル設定の詳細は、「チャート・コンポーネントのスタイル設定方法」を参照してください。
CSSファイルの拡張方法の詳細は、「データ視覚化コンポーネントのスタイル設定方法」を参照してください。
散布図(scatterChart
)は、各アイテムがx
、y
座標とサイズを持つデータ・アイテムを表す連続しないドットでデータを表示します。さらに、各データ・アイテムには、color
やmarkerShape
など様々なスタイル属性を設定できます。各データ・アイテムのプロパティを個別に設定することも、様々な条件に基づいてデータ・アイテムをグループにカテゴリ分けすることもできます。複数のグループ化条件を同時に使用でき、データ・アイテムの関係を視覚化するために様々なスタイル属性を使用することもできます。ただし、線グラフ(「線グラフの作成方法」を参照)や面グラフ(「面グラフの作成方法」を参照)とは異なり、散布図には系列およびグループの厳密な概念がありません。
散布図は、X軸およびY軸に沿ってズームおよびスクロールできます。これはzoomAndScroll
属性を使用して有効化されます。
次の例は、MAF AMXファイルで定義されたscatterChart
要素を示しています。dataStamp
ファセットは、ネストされたchartDataItem
要素とともに指定されます。各データ・アイテムのcolor
およびmarkerShape
属性は、データ・モデルで提供されている値に基づいて個別に設定されます。
<dvtm:scatterChart id="scatterChart1" inlineStyle="width: 400px; height: 300px;" animationOnDisplay="zoom" animationDuration="3000" value="#{bindings.scatterData.collectionModel}" var="row" > <amx:facet name="dataStamp"> <dvtm:chartDataItem id="chartDataItem1" group="#{row.group}" color="#{row.color}" markerShape="auto" x="#{row.data.x}" y="#{row.data.y}"> <dvtm:attributeGroups type="color" value="#{row.series}" id="ag1" /> </dvtm:chartDataItem> </amx:facet> <dvtm:xAxis id="xAxis1" title="X Axis Title" /> <dvtm:yAxis id="xAxis2" title="Y Axis Title" /> <dvtm:legend position="bottom" id="l1" /> </dvtm:scatterChart>
図15-83 デザインタイムの散布図
散布図のデータ・モデルは、個々のデータ・アイテムを記述するアイテム(行)のコレクションによって表されます。各データ・アイテムの属性は、スタンプ(dataStamp
)によって定義され、通常、次のものがあります。
x
、y
: 値の座標(必須)。
markerSize
: マーカーのサイズ(オプション)。
モデルは、次のようなデータ・アイテムの他のプロパティも定義している場合があります。
borderColor
: データ・アイテムの境界線の色。
color
: データ・アイテムの色。
このコンポーネントに対して定義できるscatterChart
子要素およびdvtm
子要素の属性の詳細は、Oracle Mobile Application Frameworkタグ・リファレンスを参照してください。
amx
ネームスペースからfacet
子要素を定義できます。facet
には、chartDataItem
を子として含めることができます(「チャートのデータ・アイテムの定義」を参照)。
次のクラスで定義されているデフォルトCSS設定を上書きすることで、散布図コンポーネントのトップレベル要素をスタイル設定できます。
.dvtm-scatterChart - supported properties: all
チャートのスタイル設定の詳細は、「チャート・コンポーネントのスタイル設定方法」を参照してください。
CSSファイルの拡張方法の詳細は、「データ視覚化コンポーネントのスタイル設定方法」を参照してください。
スパークチャート(sparkChart
)は、傾向や変化を、多くの場合、表の列内で表す簡単な縮小チャートです。このチャートは、多くの場合、データ密度の濃い表示に追加のコンテキストを提供するためにダッシュボードで使用されます。
次の例は、MAF AMXファイルで定義されたsparkChart
要素を示しています。dataStamp
ファセットは、ネストされたsparkDataItem
要素とともに指定されます。
<dvtm:sparkChart id="sparkChart1" value="#{bindings.sparkData.collectionModel}" var="row" type="line" inlineStyle="width:400px; height:300px; float:left;"> <amx:facet name="dataStamp"> <dvtm:sparkDataItem id="sparkDataItem1" value="#{row.value}" /> </amx:facet> </dvtm:sparkChart>
図15-84 デザインタイムのスパーク・チャート
スパーク・チャートのデータ・モデルは、個々のスパーク・データ・アイテムを記述するアイテム(行)のコレクションによって表されます。通常、各データ・アイテムのプロパティには、次のものがあります。
value
: スパーク値。
sparkChart
の属性およびdvtm
子要素の詳細は、Oracle Mobile Application Frameworkタグ・リファレンスを参照してください。
amx
ネームスペースからfacet
子要素を定義できます。facet
には、sparkDataItem
を子として含めることができます(「スパーク・チャートのデータ・アイテムの定義」を参照)。
次のクラスで定義されているデフォルトCSS設定を上書きすることで、スパーク・チャート・コンポーネントのトップレベル要素をスタイル設定できます。
.dvtm-sparkChart - supported properties: all
チャートのスタイル設定の詳細は、「チャート・コンポーネントのスタイル設定方法」を参照してください。
CSSファイルの拡張方法の詳細は、「データ視覚化コンポーネントのスタイル設定方法」を参照してください。
ファンネル・チャート(funnelChart
)コンポーネントは、プロセスの手順に関連するデータの視覚的な表現を提供します。ステップは、横向きの円柱に対する縦向きのスライスとして表されます。特定のステップ(スライス)の実際の値がそのスライスの割当てに近づいた分、スライスが塗りつぶされます。通常、ファンネル・チャートには、ある区切りの値(時間など)に対する実際の値と目標の値が必要です。
次の例は、MAF AMXファイルで定義されたfunnelChart
要素を示しています。dataStamp
ファセットは、ネストされたfunnelDataItem
要素とともに指定されます。
<dvtm:funnelChart id="funnelChart1" var="row" value="#{bindings.funnelData.collectionModel}" styleClass="dvtm-gallery-component" sliceGaps="on" threeDEffect="#{pageFlowScope.threeD ? 'on' : 'off'}" orientation="#{pageFlowScope.orientation}" dataSelection="#{pageFlowScope.dataSelection}" footnote="#{pageFlowScope.footnote}" footnoteHalign="#{pageFlowScope.footnoteHalign}" hideAndShowBehavior="#{pageFlowScope.hideAndShowBehavior}" rolloverBehavior="#{pageFlowScope.rolloverBehavior}" seriesEffect="#{pageFlowScope.seriesEffect}" subtitle="#{pageFlowScope.titleDisplay ? pageFlowScope.subtitle : ''}" title="#{pageFlowScope.titleDisplay ? pageFlowScope.title : ''}" titleHalign="#{pageFlowScope.titleHalign}" animationOnDataChange="#{pageFlowScope.animationOnDataChange}" animationDuration="#{pageFlowScope.animationDuration}" animationOnDisplay="#{pageFlowScope.animationOnDisplay}" shortDesc="#{pageFlowScope.shortDesc}"> <amx:facet name="dataStamp"> <dvtm:funnelDataItem id="funnelDataItem1" label="#{row.label}" value="#{row.value}" targetValue="#{row.targetValue}" color="#{row.color}" shortDesc="This is a tooltip"> </dvtm:funnelDataItem> </amx:facet> <dvtm:legend id="l1" position="#{pageFlowScope.legendPosition}" rendered="#{pageFlowScope.legendDisplay}"/> </dvtm:funnelChart>
図15-85 デザインタイムのファンネル・チャート
ファンネル・チャートのデータ・モデルは、個々のファンネル・データ・アイテムを記述するアイテム(行)のコレクションによって表されます。通常、各データ・アイテムのプロパティには、次のものがあります。
value
: ファンネル値
label
: ファンネル区分ラベル
funnelChart
の属性およびdvtm
子要素の詳細は、Oracle Mobile Application Frameworkタグ・リファレンスを参照してください。
amx
ネームスペースからfacet
子要素を定義できます。facet
には、funnelDataItem
を子として含めることができます(「ファンネルのデータ・アイテムの定義」を参照)。
クラスdvtm-funnelChart
およびdvtm-funnelDataItem
で定義されているデフォルトCSS設定を上書きすることで、ファンネル・チャート・コンポーネントをスタイル設定できます。
トップレベル要素は次を使用してスタイル設定できます。
.dvtm-funnelChart - supported properties: all
ファンネル・チャートのデータ・アイテムは次を使用してスタイル設定できます。
.dvtm-funnelDataItem - supported properties: border-color, background-color
チャートのスタイル設定の詳細は、「チャート・コンポーネントのスタイル設定方法」を参照してください。
CSSファイルの拡張方法の詳細は、「データ視覚化コンポーネントのスタイル設定方法」を参照してください。
株価チャート(stockChart
)コンポーネントは、特定の日の様々な時点での株価の始値、終値、安値および高値を表示します。始値および終値を表示するローソク・バーは、通常、その日に株価が上昇したときに緑色で、終値が始値より低い場合に赤色で表示されます。
次の例は、MAF AMXファイルで定義されたstockChart
要素を示しています。dataStamp
ファセットにはstockDataItem
要素が含まれています。
<dvtm:stockChart id="stockChart1" dataCursor="#{pageFlowScope.dataCursor}" dataCursorBehavior="#{pageFlowScope.dataCursorBehavior}" dataSelection="#{pageFlowScope.dataSelection}" emptyText="No data found" footnote="" footnoteHalign="#{pageFlowScope.footnoteHalign}" inlineStyle="width: 100%; height:#{DvtProperties.hostedMode ? '400px' : deviceScope.hardware.screen.availableHeight-200}px" shortDesc="Stock Chart" styleClass="dvtm-gallery-component" subtitle="#{pageFlowScope.subtitle}" title="#{pageFlowScope.title}" titleHalign="#{pageFlowScope.titleHalign}" value="#{bindings.stockChartData.collectionModel}" var="row" volumeColor="#{pageFlowScope.volumeColor}" zoomAndScroll="#{pageFlowScope.zoomAndScroll}" timeAxisType="mixedFrequency" animationOnDataChange="auto" animationOnDisplay="auto" viewportChangeListener="#{StockChartDataList.ViewportListener}"> <amx:facet name="dataStamp"> <dvtm:stockDataItem id="cdi1 close="#{row.close}" high="#{row.high}" low="#{row.low}" open="#{row.open}" volume="#{row.volume}" x="#{row.x}" series="BTC" shortDesc="Stock Data Item"> </dvtm:stockDataItem> </amx:facet> <amx:facet name="seriesStamp"> <dvtm:seriesStyle series="BTC" type="#{pageFlowScope.seriesType}" id="ss1"> </dvtm:seriesStyle> </amx:facet> <amx:facet name="overview"> <dvtm:overview id="ovw" rendered="#{pageFlowScope.overview}"> </dvtm:overview> </amx:facet> <dvtm:xAxis id="xAxis" viewportMinValue="#{pageFlowScope.viewportMinValue}" viewportMaxValue="#{pageFlowScope.viewportMaxValue}"> </dvtm:xAxis> <dvtm:y2Axis id="y2Axis"> <dvtm:tickLabel id="y2TickLabel" rendered="#{pageFlowScope.showY2}" scaling="none"> <amx:convertNumber id="cn5" type="number" minFractionDigits="1" maxFractionDigits="1"/> </dvtm:tickLabel> </dvtm:y2Axis> <dvtm:chartValueFormat id="cvf2label" type="close"> <amx:convertNumber id="closeConvertNumber" type="currency" minFractionDigits="1" maxFractionDigits="1" currencySymbol="$"/> </dvtm:chartValueFormat> <dvtm:chartValueFormat id="cvf2label1" type="high" scaling="none"> <amx:convertNumber id="highConvertNumber" type="currency" minFractionDigits="1" maxFractionDigits="1" currencySymbol="$"/> </dvtm:chartValueFormat> <dvtm:chartValueFormat id="cvf2label2" type="low" scaling="none"> <amx:convertNumber id="lowConvertNumber" type="currency" minFractionDigits="1" maxFractionDigits="1" currencySymbol="$"/> </dvtm:chartValueFormat> <dvtm:chartValueFormat id="cvf2label3" type="open" scaling="none"> <amx:convertNumber id="openConvertNumber" type="currency" minFractionDigits="1" maxFractionDigits="1" currencySymbol="$"/> </dvtm:chartValueFormat> <dvtm:chartValueFormat id="cvf2label4" type="volume" scaling="none"> <amx:convertNumber id="cn6" type="number" minFractionDigits="1" maxFractionDigits="1"/> </dvtm:chartValueFormat> <dvtm:yAxis id="yAxis"> <dvtm:tickLabel id="tc1" scaling="none"> <amx:convertNumber id="yAxisConvertNumber" type="currency" minFractionDigits="1" maxFractionDigits="1" currencySymbol="$"/> </dvtm:tickLabel> <dvtm:referenceLine id="rl2" color="rgb(255,128,0)" lineWidth="1" lineStyle="solid" location="front" lineType="straight" text="Technical analysis" shortDesc="Technical Analysis" displayInLegend="off" rendered="#{pageFlowScope.technicalAnalysis}"> <amx:iterator var="ref" value="#{bindings.stockReferenceData2.collectionModel}" id="i2"> <dvtm:referenceLineItem value="#{ref.value}" x="#{ref.x}" id="rli2"/> </amx:iterator> </dvtm:referenceLine> <dvtm:referenceLine id="rl1" color="#008000" lineWidth="1" lineStyle="solid" location="front" lineType="straight" text="" shortDesc="Total Transaction Fees" displayInLegend="off" rendered="#{pageFlowScope.transactionFees}"> <amx:iterator var="ref" value="#{bindings.stockReferenceData.collectionModel}" id="i1"> <dvtm:referenceLineItem value="#{ref.value}" x="#{ref.x}" id="rli1"/> </amx:iterator> </dvtm:referenceLine> </dvtm:yAxis> <dvtm:chartValueFormat id="cvf1" type="y" scaling="none"/> </dvtm:stockChart>
図15-86 設計時の株価チャート
株価チャートのデータ・モデルは、個々の株価データ・アイテムを記述するアイテム(行)のコレクションによって表されます。
stockChart
の属性およびdvtm
子要素の詳細は、Oracle Mobile Application Frameworkタグ・リファレンスを参照してください。
amx
ネームスペースからfacet
子要素を定義できます。facet
には、stockDataItem
を子として含めることができます(「株価のデータ・アイテムの定義」を参照)。
次のクラスで定義されているデフォルトのCSS設定を上書きすることで、株価コンポーネントのスタイルを設定できます。
dvtm-stockChart-rising
dvtm-stockChart-falling
dvtm-stockChart-range
チャートのスタイル設定の詳細は、「チャート・コンポーネントのスタイル設定方法」を参照してください。
CSSファイルの拡張方法の詳細は、「データ視覚化コンポーネントのスタイル設定方法」を参照してください。
スパーク・チャートを除き、次のクラスで定義されているデフォルトCSS設定を上書きすることで、チャート・コンポーネントをスタイル設定できます。
チャート・コンポーネントの凡例は次を使用してスタイル設定できます。
.dvtm-legend - supported properties used for text styling: font-family, font-size, font-weight, color, font-style - supported properties used for background styling: background-color - supported properties used for border styling: border-color (used when border width > 0) .dvtm-legendTitle - supported properties: font-family, font-size, font-weight, color, font-style .dvtm-legendSectionTitle - supported properties: font-family, font-size, font-weight, color, font-style
チャート・コンポーネントのタイトル、サブタイトルなどは次を使用してスタイル設定できます。
.dvtm-chartTitle - supported properties: font-family, font-size, font-weight, color, font-style .dvtm-chartSubtitle - supported properties: font-family, font-size, font-weight, color, font-style .dvtm-chartFootnote - supported properties: font-family, font-size, font-weight, color, font-style .dvtm-chartTitleSeparator - supported properties: visibility (is title separator rendered), border-top-color, border-bottom-color
チャート・コンポーネントの軸は次を使用してスタイル設定できます。
.dvtm-chartXAxisTitle - supported properties: font-family, font-size, font-weight, color, font-style .dvtm-chartYAxisTitle - supported properties: font-family, font-size, font-weight, color, font-style .dvtm-chartY2AxisTitle - supported properties: font-family, font-size, font-weight, color, font-style .dvtm-chartXAxisTickLabel - supported properties: font-family, font-size, font-weight, color, font-style .dvtm-chartYAxisTickLabel - supported properties: font-family, font-size, font-weight, color, font-style .dvtm-chartY2AxisTickLabel - supported properties: font-family, font-size, font-weight, color, font-style
チャート・コンポーネントのトップレベル要素のスタイル設定に加え、一部のチャートの特定の子要素をスタイル設定できます。
ViewportChangeEvent
を使用して、チャート・コンポーネントのズームおよびスクロールを処理できます。ズームまたはスクロールのいずれかが発生すると、コンポーネントは、新しいビューポートを定義する情報でロードされるイベントを起動します。
viewportChangeListener
は、面グラフ、棒グラフ、コンボ・チャートおよび線グラフ・コンポーネントの属性として指定できます。
DrillEvent
を使用して、グラフ・コンポーネントのドリルを処理できます。ドリルが発生すると、コンポーネントはこのイベントを起動します。
drillListener
は、任意のチャート・コンポーネントの属性として指定できます。さらに、詳細なドリル制御を指定するため、chartDataItem
、funnelDataItem
、pieDataItem
およびseriesStyle
のdrilling
属性を使用できます。
詳細は、次を参照してください。
Oracle Mobile Application Framework Java APIリファレンス
Oracle Mobile Application Frameworkタグ・リファレンス
MAF AMXのチャート値フォーマット(chartValueFormat
)子コンポーネントでは、次の例に示すように、ラベルを指定してツールチップ内の値の表示を無効にすることによって、チャート・コンポーネントのツールチップをカスタマイズできます。
<dvtm:barChart id="bc1" var="row" value="bindings.Data.collectionModel"> <amx:facet name="dataStamp"> <dvtm:chartDataItem id="cdi1" series="row.series" group="row.group" value="row.value"/> </amx:facet> <dvtm:chartValueFormat id="cvf1" type="value" tooltipLabel="Revenue"> <amx:convertNumber ... /> </dvtm:chartValueFormat> <dvtm:chartValueFormat id="cvf2" type="series" tooltipLabel="Region"/> <dvtm:chartValueFormat id="cvf3" type="groups" tooltipLabel="Product Type"/> </dvtm:barChart>
詳細は、Oracle Mobile Application Frameworkタグ・リファレンスを参照してください。
棒グラフ、線グラフ、面グラフおよびコンボ・チャート・コンポーネントのsorting
属性を使用すると、その値によるチャート・カテゴリのソートを有効にできます。たとえば、棒グラフのバーで表される国々をそのGDPの昇順または降順で表示できます。デフォルトでは、ソートは無効になっています。
棒グラフ、線グラフ、面グラフおよびコンボ・チャート・コンポーネントのinitialZooming
属性を使用すると、現在のチャートのサイズで使用可能なチャートのズーム・レベルを自動的に設定しながら、グラフの初期状態で最初または最後のいずれのデータ・ポイントを表示するかを指定できます。デフォルトでは、初期ズームは無効になっています。
棒グラフ、横棒グラフ、線グラフ、面グラフおよびコンボ・チャート・コンポーネントでは、stack
属性がサポートされており、データ系列を積み重ねて表示できます。この属性を単独で使用する場合は、チャート内のデータ系列のすべてにスタックを適用するか、またはすべてに適用しないかのいずれかです。チャート内のいくつかの系列のスタックを有効にして、その他を無効にするには、子コンポーネントである系列スタイル(seriesStyle
)のstackCategory
属性と、親チャートのstack
属性を同時に使用します。チャートのstack
属性をon
に設定し、系列スタイルのstackCategory
属性を指定して、チャート内の特定の系列をどのようにスタックするかを定義します。
棒グラフ、線グラフ、面グラフおよびコンボ・チャート・コンポーネントのsplitDualY
属性を使用すると、Y2軸を使用するチャートで、同じX軸を共有するスタックされたプロット領域に2つのデータ・セットを別々に表示できます。デフォルトでは、この機能は無効になっています。
チャートと異なり、ゲージでは、単一のデータ・ポイントを重視し、そのポイントを最小、最大およびしきい値インジケータと比較して問題領域を識別します。LED(電光表示)ゲージ(ledGauge
)は、重要業績評価指標(KPI)などの測定値をグラフィカルに表します。LEDゲージには、いくつかのスタイルがあります。矢印付きのものは、よい(上矢印)、普通(右または左矢印)および悪い(下矢印)を示すために使用されます。ゲージのしきい値はいくつでも指定できます。ただし、一部のLEDゲージ(矢印または三角形のインジケータを持つものなど)では、指し示す有効な方向の数が限られているため、サポートされるしきい値の数にかぎりがあります。矢印または三角形のインジケータの場合、しきい値の最大数は3です。
次の例は、MAF AMXファイルで定義されたledGauge
要素を示しています。
<dvtm:ledGauge id="ledGauge1" value="65" type="circle" inlineStyle="width: 100px; height: 80px; float: left; border-color: navy; background-color: lightyellow;"> <dvtm:threshold id="threshold1" text="Low" maxValue="40" /> <dvtm:threshold id="threshold2" text="Medium" maxValue="60" /> <dvtm:threshold id="threshold3" text="High" maxValue="80" /> </dvtm:ledGauge>
図15-87 デザインタイムのLEDゲージ
LEDゲージのデータ・モデルは、value
属性で指定される単一のメトリック値で表されます。
このコンポーネントに対して定義できるledGauge
子要素およびdvtm
子要素の属性の詳細は、Oracle Mobile Application Frameworkタグ・リファレンスを参照してください。
次のamx
子要素を定義できます。
showPopupBehavior
(「ポップアップ・コンポーネントの使用方法」を参照)
closePopupBehavior
(「ポップアップ・コンポーネントの使用方法」を参照)
validationBehavior
(「入力の検証」を参照)
ステータス・メーター・ゲージ(statusMeterGauge
)は、長方形の水平バーまたは円に沿ってタスクの進捗状況または測定値のレベルを示します。コンポーネントのある部分は、別の部分にマークされた範囲に対する現在の測定値のレベルを示します。また、しきい値は、サイズ変更が可能なインジケータの背後に表示できます。
MAF AMXデータ視覚化のステータス・メーター・ゲージ・コンポーネントでは、参照線(referenceLine
)のサポートが提供されます。この参照線を使用して、ブレット・グラフを生成できます。
次の例は、MAF AMXファイルで定義されたstatusMeterGauge
要素を示しています。
<dvtm:statusMeterGauge id="meterGauge1" value="65" animationOnDisplay="auto" animationDuration="1000" inlineStyle="width: 300px; height: 30px; float: left; border-color: black; background-color: lightyellow;" minValue="0" maxValue="100"> <dvtm:metricLabel/> <dvtm:threshold id="threshold1" text="Low" maxValue="40" /> <dvtm:threshold id="threshold2" text="Medium" maxValue="60" /> <dvtm:threshold id="threshold3" text="High" maxValue="80" /> </dvtm:statusMeterGauge>
図15-88 デザインタイムの長方形のステータス・メーター・ゲージ
垂直の矩形で表したステータス・メーター・ゲージを作成するには、そのorientation
属性をvertical
に設定します。デフォルトでは、この属性はhorizontal
に設定されいるため、横向きの長方形になります。
円形で表される(図15-89を参照)ステータス・メーター・ゲージを作成するには、orientation
属性をcircular
に設定します。
図15-89 デザインタイムの円形のステータス・メーター・ゲージ
ステータス・メーター・ゲージのデータ・モデルは、value
属性で指定される単一のメトリック値です。また、最小値はminValue
属性で、最大値はmaxValue
属性によって指定できます。
このコンポーネントに対して定義できるstatusMeterGauge
子要素およびdvtm
子要素の属性の詳細は、Oracle Mobile Application Frameworkタグ・リファレンスを参照してください。
次のamx
子要素を定義できます。
showPopupBehavior
(「ポップアップ・コンポーネントの使用方法」を参照)
closePopupBehavior
(「ポップアップ・コンポーネントの使用方法」を参照)
validationBehavior
(「入力の検証」を参照)
ダイヤル・ゲージ(dialGauge
)は、悪いからよいまで変化する値(しきい値)の範囲を指定します。ゲージのインジケータではメトリックの現在の値が示される一方、図形によってその値のステータスを評価できます。
次の例は、MAF AMXファイルで定義されたdialGauge
要素を示しています。
<dvtm:dialGauge id="dialGauge1" background="#{pageFlowScope.background}" indicator="#{pageFlowScope.indicator}" value="#{pageFlowScope.value}" minValue="#{pageFlowScope.minValue}" maxValue="#{pageFlowScope.maxValue}" animationDuration="1000" animationOnDataChange="auto" animationOnDisplay="auto" shortDesc="#{pageFlowScope.shortDesc}" inlineStyle="#{pageFlowScope.inlineStyle}" styleClass="#{pageFlowScope.styleClass}" readOnly="true"> </dvtm:dialGauge>
図15-90 デザインタイムのダイヤル・ゲージ
ダイヤル・ゲージのデータ・モデルは、value
属性で指定される単一のメトリック値です。また、最小値はminValue
属性で、最大値はmaxValue
属性によって指定できます。
このコンポーネントに対して定義できるdialGauge
子要素およびdvtm
子要素の属性の詳細は、Oracle Mobile Application Frameworkタグ・リファレンスを参照してください。
次の例は、暗い背景テーマと、-5000から5000の範囲を設定するカスタム・ティック・ラベルを備えたdialGauge
要素の定義を示しています。
<dvtm:dialGauge id="dialGauge1" background="circleDark" indicator="needleDark" value="#{pageFlowScope.value}" minValue="-5000" maxValue="5000" readOnly="false"> <dvtm:metricLabel id="metricLabel1" scaling="thousand" labelStyle="font-family: Arial, Helvetica; font-size: 20; color: white;"/> <dvtm:tickLabel id="tickLabel1" scaling="thousand" labelStyle="font-family: Arial, Helvetica; font-size: 18; color: white;"/> </dvtm:dialGauge>
図15-91 メトリック・ラベルおよびティック・ラベルの付いたデザインタイムのダイアル・ゲージ
dialGauge
に対して次のamx
子要素を定義できます。
showPopupBehavior
(「ポップアップ・コンポーネントの使用方法」を参照)
closePopupBehavior
(「ポップアップ・コンポーネントの使用方法」を参照)
validationBehavior
(「入力の検証」を参照)
評価ゲージ(ratingGauge
)を使用すると、事前定義された視覚スケールに評価を表示したり、その評価を変更できます。デフォルトの評価単位は、星で表されます。ratingGauge
のshape
属性を設定することによって、これを円、人間、矩形、星形、三角形またはひし形として構成できます。そのorientation
プロパティの値を設定することで、垂直または水平にレンダリングすることもできます。デフォルトでは、水平にレンダリングされます。
次の例は、MAF AMXファイルで定義されたratingGauge
要素を示しています。
<dvtm:ratingGauge id="ratingGauge1" value="#{pageFlowScope.value}" minValue="0" maxValue="5" inputIncrement="full" shortDesc="#{pageFlowScope.shortDesc}" inlineStyle="#{pageFlowScope.inlineStyle}" readOnly="true" shape="circle" unselectedShape="circle"> </dvtm:ratingGauge>
図15-92 デザインタイムの評価ゲージ
評価ゲージのデータ・モデルは、value
属性で指定される単一のメトリック値です。また、最小値はminValue
属性で、最大値はmaxValue
属性によって指定できます。
このコンポーネントに対して定義できるratingGauge
子要素およびdvtm
子要素の属性の詳細は、Oracle Mobile Application Frameworkタグ・リファレンスを参照してください。
ratingGauge
に対して次のamx
子要素を定義できます。
showPopupBehavior
(「ポップアップ・コンポーネントの使用方法」を参照)
closePopupBehavior
(「ポップアップ・コンポーネントの使用方法」を参照)
validationBehavior
(「入力の検証」を参照)
ratingGauge
のshortDesc
属性の値は、threshold
子要素のshortDesc
属性を設定することによって上書きできます。指定されると、ratingGauge
のvalue
属性が指定されたしきい値に到達するたびに、threshold
のshortDesc
によって親のshortDesc
が置き換えられます。
次の例は、評価ゲージ・コンポーネントのshortDesc
属性を上書きする方法を示しています。
<dvtm:ratingGauge id="ratingGauge1" value="#{pageFlowScope.value}" minValue="#{pageFlowScope.minValue}" maxValue="#{pageFlowScope.maxValue}" shortDesc="#{pageFlowScope.shortDesc}" inputIncrement="#{pageFlowScope.inputIncrement}" inlineStyle="#{pageFlowScope.inlineStyle}" <dvtm:threshold id="tr1" maxValue="2" shortDesc="Performance: Poor"/> <dvtm:threshold id="tr2" maxValue="3" shortDesc="Performance: Average"/> <dvtm:threshold id="tr3" maxValue="4" shortDesc="Performance: Good"/> <dvtm:threshold id="tr4" maxValue="5" shortDesc="Performance: Excellent"/> </dvtm:ratingGauge>
エンド・ユーザーが評価ゲージ・コンポーネントに対して実行したアクションに応じて、評価単位(イメージ)は次のいずれかの状態を取得できます。
selected: 単位を選択した場合。
unselected: 単位を選択しなかった場合。
changed: 単位を変更した場合。
hover: 単位にマウスを置いた場合。
注意:
タッチ・インタフェースを使用するモバイル・デバイスでは、hover状態はタップしたまま押さえるジェスチャーを通じて呼び出されます。
各状態は、独自のイメージの配列と、色および枠線の色を定義するプロパティで表現できます。
デフォルトでは、ratingGauge
のshape
属性によって、hoverおよびchanged状態の選択内容が決まります。unselected状態は、ratingGauge
のunselectedShape
属性を使用して個別に設定できます。
デフォルトCSS設定を上書きすることで、評価ゲージ・コンポーネントをスタイル設定できます。CSSファイルの拡張方法の詳細は、「データ視覚化コンポーネントのスタイル設定方法」を参照してください。
次に、評価ゲージ単位の各状態のcolor
およびborderColor
に対するデフォルトCSSスタイル定義を示します。
.dvtm-ratingGauge { } .dvtm-ratingGauge .dvtm-ratingGaugeSelected { border-width: 1px; border-style: solid; border-color: #FFC61A; color: #FFBB00; } .dvtm-ratingGauge .dvtm-ratingGaugeUnselected { border-width: 1px; border-style: solid; border-color: #D3D3D3; color: #F4F4F4; } .dvtm-ratingGauge .dvtm-ratingGaugeHover { border-width: 1px; border-style: solid; border-color: #6F97CF; color: #7097CF; } .dvtm-ratingGauge .dvtm-ratingGaugeChanged { border-width: 1px; border-style: solid; border-color: #A8A8A8; color: #FFBB00; }
チャートおよびゲージには様々な子要素を定義できます。それらの子要素のいくつかを次に示します。
chartDataItem
(「チャートのデータ・アイテムの定義」を参照)
xAxis
、yAxis
およびy2Axis
(「X軸、Y軸およびY2軸の定義および構成」を参照)
legend
(「凡例の定義および構成」を参照)
pieDataItem
(「円グラフのデータ・アイテムの定義」を参照)
sparkDataItem
(「スパーク・チャートのデータ・アイテムの定義」を参照)
threshold
(「しきい値の定義」を参照)
funnelDataItem
(「ファンネルのデータ・アイテムの定義」を参照)
stockDataItem
(「株価のデータ・アイテムの定義」を参照)
これらのおよびその他の子要素の詳細は、Oracle Mobile Application Frameworkタグ・リファレンスを参照してください。
JDeveloperでは、データ視覚化コンポーネントの子コンポーネントは、「コンポーネント」ウィンドウの「MAF AMXデータ視覚化」→「共有子タグ」の下および「MAF AMXデータ視覚化」→「その他のタイプ固有の子タグ」の下にあります(図15-93を参照)。
図15-93 チャートおよびゲージの子コンポーネントの作成
チャート・データ・アイテム(chartDataItem
)要素は、円グラフを除くすべてのサポートされているチャートでチャート・データ・アイテムが使用するパラメータを指定します。
チャート・データ・アイテムでのテキスト表示を有効化でき、chartDataItem
要素の関連する属性を設定することで、そのラベル、ラベル位置およびラベル・スタイルを制御でき、さらに、チャート自体のdataLabelPosition
属性を設定することで指定されたチャートのすべてのデータ・ラベルの位置を指定できます。
注意:
散布図、円グラフおよびファンネル・チャートのコンポーネントでは、dataLabelPosition
属性はサポートされていません。
chartDataItem
要素の属性の詳細は、Oracle Mobile Application Frameworkタグ・リファレンスを参照してください。
凡例(legend
)要素は、凡例パラメータを指定します。
凡例用のグラフ領域のサイズをカスタマイズするには、凡例コンポーネントのsize
属性とmaxSize
属性を使用します。
legend
要素の属性の詳細は、Oracle Mobile Application Frameworkタグ・リファレンスを参照してください。
X軸(xAxis
)およびY軸(yAxis
)要素は、チャートのX軸とY軸を定義します。Y2軸(y2Axis
)は、オプションのY2軸を定義します。これらの要素は、MAF AMXファイルで次のように宣言されます。
<dvtm:xAxis id="xAxis1" scrolling="on" axisMinValue="0.0" axisMaxValue="50.0" />
軸用のグラフ領域のサイズをカスタマイズするには、X軸、Y軸およびY2軸コンポーネントのsize
属性とmaxSize
属性を使用します。また、軸ベースラインの色、幅およびスタイルをカスタマイズするには、その主ティック子要素を構成します。
xAxis
、yAxis
およびy2Axis
要素の属性および子要素の詳細は、Oracle Mobile Application Frameworkタグ・リファレンスを参照してください。
円グラフのデータ・アイテム(pieDataItem
)要素は、円グラフの区分のパラメータを指定します(「円グラフの作成方法」を参照)。
pieDataItem
要素の属性の詳細は、Oracle Mobile Application Frameworkタグ・リファレンスを参照してください。
スパーク・チャートのデータ・アイテム(sparkDataItem
)要素は、スパーク・チャート・アイテムのパラメータを指定します(「スパーク・チャートの作成方法」を参照)。
sparkDataItem
要素の属性の詳細は、Oracle Mobile Application Frameworkタグ・リファレンスを参照してください。
ファンネル・データ・アイテム(funnelDataItem
)要素は、ファンネル・チャート・アイテムのパラメータを指定します(「ファンネル・チャートの作成方法」を参照)。
funnelDataItem
要素の属性の詳細は、Oracle Mobile Application Frameworkタグ・リファレンスを参照してください。
株価データ・アイテム(stockDataItem
)要素は、株価チャート・アイテムのパラメータを指定します(「株価チャートの作成方法」を参照)。
stockDataItem
要素の属性の詳細は、Oracle Mobile Application Frameworkタグ・リファレンスを参照してください。
しきい値(threshold
)要素は、ゲージのしきい値範囲を指定します(「LEDゲージの作成方法」および「ステータス・メーター・ゲージの作成方法」を参照)。
threshold
要素の属性の詳細は、Oracle Mobile Application Frameworkタグ・リファレンスを参照してください。
地理マップ(geographicMap
)は、1つのマップに重ね合せた1つ以上のインタラクティブな情報レイヤーでデータを表します。このコンポーネントが基礎となるマップ・プロバイダとしてGoogleマップまたはOracle Maps Cloud Serviceを使用するように構成します。マップ・プロバイダを指定しない場合、コンポーネントはGoogleマップを使用します。
図15-94 は、CompGalleryサンプル・アプリケーションのgeographicMap
コンポーネントを示しています。
図15-94 CompGalleryサンプル・アプリケーションの地理マップ
geographicMap
コンポーネントは、安定している最新v3バージョンのGoogle Maps JavaScript APIを使用します。
geographicMap
に対してpointDataLayer
子要素を定義できます。pointDataLayer
を使用すると、ポイントに関連するデータをマップ上に表示できます。pointDataLayer
は子要素としてpointLocation
を持つことができます。pointLocation
は、データ・ポイントの位置を決定するデータ・レイヤーのモデル内の列を指定します。これらの位置は、住所またはX座標とY座標で表すことができます。
pointLocation
は、子要素としてmarker
を持つことができます。marker
は、マップ上のデータ・ポイントに関連付けられた組込み形状またはカスタム形状をスタンプ・アウトするために使用します。marker
では、マーカーとしてレンダリングされるイメージのURIを指定するための一連のプロパティがサポートされています。マーカーは子要素としてconvertNumber
を持つことができます(「数値の変換方法」を参照)。また、ポップアップ(「ポップアップ・コンポーネントの使用方法」を参照)を有効にして、geographicMap
のmarker
に表示されるようにできます。そのためには、次の例に示すように、showPopupBehavior
要素をmarker
要素の子として宣言し、showPopupBehavior
のalignId
属性をmarker
のid
属性の値に設定します。
<dvtm:geographicMap id="geographicMap_1" shortDesc="#{pageFlowScope.shortDesc}"> <dvtm:pointDataLayer id="pdl1" var="row" value= "#{bindings.geographicMapPointData.collectionModel}"> <dvtm:pointLocation id="pl1" pointX="#{row.pointX}" pointY="#{row.pointY}"> <dvtm:marker id="marker1" shortDesc="#{row.shortDesc}" rendered="true"> <amx:showPopupBehavior id="spb1" popupId="popup1" alignId="marker1" align="topCenter" decoration="anchor"/> <amx:setPropertyListener from="#{row.shortDesc}" to="#{pageFlowScope.currentCity}" type="action"/> </dvtm:marker> </dvtm:pointLocation> </dvtm:pointDataLayer> </dvtm:geographicMap> ... <amx:popup id="popup1" backgroundDimming="off" autoDismiss="true"> <amx:outputText id="otTest" value="City: #{pageFlowScope.currentCity}"/> ... </amx:popup>
geographicMap
要素およびその子要素の属性の詳細は、Oracle Mobile Application Frameworkタグ・リファレンスを参照してください。
geographicMap
コンポーネントでは、タッチ・ジェスチャーを使用したピンの挿入(マップ上での点の作成)が可能です。この機能を構成するには、mapInputListener
を使用します。詳細は、「マップ・コンポーネントでのイベントの使用方法」を参照してください。
geographicMap
コンポーネントに関連するタスクの詳細は、次を参照してください。
基礎となるマップに特定のプロバイダ(GoogleまたはOracle)を使用するようにgeographicMap
コンポーネントを構成するには、アプリケーションのadf-config.xml
ファイルに名前と値のペアとして次のプロパティを設定します。
mapProvider
: oraclemaps
またはgooglemaps
を指定します。
geoMapKey
: mapProvider
がgooglemaps
に設定されている場合は、ライセンス・キーを指定します。
geoMapClientId
: mapProvider
がgooglemaps
に設定されている場合は、Googleマップ・ビジネス・ライセンスのクライアントIDを指定します。
mapViewerUrl
: mapProvider
がoraclemaps
に設定されている場合は、Oracle Maps Cloud Serviceのマップ・ビューアURLを指定します。
baseMap
: mapProvider
がoraclemaps
に設定されている場合は、Oracle Maps Cloud Serviceとともに使用するベース・マップを指定します。
注意:
Googleマップを使用するようにgeographicMap
コンポーネントを構成するには、Googleから該当するライセンスを取得する必要があります。
次の例は、Googleマップ用の構成を示しています。
<adf-properties-child xmlns="http://xmlns.oracle.com/adf/config/properties">
<adf-property name="mapProvider" value="googlemaps"/>
<adf-property name="geoMapKey" value="your key"/>
</adf-properties-child>
Googleマップのライセンスがないと、アドレス解決を可能にするジオコーディング・サービスへのアクセスが制限されます。許可されている制限を超過すると、MAFは、ジオコーディング・サービスによって生成されるエラー・メッセージ用のハンドラを提供します。アドレス・ポイントの最大許容数を超過する場合、実行時にこれらのメッセージは表示されます。1秒当たり10リクエストに制限されているリクエストの数、および冗長リクエストの数はジオコーディングAPIに送られません。
次の表に示されたエラー・メッセージをモニターします。
表15-10
|
注意:
Oracle Maps Cloud Serviceを使用する場合は、「使用条件」および「業者向け通知」を順守する必要があります。Oracle Maps Cloud Serviceは、http://www.oracle.com/us/corporate/contracts/maps-cloud-hd-policies-2767907.pdfで示されているOracle Maps Cloud Serviceエンタープライズ・ホスティングおよび配信ポリシーの規約の下に提供されます。
次の例は、Oracle Maps Cloud Service用の構成を示しています。
<adf-properties-child xmlns="http://xmlns.oracle.com/adf/config/properties"> <adf-property name="mapProvider" value="oraclemaps"/> <adf-property name="mapViewerUrl" value="your-mapviewer-server-url"/> <adf-property name="baseMap" value="your-basemap-id"/> </adf-properties-child>
iOS 9以降を使用するデバイス上で実行されるMAFアプリケーションは、Apple iOSのアプリケーション・トランスポート・セキュリティ(ATS)の要件を満たすために、アプリケーションからサービスへのすべての接続にHTTPS
を使用する必要があります。MAFアプリケーションをiOS 9以降にデプロイしている場合は、次のいずれかのオプションを使用してアプリケーションを構成し、geographicMap
コンポーネントがOracle Maps Cloud ServiceをiOS 9デバイスでレンダリングできるようにします。
MAFアプリケーションをデプロイする場合はATSを無効にします。詳細は、「iOSビルド・オプションの定義」を参照してください。このオプションはお薦めできません。
HTTPS
リクエストを受け入れるようにOracle Maps Cloud Serviceサービスを構成し、geographicMap
コンポーネントがHTTPS
を使用するようにMAFアプリケーションを構成します。後者の構成は、アプリケーションのadf-config.xml
ファイルで実行します。次の例は、geographicMap
コンポーネントがOracle Maps Cloud ServiceをiOS 9デバイス上でレンダリングできるように、アプリケーションのadf-config.xml
ファイルを構成する方法を示しています。
<adf:adf-properties-child xmlns="http://xmlns.oracle.com/adf/config/properties"> <adf-property name="mapProvider" value="oracleMaps"/> <!-- Configure the URL for the mapviewer service that provides map data--> <adf-property name="mapViewerUrl" value="https://elocation.myserver.com/mapviewer"/> <!-- Configure the URL for the eLocation service that provides geocoding services, such as address resolution, directions, and so on --> <adf-property name="eLocationUrl" value="https://elocation.myserver.com/elocation"/> </adf:adf-properties-child> . . . </adf-config>
adf-config.xml
ファイルの詳細は、「アプリケーション・コントローラ・プロジェクト・レベルのリソースについて」を参照してください。
geographicMap
コンポーネントで、ルート(route
)子コンポーネントを追加することで、想定されるウェイポイントを設定して、2点間のルートを表示できます。GoogleマップまたはOracle Maps Cloud Serviceは、どちらも、このユースケースを実装するためのプロバイダとして使用できます。
各geographicMap
コンポーネントには、ルートの子コンポーネントを複数設定して、それぞれに1つのルートを指定できます。ルートの出発点、目的地およびオプションでウェイポイントを指定するには、地理マップの点の位置子コンポーネントを使用します。慣例的に、セット内の最初の点の位置は出発点を、最後の点の位置は目的地をそれぞれ定義します。この2つの点の位置に挟まれているすべての点がルートのウェイポイントです。
マップ上のルート表示に使用する線の色、幅および不透明度を定義できます。また、車、自転車または徒歩のうち、どの手段のルートを優先するか、ヒントを指定することも可能です。
次の例は、MAF AMXページのroute
要素の定義方法を示しています。
<dvtm:geographicMap id="gm1"> <!-- route defined using a collection model --> <dvtm:route travelMode="driving" id="d1"> <amx:iterator value="#{el.collectionModel}" var="row"> <dvtm:pointLocation address="#{row.address}" type="address"/> </amx:iterator> </dvtm:route> <!-- route with explicitly defined start and destination --> <dvtm:route travelMode="driving|walking|bicycling" id="d2"> <!-- route origin --> <dvtm:pointLocation address="#{pageFlowScope.origin}" type="address"> <!-- route destination --> <dvtm:pointLocation address="#{pageFlowScope.destination}" type="address"/> </dvtm:route/> <dvtm:pointDataLayer id="pdl1"> ... </dvtm:pointDataLayer> <dvtm:pointDataLayer id="pdl2"> ... </dvtm:pointDataLayer> </dvtm:geographicMap>
エンド・ユーザーがルートを表す線の上でクリックまたはタップすると、ActionEvent
が起動します。このイベントを使用すると、action
属性を経由してナビゲーションを開始したり、actionListener
属性を使用してJavaレイヤーのハンドラを起動したりできます。このアクションは、setPropertyListener
、actionListener
、showPopupBehavior
およびshowPopupBehavior
子要素で指定されたイベント・リスナーと動作をトリガーする場合にも使用できます。詳細は、「イベント・リスナーの使用方法」を参照してください。
テーマ・マップ(thematicMap
)では、ビジネス・データをスタイル設定された領域内のパターンまたは関連付けられたマーカーとして表します。テーマ・マップでは、地理的な詳細なしで、データに焦点を合せます。
次の例は、MAF AMXファイルで定義されたthematicMap
要素とその子を示しています。
<dvtm:thematicMap id="tm1" animationOnDisplay="#{pageFlowScope.animationOnDisplay}" animationOnMapChange="#{pageFlowScope.animationOnMapChange}" animationDuration="#{pageFlowScope.animationDuration}" basemap="#{pageFlowScope.basemap}" tooltipDisplay="#{pageFlowScope.tooltipDisplay}" inlineStyle="#{pageFlowScope.inlineStyle}" zooming="#{pageFlowScope.zooming}" panning="#{pageFlowScope.panning}" initialZooming="#{pageFlowScope.initialZooming}"> <dvtm:areaLayer id="areaLayer1" layer="#{pageFlowScope.layer}" animationOnLayerChange= "#{pageFlowScope.animationOnLayerChange}" areaLabelDisplay="#{pageFlowScope.areaLabelDisplay}" labelType="#{pageFlowScope.labelType}" areaStyle="background-color" rendered="#{pageFlowScope.rendered}"> <dvtm:areaDataLayer id="areaDataLayer1" animationOnDataChange= "#{pageFlowScope.dataAnimationOnDataChange}" animationDuration= "#{pageFlowScope.dataAnimationDuration}" dataSelection="#{pageFlowScope.dataSelection}" var="row" value="#{bindings.thematicMapData.collectionModel}"> <dvtm:areaLocation id="areaLoc1" name="#{row.name}"> <dvtm:area action="sales" id="area1" shortDesc="#{row.name}"> <amx:setPropertyListener id="spl1" to= "#{DvtProperties.areaChartProperties.dataSelection}" from="#{row.name}" type="action"/> <dvtm:attributeGroups id="ag1" type="color" value="#{row.cat1}" /> </dvtm:area> </dvtm:areaLocation> </dvtm:areaDataLayer> </dvtm:areaLayer> <dvtm:legend id="l1" position="end"> <dvtm:legendSection id="ls1" source="ag1"/> </dvtm:legend> </dvtm:thematicMap>
図15-95 デザインタイムのテーマ・マップ
markerZoomBehavior
属性を使用すると、マップがズームされるとテーマ・マップのマーカーのスケール変更が有効化されます。rotation
属性を設定することで、マーカーの回転を有効化でき、この属性の値は、イメージの中心に対してマーカーが回転する(時計回りの度数)角度を表します。
MAF AMXテーマ・マップは、次の拡張機能をサポートしています。
カスタム・マーカー(「カスタム・マーカーの定義」を参照)
領域の分離(「分離領域の定義」を参照)
初期ズーム(「初期ズームの有効化」を参照)
カスタム・ベース・マップ(「カスタム・ベース・マップの定義」を参照)
thematicMap
要素およびその子要素の属性の詳細は、Oracle Mobile Application Frameworkタグ・リファレンスを参照してください。
MAF AMXテーマ・マップでは、MAF AMXイメージ・コンポーネントはサポートされていません。マップのpointLocation
内でイメージを使用するには、pointLocation
のmarker
子要素で、そのsource
属性を使用してイメージを指定します。source
属性がマーカーに対して設定されている場合、そのshape
属性はMAF AMXで無視されます。
sourceHover
、sourceSelected
およびsourceHoverSelected
属性で、ホバーおよび選択効果のイメージを指定できます。これらの1つが指定されていない場合、その特定のマーカー状態に対してはsource
属性によって指定されているイメージが使用されます。sourceSelected
が指定されている場合、sourceHoverSelected
が指定されていないときはその値が使用されます。イメージは、PNG、JPG、SVGなどモバイル・デバイスのブラウザでサポートされている任意のフォーマットで構いません。
データの地理的場所の伝達にリージョン・アウトラインが常に必要であるわけではありません。かわりに、テーマ・マップ・コンポーネントには、領域内でイメージやマーカーをセンタリングするためのオプションがあるため、リージョン・アウトラインが描画されない見えない領域レイヤーを定義するオプションがあります。
見えない領域レイヤーを定義するには、CSS値のbackground-color
およびborder-color
を受け入れるareaLayer
のareaStyle
属性を使用します。
<dvtm:areaLayer id="areaLayer1" ... areaStyle="background-color:transparent;border-color:transparent">
この属性によって、dvtm-area
スキニング・キーを使用することなく、デフォルトの領域レイヤーの色および枠線の形状をオーバーライドできます。
MAF AMXテーマ・マップ・コンポーネントを構成し、areaDataLayer
のisolatedRowKey
属性を使用してマップの単一の分離領域に収まるようにレンダリングおよびズームできますが、この場合、その領域または領域データ・レイヤーの残りの領域はレンダリングされません。
注意:
分離できるのは、1つのマップで1つの領域のみです。
初期ズームでは、マップ・コンポーネントを通常どおりレンダリングし、その後、マーカーと領域の両方を含むデータ・オブジェクトにズームして合せることができます。この機能を有効にするには、テーマ・マップのinitialZooming
属性を使用します。
カスタム・ベース・マップ・サポートの一環として、MAF AMXでは、テーマ・マップ・コンポーネントに対して次のことを指定できます。
様々な解像度のイメージを持つレイヤー。
点の位置(pointLocation
)から参照できる名前付きの点を持つ点レイヤー。
カスタム・ベース・マップ・メタデータXMLファイルを指すテーマ・マップのsource
属性。
注意:
MAF AMXでは、カスタム・ベース・マップは次のことはサポートされていません。
定型化された領域: 領域レイヤーはカスタム・ベース・マップに定義できないため、ポイント・レイヤーを使用します。
リソース・バンドル: ロケール固有のツールチップを追加するには、マーカー(marker
)のshortDesc
属性でELを使用します。
カスタム・ベース・マップを作成するには、メタデータ・ファイルの定義を指す領域レイヤーを指定します(次の例を参照)。基本的なカスタム・ベース・マップを定義するには、背景レイヤーおよびポインタ・データ・レイヤーを指定します。MAF AMXゲージ・コンポーネントと同様に、メタデータ・ファイルで、画面解像度および表示方向ごとに異なるイメージを指定できます。ゲージタイプ・コンポーネントと同様に、テーマ・マップでは、画面解像度および方向に基づいてレイヤーに適切なイメージが選択されます。表示方向は左から右です。
レイヤーはいくつでも定義できます。すべてのレイヤーではすべての名前付きポイントにアクセスできます。名前付きポイントのX位置とY位置は、最初のイメージのイメージ・サイズにマッピングされます。次のいずれかが起きると、テーマ・マップ・コンポーネントはポイントの位置を計算します。
ズーム・インが実行されます。
違ったイメージが違った解像度で表示されます。
<basemap id="car" > <layer id="exterior" > <image source="/maps/car-800x800.png" width="2560" height="1920" /> <image source="/maps/car-200x200.png" width="640" height="480" /> </layer> </basemap>
次の例は、点によってカスタム領域レイヤーを宣言するMAF AMXファイルを示しています。このMAF AMXファイルは、使用可能なイメージ(実際は、同じイメージの拡大縮小されたバージョン)のリストを含む、前の例に示したメタデータ・ファイルを指しています。
<dvtm:thematicMap id="tm1" basemap="car" source="customBasemaps/map1.xml" > <dvtm:areaLayer id="al1" layer="exterior" > <dvtm:pointDataLayer id="pdl1" var="row" value="{bindings.thematicMapData.collectionModel}" > <dvtm:pointLocation id="pl1" type="pointXY" pointX="#{row.x}" pointY="#{row.y}" > <dvtm:marker id="m1" fillColor="#FFFFFF" shape="circle" /> </dvtm:pointLocation> </dvtm:pointDataLayer> </dvtm:areaLayer> </dvtm:thematicMap>
前述の例では、ベース・マップIDはthematicMap
のbasemap
属性と照合され、レイヤーIDはareaLayer
のlayer
属性と照合されます。点は(前述のベース・マップの場合と同様に)X座標とY座標で定義され、データが更新されたときに変更される可能性がある動的な点に対応します。
次の例は、点によってカスタム領域レイヤーを宣言するもう1つの方法を示しています。この例では、pointDataLayer
は、thematicMap
の直接の子です。方法は異なりますが、前の例で示した宣言と同じ結果がレンダリングされます。
<dvtm:thematicMap id="demo1" basemap="car" source="customBasemaps/map1.xml" > <dvtm:areaLayer id="al1" layer="exterior" /> <dvtm:pointDataLayer id="pdl1" var="row" value="{bindings.thematicMapData.collectionModel}" > <dvtm:pointLocation id="pl1" type="pointXY" pointX="#{row.x}" pointY="#{row.y}" > <dvtm:marker id="m1" fillColor="#FFFFFF" shape="circle" /> </dvtm:pointLocation> </dvtm:pointDataLayer> </dvtm:thematicMap>
静的な点を含むカスタム・ベース・マップを作成するには、次の例に示すメタデータ・ファイルで点を名前で指定します。このプロセスは、事前定義済ベース・マップに市区町村のマーカーを追加する場合に類似しています。
<basemap id="car" > <layer id="exterior" > <image source="/maps/car-800x800.png" width="2560" height="1920" /> <image source="/maps/car-800x800-rtl.png" width="2560" height="1920" dir="rtl" /> <image source="/maps/car-200x200.png" width="640" height="480" /> <image source="/maps/car-200x200-rtl.png" width="640" height="480" dir="rtl" /> </layer> <points > <point name="hood" x="219.911" y="329.663" /> <point name="frontLeftTire" x="32.975" y="32.456" /> <point name="frontRightTire" x="10.334" y="97.982" /> </points> </basemap>
名前付き点のX位置およびY位置は、layer
の最初のimage
要素のイメージのサイズにマップされるものと想定されます。
注意:
点は、ベース・マップ内でグローバルであり、すべてのレイヤーに適用されるため、点は特定のレイヤーおよびそのイメージには定義できません。
次の例は、指定した点によってカスタム領域レイヤーを宣言するMAF AMXファイルを示しています。
<dvtm:thematicMap id="demo1" basemap="car" source="customBasemaps/map1.xml" > <dvtm:areaLayer id="al1" layer="exterior" /> <dvtm:pointDataLayer id="pdl1" var="row" value="#{bindings.thematicMapData.collectionModel}" > <dvtm:pointLocation id="pl1" type="pointName" pointName="#{row.name}" > <dvtm:marker id="m1" fillColor="#FFFFFF" shape="circle" /> </dvtm:pointLocation> </dvtm:pointDataLayer> </dvtm:thematicMap>
前のMAF AMXファイルは、点とその名前のリストを含む、次の例に示すメタデータ・ファイルを指しています。
<basemap id="car" > <layer id="exterior" > <image source="/maps/car-800x800.png" width="2560" height="1920" /> <image source="/maps/car-200x200.png" width="640" height="480" /> </layer> </basemap>
MAF AMXデータ視覚化では、marker
のactionListener
属性はサポートされていません。かわりに、action
属性を使用することで、同じ機能を実現できます。
デフォルトCSS設定を上書きするか、カスタムJavaScriptファイルを使用することで、テーマ・マップ・コンポーネントをスタイル設定できます。これらのファイルの拡張方法の詳細は、「データ視覚化コンポーネントのスタイル設定方法」を参照してください。
次の例は、テーマ・マップ・コンポーネントのデフォルトCSSスタイルを示しています。
.dvtm-thematicMap { background-color: #FFFFFF; -webkit-user-select: none; -webkit-touch-callout: none; -webkit-tap-highlight-color: rgba(0,0,0,0); } .dvtm-areaLayer { background-color: #B8CDEC; border-color: #FFFFFF; border-width: 0.5px; /* border style and color must be set when setting border width */ border-style: solid; color: #000000; font-family: tahoma, sans-serif; font-size: 13px; font-weight: bold; font-style: normal; } .dvtm-area { border-color: #FFFFFF; border-width: 0.5px; /* border style and color must be set when setting border width */ border-style: solid; } .dvtm-marker { background-color: #61719F; opacity: 0.7; color: #FFFFFF; font-family: tahoma, sans-serif; font-size: 13px; font-weight: bold; font-style: normal; border-style: solid border-color: #FFCC33 border-width: 12px }
スタイル設定のいくつかは、CSSを使用して指定できません。それらは、かわりにカスタムJavaScriptファイルを使用して定義する必要があります。次の例は、CSSを使用しないでテーマ・マップ・コンポーネントにカスタム・スタイルを適用する方法を示しています。
my-custom.js: CustomThematicMapStyle = { // selected area properties 'areaSelected': { // selected area border color 'borderColor': "#000000", // selected area border width 'borderWidth': '1.5px' }, // area properties on mouse hover 'areaHover': { // area border color on hover 'borderColor': "#FFFFFF", // area border width on hover 'borderWidth': '2.0px' }, // marker properties 'marker': { // separator upper color 'scaleX': 1.0, // separator lower color 'scaleY': 1.0, // should display title separator 'type': 'circle' }, // thematic map legend properties 'legend': { // legend position, such as none, auto, start, end, top, bottom 'position': "auto" } }; })();
注意:
CustomThematicMapStyle
オブジェクトの名前およびプロパティ名は変更できません。かわりに、特定のプロパティ値を、アプリケーションのニーズに合わせて変更できます。カスタムCSSおよびJavaScriptファイルをアプリケーションに追加する方法の詳細は、「アプリケーション機能のコンテンツをMAF AMXページまたはタスク・フローとして定義する方法」を参照してください。
attributeGroups
属性がテーマ・マップ・コンポーネント用に定義されている場合、CustomThematicMapStyle
を使用して、そのコンポーネントの図形と色のデフォルト・セットを定義できます。この場合、CustomThematicMapStyleオブジェクトの構造は、次の例のようになっている必要があります。styleDefaults
は、次のフィールドを含むネストされたオブジェクトです。
colors
: 領域とマーカーに使用される色のセットを表します。
shapes
: マーカーに使用される図形のセットを表します。
window['CustomThematicMapStyle'] = { // custom style values 'styleDefaults': { // custom color palette 'colors': ["#000000", "#ffffff"], // custom marker shapes 'shapes' : ['circle', 'square'] } };
MapBoundsChangeEvent
を使用して、地図マップ・コンポーネントでの次のマップ・ビューのプロパティ変更を処理できます。
ズーム・レベルに対する変更。
マップ境界に対する変更。
マップの中心に対する変更。
これらの変更が発生すると、コンポーネントは、新しいマップ・ビューのプロパティ値でロードされるイベントを起動します。
mapBoundsChangeListener
を地理マップの属性として定義できます。
地理マップ・コンポーネントで、MapInputEvent
を使用してタップおよびマウス・クリックなどのエンド・ユーザー・アクションを処理できます。これらのアクションが発生すると、コンポーネントは、マップの緯度および経度、およびアクションのタイプ(マウス・ダウン、マウス・アップ、クリックなど)に関する情報でロードされるイベントを起動します。
mapInputListener
を地理マップ・コンポーネントの属性として定義できます。
詳細は、次を参照してください。
Oracle Mobile Application Framework Java APIリファレンス
Oracle Mobile Application Frameworkタグ・リファレンス
ツリーマップ(treemap
)は、2つのディメンションに渡って(そのノードのサイズおよび色で)階層データを表示します(treemapNode
)。
「コンポーネント」ウィンドウで、「ツリーマップ」は「MAF AMXデータ視覚化」→「共通」→「その他」の下にあり、その子コンポーネントは「MAF AMXデータ視覚化」→「その他のタイプ固有の子タグ」→「サンバーストおよびツリーマップ」および「MAF AMXデータ視覚化」→「共有子タグ」の下にあります(図15-96を参照)。
図15-96 ツリーマップ・コンポーネント
次の例は、MAF AMXファイルで定義されたtreemap
要素とその子を示しています。
<dvtm:treemap id="treemap1" value="#{bindings.treemapData.collectionModel}" var="row" animationDuration="#{pageFlowScope.animationDuration}" animationOnDataChange="#{pageFlowScope.animationOnDataChange}" animationOnDisplay="#{pageFlowScope.animationOnDisplay}" layout="#{pageFlowScope.layout}" nodeSelection="#{pageFlowScope.nodeSelection}" rendered="#{pageFlowScope.rendered}" emptyText="#{pageFlowScope.emptyText}" inlineStyle="#{pageFlowScope.inlineStyle}" sizeLabel="#{pageFlowScope.sizeLabel}" styleClass="dvtm-gallery-component" colorLabel="#{pageFlowScope.colorLabel}" sorting="#{pageFlowScope.sorting}" selectedRowKeys="#{pageFlowScope.selectedRowKeys}" isolatedRowKey="#{pageFlowScope.isolatedRowKey}" legendSource="ag1"> <dvtm:treemapNode id="node1" fillPattern="#{pageFlowScope.fillPattern}" label="#{row.label}" labelDisplay="#{pageFlowScope.labelDisplay}" value="#{row.marketShare}" labelHalign="#{pageFlowScope.labelHalign}" labelValign="#{pageFlowScope.labelValign}"> <dvtm:attributeGroups id="ag1" type="color" value="#{row.deltaInPosition}" attributeType="continuous" minLabel="-1.5%" maxLabel="+1.5%" minValue="-1.5" maxValue="1.5" > <amx:attribute id="a1" name="color1" value="#ed6647" /> <amx:attribute id="a2" name="color2" value="#f7f37b" /> <amx:attribute id="a3" name="color3" value="#68c182" /> </dvtm:attributeGroups> </dvtm:treemapNode> </dvtm:treemap>
図15-97 デザインタイムのツリーマップ
attributeGroups
要素のattributeType
属性をcontinuous
に設定することで、グラデーション色を使用してツリーマップ・アイテムに関連付けられている値の視覚化を有効にでき、この色の強度は指定された範囲内の相対値を表します。
treemap
要素およびその子要素の属性の詳細は、Oracle Mobile Application Frameworkタグ・リファレンスを参照してください。
デフォルトCSS設定を上書きするか、カスタムJavaScriptファイルを使用することで、ツリーマップ・コンポーネントをスタイル設定できます。これらのファイルの拡張方法の詳細は、「データ視覚化コンポーネントのスタイル設定方法」を参照してください。
次の例は、オーバーライドできるツリーマップ・コンポーネントのデフォルトのCSSスタイルを示しています。
.dvtm-treemap { border-style: solid; border-color: #E2E8EE; border-radius: 3px; background-color: #EDF2F7; ... }
次の例は、オーバーライドできるツリーマップ・ノードのデフォルトのCSSスタイルを示しています。
.dvtm-treemapNodeSelected { // Selected node outer border color border-top-color: #E2E8EE; // Selected node inner border color border-bottom-color: #EDF2F7; }
次の例は、カスタムCSSを使用してスタイルを設定できる、ツリーマップ・ノードのlabel
テキストCSSプロパティを示しています。
.dvtm-treemapNodeLabel { font-family: Helvetica, sans-serif; font-size: 14px; font-style: normal; font-weight: normal; color: #7097CF; ... }
スタイル設定のいくつかは、CSSを使用して指定できません。それらは、かわりにカスタムJavaScriptファイルを使用して定義する必要があります。次の例は、CSSを使用しないでツリーマップ・コンポーネントにカスタム・スタイルを適用する方法を示しています。
my-custom.js: window["CustomTreemapStyle"] = { // treemap properties "treemap" : { // Specifies the animation effect when the data changes - none, auto "animationOnDataChange": "auto", // Specifies the animation that is shown on initial display - none, auto "animationOnDisplay": "auto", // Specifies the animation duration in milliseconds "animationDuration": "500", // The text of the component when empty "emptyText": "No data to display", // Specifies the layout of the treemap - // squarified, sliceAndDiceHorizontal, sliceAndDiceVertical "layout": "squarified", // Specifies the selection mode - none, single, multiple "nodeSelection": "multiple", // Specifies whether or not the nodes are sorted by size - on, off "sorting": "on" }, // treemap node properties "node" : { // Specifies the label display behavior for nodes - node, off "labelDisplay": "off", // Specifies the horizontal alignment for labels displayed // within the node - center, start, end "labelHalign": "end", // Specifies the vertical alignment for labels displayed // within the node - center, top, bottom "labelValign": "center" }, }
サンバースト(sunburst
)は、2つのディメンションに渡って(そのノードのサイズおよび色で)階層データを表示します(sunburstNode
)。
「コンポーネント」ウィンドウで、「サンバースト」は「MAF AMXデータ視覚化」→「共通」→「その他」の下にあり、その子コンポーネントは「MAF AMXデータ視覚化」→「その他のタイプ固有の子タグ」→「サンバーストおよびツリーマップ」および「MAF AMXデータ視覚化」→「共有子タグ」の下にあります。
次の例は、MAF AMXファイルで定義されたsunburst
要素とその子を示しています。
<dvtm:sunburst id="sunburst1" value="#{bindings.sunburstData.collectionModel}" var="row" animationDuration="#{pageFlowScope.animationDuration}" animationOnDataChange="#{pageFlowScope.animationOnDataChange}" animationOnDisplay="#{pageFlowScope.animationOnDisplay}" colorLabel="#{pageFlowScope.colorLabel}" emptyText="#{pageFlowScope.emptyText}" inlineStyle="#{pageFlowScope.inlineStyle}" nodeSelection="#{pageFlowScope.nodeSelection}" rendered="#{pageFlowScope.rendered}" rotation="#{pageFlowScope.rotation}" shortDesc="#{pageFlowScope.shortDesc}" sizeLabel="#{pageFlowScope.sizeLabel}" sorting="#{pageFlowScope.sorting}" rotationAngle="#{pageFlowScope.startAngle}" styleClass="#{pageFlowScope.styleClass}" legendSource="ag1"> <dvtm:sunburstNode id="node1" fillPattern="#{pageFlowScope.fillPattern}" label="#{row.label}" labelDisplay="#{pageFlowScope.labelDisplay}" value="#{pageFlowScope.showRadius ? 1 : row.marketShare}" labelHalign="#{pageFlowScope.labelHalign}" radius="#{pageFlowScope.showRadius ? row.booksCount : 1}"> <dvtm:attributeGroups id="ag1" type="color" value="#{row.deltaInPosition}" attributeType="continuous" minLabel="-1.5%" maxLabel="+1.5%" minValue="-1.5" maxValue="1.5"> <amx:attribute id="a1" name="color1" value="#ed6647" /> <amx:attribute id="a2" name="color2" value="#f7f37b" /> <amx:attribute id="a3" name="color3" value="#68c182" /> </dvtm:attributeGroups> </dvtm:sunburstNode> </dvtm:sunburst>
図15-98 デザインタイムのサンバースト
attributeGroups
要素のattributeType
属性をcontinuous
に設定することで、グラデーション色を使用してサンバースト・アイテムに関連付けられている値の視覚化を有効にでき、この色の強度は指定された範囲内の相対値を表します。
sunburst
要素およびその子要素の属性の詳細は、Oracle Mobile Application Frameworkタグ・リファレンスを参照してください。
デフォルトCSS設定を上書きするか、カスタムJavaScriptファイルを使用することで、サンバースト・コンポーネントをスタイル設定できます。これらのファイルの拡張方法の詳細は、「データ視覚化コンポーネントのスタイル設定方法」を参照してください。
次の例は、オーバーライドできるサンバースト・コンポーネントのデフォルトのCSSスタイルを示しています。
.dvtm-sunburst { border-style: solid; border-color: #E2E8EE; border-radius: 3px; background-color: #EDF2F7; ... }
次の例は、オーバーライドできるサンバースト・ノードのデフォルトのCSSスタイルを示しています。
.dvtm-sunburstNode { // Node border color border-color: "#000000"; } .dvtm-sunburstNodeSelected { // Selected node border color border-color: "#000000"; }
次の例は、カスタムCSSを使用してスタイルを設定できる、サンバースト・ノードのlabel
テキストCSSプロパティを示しています。
.dvtm-sunburstNodeLabel { font-family: Helvetica, sans-serif; font-size: 14px; font-style: normal; font-style: normal; color: #7097CF; ... }
スタイル設定のいくつかは、CSSを使用して指定できません。それらは、かわりにカスタムJavaScriptファイルを使用して定義する必要があります。次の例は、CSSを使用しないでサンバースト・コンポーネントにカスタム・スタイルを適用する方法を示しています。
my-custom.js: window["CustomSunburstStyle"] = { // sunburst properties "sunburst" : { // Specifies whether or not the client side rotation is enabled - on, off "rotation": "off", // The text of the component when empty "emptyText": "No data to display", // Specifies the selection mode - none, single, multiple "nodeSelection": "multiple", // Animation effect when the data changes - none, auto "animationOnDataChange": "auto", // Specifies the animation that is shown on initial display - none, auto "animationOnDisplay": "auto", // Specifies the animation duration in milliseconds "animationDuration": "500", // Specifies the starting angle of the sunburst "startAngle": "90", // Specifies whether or not the nodes are sorted by size - on, off "sorting": "on" }, // sunburst node properties "node" : { // Specifies whether or not the label is displayed - on, off "labelDisplay": "off" } }
時系列(timeline
)は、イベントを時系列で表示できるインタラクティブ・コンポーネントであり、定義されていてまだ調整可能な時間範囲(ズームに使用可能)内を前後に移動できます。
イベントは、時系列アイテム・コンポーネント(timelineItem
)によって表され、これにはタイトル、説明および継続時間の塗りつぶし色が含まれます。時系列コンポーネントを構成して、すべての使用可能なイベントを表示するサマリー・ウィンドウ(overview
の子要素)を表示できます。エンド・ユーザーは、モバイル・デバイス上のピンチおよびスプレッドのジェスチャーを使用して、イベントをズーム・インおよびズーム・アウトできます。さらに、2つの時系列を構成して2系列のイベントを表示し、関連する情報を並べて比較できます。
orientation
属性を使用して、時系列コンポーネントを水平または垂直のいずれかで定義できます。
注意:
MAF AMXでは、時系列と同様のコンポーネントで使用できることが多い次の機能、子要素およびプロパティはサポートしていません。
ネストしたUIコンポーネント
アニメーション
属性および時間範囲の変更検出
時間のフェッチ
カスタム・タイム・スケール
時間通貨
部分トリガー
データのソート
書式設定された時間範囲
タイムゾーン
可視性
「コンポーネント」ウィンドウで、「時系列」は「MAF AMXデータ視覚化」→「共通」→「その他」の下にあり、その子コンポーネントは「MAF AMXデータ視覚化」→「その他のタイプ固有の子タグ」→「時系列」および「MAF AMXデータ視覚化」→「共有子タグ」の下にあります。
次の例は、MAF AMXファイルで定義されたtimeline
要素とその子を示しています。
<dvtm:timeline id="tl" itemSelection="#{pageFlowScope.itemSelection}" startTime="#{pageFlowScope.startTime}" endTime="#{pageFlowScope.endTime}"> <dvtm:timelineSeries id="ts1" label="#{pageFlowScope.s1Label}" value="#{bindings.series1Data.collectionModel}" var="row" selectionListener= "#{PropertyBean.timelineSeries1SelectionHandler}"> <dvtm:timelineItem id="ti1" startTime="#{row.startDate}" endTime="#{row.endDate}" title="#{row.title}" description="#{row.description}" durationFillColor="#AAAAAA"/> </dvtm:timelineSeries> <dvtm:timeAxis id="ta1" scale="#{pageFlowScope.scale}"/> </dvtm:timeline>
図15-99 デザインタイムの時系列
時系列アイテムのdurationFillColor
属性を使用して、継続時間バーの塗りつぶし色を制御できます。
時系列で2つの時間スケールを同時に表示するには、2番目の軸のスケールを決定する時間軸のscale
属性を使用します。
時系列は水平および垂直にスクロールできます。コンポーネントがスクロール可能な(表示可能な表示領域の外側にデータが含まれている)場合、スクロールの方向を指す矢印によって示されます。
ヒント:
時系列開始時間は、最初の時系列アイテムの開始時間と同じ値に設定されている場合、対応する時系列アイテム・コンポーネントのバブルは切り捨てられて表示されることがあります。また、時系列終了時間が最後の時系列アイテムの終了時間と同じ値に設定されている場合、対応する時系列アイテム・コンポーネントのバブルは切り捨てられて表示されることがあります。時系列アイテムのバブルが完全に見られるように、時系列コンポーネントの開始時間と終了時間を設定する必要があります。
timeline
要素およびその子要素の属性の詳細は、Oracle Mobile Application Frameworkタグ・リファレンスを参照してください。
デフォルトCSS設定を上書きするか、カスタムJavaScriptファイルを使用することで、時系列コンポーネントをスタイル設定できます。これらのファイルの拡張方法の詳細は、「データ視覚化コンポーネントのスタイル設定方法」を参照してください。
オーバーライド可能な次のCSSスタイル・クラスは、時系列およびその子コンポーネント用に定義されます。
.dvtm-timeline
サポートされているプロパティ: all
.timelineSeries-backgroundColor
サポートされているプロパティ: color
.timelineSeries-labelStyle
サポートされるプロパティ: font-family、font-size、font-weight、color、font-style
.timelineSeries-emptyTextStyle
サポートされるプロパティ: font-family、font-size、font-weight、color、font-style
.timelineItem-backgroundColor
サポートされているプロパティ: color
.timelineItem-selectedBackgroundColor
サポートされているプロパティ: color
.timelineItem-borderColor
サポートされているプロパティ: color
.timelineItem-selectedBorderColor
サポートされているプロパティ: color
.timelineItem-borderWidth
サポートされているプロパティ: width
.timelineItem-selectedBorderWidth
サポートされているプロパティ: width
.timelineItem-feelerColor
サポートされているプロパティ: color
.timelineItem-selectedFeelerColor
サポートされているプロパティ: color
.timelineItem-feelerWidth
サポートされているプロパティ: width
.timelineItem-selectedFeelerWidth
サポートされているプロパティ: width
.timelineItem-descriptionStyle
サポートされているプロパティ: font-family、font-size、font-weight、color、font-style
.timelineItem-titleStyle
サポートされているプロパティ: font-family、font-size、font-weight、color、font-style
.timeAxis-separatorColor
サポートされているプロパティ: color
.timeAxis-backgroundColor
サポートされているプロパティ: color
.timeAxis-borderColor
サポートされているプロパティ: color
.timeAxis-borderWidth
サポートされているプロパティ: width
.timeAxis-labelStyle
サポートされているプロパティ: font-family、font-size、font-weight、color、font-style
次の例は、時系列コンポーネントのデフォルト・スタイルをオーバーライドするために使用できるカスタムJavaScriptファイルを示しています。
// Custom timeline style definition with listing // of all properties that can be overriden window["CustomTimelineStyle"] = { // Determines if items in the timeline are selectable "itemSelection": none // Timeline properties "timelineSeries" : { // Duration bars color palette "colors" : [comma separated list of hex colors] } }
NBox (nBox
)コンポーネントは、2つのディメンションに渡ってデータを表し、各ディメンションは多数の範囲に分かれ、その交点は各データが配置される個別のセルを形成します。
「コンポーネント」ウィンドウで、「NBox」は「MAF AMXデータ視覚化」→「共通」→「その他」の下にあり、その子コンポーネントは「MAF AMXデータ視覚化」→「その他のタイプ固有の子タグ」→「NBox」および「MAF AMXデータ視覚化」→「共有子タグ」の下にあります(ツリーマップ・コンポーネントの作成方法を参照)。
次の例は、MAF AMXファイルで定義されたnBox
要素とその子を示しています。
<dvtm:nBox id="nBox1" var="item" value="#{bindings.NBoxNodesDataList.collectionModel}" columnsTitle="#{pageFlowScope.columnsTitle}" emptyText="#{pageFlowScope.emptyText}" groupBy="#{pageFlowScope.groupBy}" groupBehavior="#{pageFlowScope.groupBehavior}" highlightedRowKeys="#{pageFlowScope.showHighlightedNodes ? pageFlowScope.highlightedRowKeys : ''}" inlineStyle="#{pageFlowScope.inlineStyle}" legendDisplay="#{pageFlowScope.legendDisplay}" maximizedColumn="#{pageFlowScope.maximizedColumn}" maximizedRow="#{pageFlowScope.maximizedRow}" nodeSelection="#{pageFlowScope.nodeSelection}" rowsTitle="#{pageFlowScope.rowsTitle}" selectedRowKeys="#{pageFlowScope.selectedRowKeys}" shortDesc="#{pageFlowScope.shortDesc}"> <amx:facet name="rows"> <dvtm:nBoxRow value="low" label="Low" id="nbr1"/> <dvtm:nBoxRow value="medium" label="Med" id="nbr2"/> <dvtm:nBoxRow value="high" label="High" id="nbr3"/> </amx:facet> <amx:facet name="columns"> <dvtm:nBoxColumn value="low" label="Low" id="nbc2"/> <dvtm:nBoxColumn value="medium" label="Med" id="nbc1"/> <dvtm:nBoxColumn value="high" label="High" id="nbc3"/> </amx:facet> <amx:facet name="cells"> <dvtm:nBoxCell row="low" column="low" label="" background="rgb(234,153,153)" id="nbc4"/> <dvtm:nBoxCell row="medium" column="low" label="" background="rgb(234,153,153)" id="nbc5"/> <dvtm:nBoxCell row="high" column="low" label="" background="rgb(159,197,248)" id="nbc6"/> <dvtm:nBoxCell row="low" column="medium" label="" background="rgb(255,229,153)" id="nbc7"/> <dvtm:nBoxCell row="medium" column="medium" label="" background="rgb(255,229,153)" id="nbc8"/> <dvtm:nBoxCell row="high" column="medium" label="" background="rgb(147,196,125)" id="nbc9"/> <dvtm:nBoxCell row="low" column="high" label="" background="rgb(255,229,153)" id="nbc10"/> <dvtm:nBoxCell row="medium" column="high" label="" background="rgb(147,196,125)" id="nbc11"/> <dvtm:nBoxCell row="high" column="high" label="" background="rgb(147,196,125)" id="nbc12"/> </amx:facet> <dvtm:nBoxNode id="nbn1" row="#{item.row}" column="#{item.column}" label="#{item.name}" labelStyle="font-style:italic" secondaryLabel="#{item.job}" secondaryLabelStyle="font-style:italic" shortDesc="#{item.name + ': ' + item.job}"> <dvtm:attributeGroups id="ag1" type="indicatorShape" value="#{item.indicator1}" rendered="#{pageFlowScope.showIndicator}"/> <dvtm:attributeGroups id="ag2" type="indicatorColor" value="#{item.indicator2}" rendered="#{pageFlowScope.showIndicator}"/> <dvtm:attributeGroups id="ag3" type="color" value="#{item.group}" rendered="#{pageFlowScope.showColors}"/> </dvtm:nBoxNode> </dvtm:nBox>
図15-100 デザインタイムのNBox
nBox
要素およびその子要素の属性の詳細は、Oracle Mobile Application Frameworkタグ・リファレンスを参照してください。
データ・バインディングを定義(データの最初のシナリオで)または編集するには、統計図表(pictoChart
)を使用します。データ・バインディングは、データ・コントロールおよびメソッドをUIコンポーネントに結び付ける方法です。
統計図表では、絶対数、または人口の様々な部分の相対サイズを視覚化するためにアイコンが使用されます。それらは、従来の表およびリストよりも効果的な数値情報表示方法として、インフォグラフィックで使用されます。統計図表は、デフォルトのフロー・レイアウトで使用するためにあります。テキストまたはデータ視覚化コンポーネント内の情報を視覚的に拡張またはサポートするために簡単に使用できるため、これにより、ツールが多用途になります。
統計図表は、「コンポーネント」ウィンドウ内の「MAF AMXデータ視覚化」→「共通」→「その他」の下にあります。次の例は、MAF AMXファイルで定義された統計図表要素とその子を示しています。
<dvtm:pictoChart id="pictoChart2" animationDuration="#{pageFlowScope.animationDuration}" animationOnDataChange="#{pageFlowScope.animationOnDataChange}" animationOnDisplay="#{pageFlowScope.animationOnDisplay}" columnCount="#{pageFlowScope.columnCount}" columnWidth="#{pageFlowScope.columnWidth}" emptyText="#{pageFlowScope.emptyText}" inlineStyle="#{pageFlowScope.inlineStyle}" layout="#{pageFlowScope.layout}" layoutOrigin="#{pageFlowScope.layoutOrigin}" rendered="#{pageFlowScope.rendered}" rolloverBehavior="#{pageFlowScope.rolloverBehavior}" rolloverBehaviorDelay="#{pageFlowScope.rolloverBehaviorDelay}" rowCount="#{pageFlowScope.rowCount}" rowHeight="#{pageFlowScope.rowHeight}" selectedRowKeys="#{pageFlowScope.selectedRowKeys}" shortDesc="#{pageFlowScope.shortDesc}" styleClass="#{pageFlowScope.styleClass}"> <dvtm:pictoChartItem id="pci21" borderColor="#{pageFlowScope.borderColor}" borderWidth="#{pageFlowScope.borderWidth}" color="#{pageFlowScope.color1}" columnSpan="#{pageFlowScope.span1}" count="#{pageFlowScope.count1}" rowSpan="#{pageFlowScope.span1}"="#{pageFlowScope.shape}"/> <dvtm:pictoChartItem id="pci22" borderColor="#{pageFlowScope.borderColor}" borderWidth="#{pageFlowScope.borderWidth}" color="#{pageFlowScope.color2}" columnSpan="#{pageFlowScope.span2}" count="#{pageFlowScope.count2}" rowSpan="#{pageFlowScope.span2}" shape="#{pageFlowScope.shape}"/> <dvtm:pictoChartItem id="pci23" borderColor="#{pageFlowScope.borderColor}" borderWidth="#{pageFlowScope.borderWidth}" color="#{pageFlowScope.color3}" columnSpan="#{pageFlowScope.span3}" count="#{pageFlowScope.count3}" rowSpan="#{pageFlowScope.span3}" shape="#{pageFlowScope.shape}"/> </dvtm:pictoChart>
図15-101 デザインタイムの統計図表
マップ・コンポーネント、サンバースト、ツリーマップ、時系列、統計図表およびNBoxの様々な子要素を定義できます。使用可能な子要素およびその属性の詳細は、Oracle Mobile Application Frameworkタグ・リファレンスを参照してください。
JDeveloperでは、マップ、サンバースト、ツリーマップ、時系列、統計図表およびNBoxの子コンポーネントは、「コンポーネント」ウィンドウの「MAF AMXデータ視覚化」→「その他のタイプ固有の子タグ」および「MAF AMXデータ視覚化」→「共有子タグ」の下にあります(図15-102を参照)。
図15-102 マップ、サンバースト、ツリーマップ、時系列、統計図表およびNBoxの子コンポーネントの作成
「データ・コントロール」ウィンドウから挿入されたデータ・コレクションを使用して、データバインドされたデータ視覚化コンポーネントを宣言的に作成できます(「MAF AMXページへのデータ・コントロールの追加方法」を参照)。図15-116に示す「コンポーネント・ギャラリ」ダイアログで、いくつかのデータ視覚化コンポーネント・カテゴリ、タイプおよびレイアウトのオプションの中から選択できます。
図15-103 チャート・コンポーネントを作成するコンポーネント・ギャラリ
図15-104 ゲージ・コンポーネントを作成するコンポーネント・ギャラリ
図15-105 テーマ・マップ・コンポーネントを作成するコンポーネント・ギャラリ
注意:
いくつかのデータ視覚化コンポーネント・タイプには、特別な種類のデータが必要です。選択したコンポーネントのタイプの表示に十分なデータが含まれていないデータ・コレクションにコンポーネントをバインドすると、コンポーネントは表示されず、データが不十分であることを示すメッセージが表示されます。
「コンポーネント・ギャラリ」の表示をトリガーするには、「データ・コントロール」ウィンドウからMAF AMXページにコレクションをドラッグ・アンド・ドロップし、表示されるコンテキスト・メニューから「MAFチャート」、「MAFゲージ」または「MAFテーマ・マップ」のいずれかを選択します。(図15-106を参照)。
図15-106 データバインドされたデータ視覚化コンポーネントの作成
「コンポーネント・ギャラリ」から新しいデータバインド・コンポーネントのカテゴリ、タイプおよびレイアウトを選択し、「OK」をクリックすると、データ・バインディング・ダイアログを使用してデータ視覚化コンポーネントのデータ・コレクション属性のバインディングを開始できます。ダイアログの名前と、入力フィールド・ラベルは、選択したデータ視覚化コンポーネントのカテゴリおよびタイプによって異なります。図15-107に示すように、たとえば、カテゴリとして「棒」を、タイプとして「棒」を選択した場合、表示されるダイアログの名前は「モバイル棒チャートの作成」で、入力フィールドには「棒」、「X軸」および「凡例ラベル」というラベルが付けられます。様々なフィールドへの属性の現在のマッピングに基づいた、チャートの外観の動的なサンプルが、ダイアログの中央に表示されます。このサンプルの周りの領域はインタラクティブで、「面」、「棒」または「折れ線」、「X軸」および「凡例ラベル」フィールドにリンクされており、「使用可能」リストから属性をドラッグ・アンド・ドロップするためのもう1つの対象として使用できます。
図15-107 データバインドされたチャートのデータ値の指定
データ・コレクション内の属性には、データ値またはデータ値のカテゴリを指定できます。データ値は、棒の高さなどのマーカーまたは散布図のポイントで示される数字です。データ値のカテゴリは、軸ラベルとして表されるメンバーです。バインディング内で属性が担うロール(データ値またはID)は、データ型(グラフには数値データ値が必要)およびマップされる場所(棒やX軸など)の両方によって決まります。
「コンポーネント・ギャラリ」を使用してデータバインド・ゲージ・コンポーネントを作成し、カテゴリとして「LED」を選択し、タイプとして「星形LED」を選択した場合、表示されるダイアログの名前は図15-108に示すように「モバイル星形LEDゲージの作成」になります。
図15-108 データバインド・ゲージのデータ値の指定
データバインドされたテーマ・マップ・コンポーネントを作成する場合に、「コンポーネント・ギャラリ」を使用すると、選択内容に関係なく、表示されるダイアログの名前は「データ・レイヤーの作成」になりますが、表示されるフィールドは「コンポーネント・ギャラリ」での選択内容に応じて異なります。たとえば、ベース・マップとして「すべてのユーザー」を選択し、領域レイヤーとして「世界(大陸)」を選択した場合、図15-108に示すダイアログが開きます。
図15-109 「データ・レイヤーの作成」ダイアログ
1つ以上のデータ・バインディング・ダイアログの完了後は、「プロパティ」ウィンドウを使用してコンポーネント属性の設定を指定できます。コンポーネントと関連付けられた子要素を使用して、さらにカスタマイズすることもできます(「チャートおよびゲージ・コンポーネントの子要素の定義方法」を参照)。
MAF AMXページにコレクションをドロップする際にコンテキスト・メニューから「MAF地理マップ」、「MAFサンバースト」、「MAF NBox」、「MAFタイムライン」または「MAFツリーマップ」を選択すると、次のいずれかのダイアログが表示されます。
図15-110 データバインドされた地理マップの作成
図15-111 データバインドされたサンバーストの作成
図15-112 データバインドされた時系列の作成
図15-113 データバインドされたツリーマップの作成
図15-114 データバインドされたNBoxの作成
「NBoxの作成」ダイアログへの入力は、行および列の数を定義することから始めます。その後、ボックス上のセルを選択して、ダイアログの下部で行または列全体の値を指定できます(図15-115を参照)。
図15-115 データバインドされたNBoxの行および列の値の設定
NBoxコンポーネントは、「次へ」をクリックして一連のダイアログのすべてのページを入力すると作成されます。
各ダイアログのフィールドごとの値の詳細は、「ヘルプ」をクリックするか[F1]を押して、オンライン・ヘルプを参照してください。
チャート、ツリーマップ、サンバーストおよび時系列の場合、そのvar
属性もvalue
属性も指定しないことができます。かわりに、データ・アイテムに対応している要素を列挙することによって、コンポーネント構造を静的に定義できます(例: チャートのcharDataItem
要素や時系列の系列のtimelineItems
)。これらの静的アイテムは必要な数を追加できます。これは、設計時にデータがわかっている場合に便利です。
次の例は、pieDataItem
子コンポーネントを通じて定義された静的データを使用する円グラフ・コンポーネントを示しています。
<dvtm:pieChart id="pieChart1" > <amx:facet name="dataStamp"> <dvtm:pieDataItem id="di1" value="80000" label="Salary"/> <dvtm:pieDataItem id="di2" value="7500" label="Bonus"/> <dvtm:pieDataItem id="di3" value="12000" label="Commision"/> </amx:facet> <dvtm:legend position="none" id="l1"/> </dvtm:pieChart>
次の例は、コレクションではなく属性バインディングに基づいて値が指定されているpieDataItem
子コンポーネントを示します。
<dvtm:pieDataItem id="di1" value="#{bindings.Salary.inputValue}" label="Salary"/>
チャートの次の子コンポーネント用イベントドリブン・トリガーを定義すると、いくつかのチャート・コンポーネントのタップを介してエンド・ユーザーによるインタラクティブ性を有効にできます。
チャートのデータ・アイテム
円グラフのデータ・アイテム
系列スタイル
プロパティ設定リスナーやポップアップ表示動作など、サポートされている操作に加え、起動されるアクションのタイプを定義するようにaction
属性を設定できます。
<amx:panelPage id="pp1" styleClass="dvtm-gallery-panelPage"> ... <dvtm:lineChart id="lineChart1" var="row" value="#{bindings.lineData1.collectionModel}" ... > <amx:facet name="dataStamp"> <dvtm:chartDataItem group="#{row.group}" value="#{row.value}" series=" #{row.series}" label="#{pageFlowScope.labelDisplay ? row.value : ''}" > <amx:showPopupBehavior popupId="pAdvancedOptions" type="action" align="overlapTopCenter" alignId="pflOptionsForm" decoration="anchor"/> </dvtm:chartDataItem> </amx:facet> ... </dvtm:lineChart> ... </amx:panelPage> <amx:popup id="pAdvancedOptions" styleClass="dvtm-gallery-options-dialog"> ...
詳細は、Oracle Mobile Application Frameworkタグ・リファレンスを参照してください。
次のチャート・コンポーネントについて、そのcoordinateSystem
属性をpolar
に設定すると、極ビューを有効にできます。
面グラフ
棒グラフ
コンボ・チャート
バブル・チャート
線グラフ
散布図
極設定が、棒グラフを除く前述のチャートのいずれかに適用される場合、polarGridShape
属性を使用することによって、極グリッドを循環またはポリゴンとして定義できます。
極チャートの放射軸は、Y軸の子コンポーネントを使用してカスタマイズでき、接線軸は、X軸の子コンポーネントを使用してカスタマイズできます。
詳細は、Oracle Mobile Application Frameworkタグ・リファレンスを参照してください。
MAFでは、UIコンポーネントにスタイルを適用するためにCSSを使用できます。
次の属性を設定することで、UIコンポーネントをスタイル設定できます。
styleClass
属性は、レイアウト・コンポーネントに対して使用するCSSスタイル・クラスを定義します。
<amx:panelPage styleClass="#{pageFlowScope.pStyleClass}">
MAF AMXページまたはスキニングCSSファイルでレイアウト、コマンドおよび入力の各コンポーネントのスタイル・クラスを定義できますが、その場合、特定のスタイルがMAF AMXアプリケーション機能内のすべてのコンポーネントに適用されます(「スキニングに関する必知事項」を参照)。かわりに、MAFによって提供されるパブリック・スタイル・クラスを使用できます。
注意:
CSSファイルは、JDeveloperからアクセスできません。かわりに、MAFによって、ビルドまたはデプロイ時にこのファイルがパッケージに注入され、Web Content
ルート・ディレクトリの下のcss
ディレクトリにCSSファイルが表示されます。
inlineStyle
属性は、任意のUIコンポーネントに使用するCSSスタイルを定義し、コンポーネントのルートDOM要素に適用される一連のCSSスタイルを表します。
<amx:outputText inlineStyle="color:red;">
この属性は、基本スタイルの変更が必要な場合に使用してください。
注意:
いくつかのUIコンポーネントは、HTML div
要素やさらに複雑なマークアップなどのサブ要素でレンダリングされます。その結果、親コンポーネントにinlineStyle
属性を設定しても、目的の効果が得られないことがあります。そのような場合、生成されたマークアップを調べ、inlineStyle
属性を定義するかわりに、サブ要素にスタイルを伝播するCSSクラスを適用します。
JavaScriptのデバッグ方法の詳細は、「JavaコードおよびJavaScriptのデバッグを有効にする方法」を参照してください。
これらの属性は、図15-116に示すように「プロパティ」ウィンドウの「スタイル」セクションに表示されます。
図15-116 「プロパティ」ウィンドウの「スタイル」セクション
MAF AMXでは、「プロパティ」ウィンドウ内に、inlineStyle
属性の様々なプロパティを設定するために使用できるドロップダウン・エディタが提供されています(図15-117を参照)。
図15-117 「インライン・スタイル」エディタ
詳細は、Oracle Mobile Application Frameworkタグ・リファレンスを参照してください。
スキニングによって、MAF AMXアプリケーション機能内のすべてのUIコンポーネントに均一なスタイルを定義および適用し、機能全体に対するテーマを作成できます。
MAFのデフォルトのスキン・ファミリはmobileAlta
で、デフォルト・バージョンはそのスキンの最新バージョンです。詳細は、「MAFアプリケーションのスキニング」を参照してください。
MAF AMXでは、スキニング要素でのCSS IDセレクタの使用はサポートしていません。その結果、次のようなマークアップによって、MAF AMXページ遷移が粗くなります。
#tb1 { position:absolute; overflow:hidden; width: 300px; background-color: rgb(90,148,0); }
この状況の理由は、MAF AMXページ間で遷移が発生すると、同時に画面上で2つのページがレンダリングされるということです。したがって、IDの衝突を防止するために、遷移の直前に、遷移の発生元ページからすべてのIDが削除されます。
CSS IDセレクタを使用するかわりに、クラス名を使用する必要があります。次の例は、MAF AMXページで定義されたMAF AMX UIコンポーネントと、特定のカスタム・クラスに設定されたそのstyleClass
属性を示しています。
<amx:panelPage styleClass="MySpecialClassName"/>
次の例は、スキニング用のカスタム・クラスの使用方法を示しています。
.MySpecialClassName { height: 420px; }
MAF AMXデータ視覚化コンポーネントのスタイル・プロパティの大部分は、css
ディレクトリにあるdvtm.css
ファイルで定義されます。アプリケーション機能レベルでのカスタム・スタイル定義を持つカスタムCSSファイルを追加することで、デフォルト値をオーバーライドできます(「デフォルト・スキン・スタイルのオーバーライド」を参照)。
スタイル・プロパティのいくつかは、CSSにマップできないため、カスタムJavaScriptファイルで定義する必要があります。それらのプロパティは、次のとおりです。
ダイヤル・ゲージ・コンポーネントの背景および針のイメージ(「ダイアル・ゲージの作成方法」を参照)。
時系列コンポーネントの継続時間バーのカラー・パレット(「時系列コンポーネントの作成方法」を参照)。
テーマ・マップ・コンポーネントのベース・マップ(「カスタム・ベース・マップの定義」を参照)。
地理マップ・コンポーネントのスタイル・プロパティ(「地理マップ・コンポーネントの作成方法」を参照)。
テーマ・マップ・コンポーネントのスタイル・プロパティ(「テーマ・マップ・コンポーネントへのカスタム・スタイルの適用」を参照)。
評価ゲージ・コンポーネントの選択済および未選択の状態(「評価ゲージ・コンポーネントへのカスタム・スタイルの適用」を参照)。
これらのカスタムJavaScriptファイルは、アプリケーション機能レベルの「包含」セクションで指定する必要があります(「アプリケーション機能のコンテンツをMAF AMXページまたはタスク・フローとして定義する方法」を参照)。それによって、XMLスタイル・テンプレートで定義したデフォルト・スタイル値をオーバーライドします。次の例はJavaScriptファイルを示していますが、これは、CSSを使用してスタイル設定できないプロパティのカスタム・スタイル設定を必要とするデータ視覚化コンポーネントを持つMAF AMXアプリケーション機能を含むMAFプロジェクトに追加するファイルと似ています。
my-custom.js: CustomChartStyle = { // common chart properties 'chart': { // text to be displayed, if no data is provided 'emptyText': null, // animation effect when the data changes 'animationOnDataChange': "none", // animation effect when the chart is displayed 'animationOnDisplay': "none", // time axis type - disabled, enabled, mixedFrequency 'timeAxisType': "disabled" }, // chart title separator properties 'titleSeparator': { // separator upper color 'upperColor': "#74779A", // separator lower color 'lowerColor': "#FFFFFF", // should display title separator 'rendered': false }, // chart legend properties 'legend': { // legend position - none, auto, start, end, top, bottom 'position': "auto" }, // default style values 'styleDefaults': { // default color palette 'colors': ["#003366", "#CC3300", "#666699", "#006666", "#FF9900", "#993366", "#99CC33", "#624390", "#669933", "#FFCC33", "#006699", "#EBEA79"], // default shapes palette 'shapes': ["circle", "square", "plus", "diamond", "triangleUp", "triangleDown", "human"], // series effect 'seriesEffect': "gradient", // animation duration in ms 'animationDuration': 1000, // animation indicators - all, none 'animationIndicators': "all", // animation up color 'animationUpColor': "#0099FF", // animation down color 'animationDownColor': "#FF3300", // default line width for line chart 'lineWidth': 3, // default line style for line chart - solid, dotted, dashed 'lineStyle': "solid", // should markers be displayed for line and area charts 'markerDisplayed': false, // default marker color 'markerColor': null, // default marker shape 'markerShape': "auto", // default marker size 'markerSize': 8, // pie feeler color for pie chart 'pieFeelerColor': "#BAC5D6", // slice label position and text type for pie chart 'sliceLabel': { 'position': "outside", 'textType': "percent" } } }; CustomGaugeStyle = { // default animation duration in milliseconds 'animationDuration': 1000, // default animation effect on data change 'animationOnDataChange': "none", // default animation effect on gauge display 'animationOnDisplay': "none", // default visual effect 'visualEffects': "auto" }; CustomTimelineStyle = { 'timelineSeries' : { // duration bars color palette 'colors' : ["#267db3", "#68c182", "#fad55c", "#ed6647"] }; ... }
JavaScriptファイルを定義した後、任意の値をコメント解除および変更できます。次の例に示すように、maf-feature.xml
ファイルに含める機能としてこのファイルを追加します。
<?xml version="1.0" encoding="UTF-8" ?> <adfmf:features xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:adfmf="http://xmlns.oracle.com/adf/mf"> <adfmf:feature id="feature1" name="feature1"> <adfmf:content id="feature1.1"> <adfmf:amx file="feature1/untitled1.amx"> <adfmf:includes> <adfmf:include type="StyleSheet" file="css/custom.css"/> <adfmf:include type="JavaScript" file="feature1/js/my-custom.js"/> </adfmf:includes> </adfmf:amx> </adfmf:content> </adfmf:feature> </adfmf:features>
MAF AMXページで、JDeveloperによって提供される標準リソース・バンドルを使用することで、UIコンポーネントによって表示されるテキストをローカライズできます。これを行うには、コンポーネントおよびそのテキスト表示プロパティのうちローカライズする値を持つものを1つ選択し、「プロパティ」ウィンドウの該当するボックスで「テキスト・リソースの選択」を選択します(図15-118を参照)。
図15-118 テキスト・リソースの選択
これによって図15-119に示す標準の「テキスト・リソースの選択」ダイアログが表示されます。このダイアログを使用して、変更するプロパティの文字列参照を入力または検索します。
図15-119 「テキスト・リソースの選択」ダイアログ
ローカライズ済文字列リソースを定義すると、その参照のELが「テキスト・リソースの選択」ダイアログの起動元のプロパティに自動的に入力されます。XLIFF (XML Localization Interchange File Format)ファイルが存在しない場合は、このファイルが作成されます。存在する場合は、新しいエントリが既存のXLIFFファイルに追加されます。さらに、ViewControllerBundle.xlf
ファイル(デフォルト名ですが、名前は基本的にプロジェクトと一致します)を指す表示コンポーネントの子として、対応するバンドルのロード(loadBundle
)コンポーネントが作成されます。
注意:
ViewControllerBundle.xlf
はデフォルトのファイル名です。この名前はプロジェクトの名前と一致します。
図15-120は、MAF AMXファイルでの変更を示しています。
図15-120 MAF AMXファイル内のローカライズ済文字列
詳細は、「MAFアプリケーションのローカライズ」を参照してください。
MAFアプリケーションを開発する際は、アクセシビリティの問題に対処することで視覚的および身体的に障害があるユーザーに対応する必要があります。非視覚的なメディアへのレンダリングを行うWebブラウザなどのユーザー・エージェント(スクリーン・リーダーなど)により、UIコンポーネントのテキスト説明が読み上げられ、障害を持つユーザーに有益な情報が提供されます。MAF AMX UIおよびデータ視覚化コンポーネントは、次のアクセシビリティ標準に準拠するように設計されています。
Accessible Rich Internet Applications (WAI-ARIA) 1.0仕様。
詳細は、次を参照してください。
WAI-ARIA 1.0仕様の「Introduction」(http://www.w3.org/TR/wai-aria/introduction
)
「Using WAI-ARIA」(http://www.w3.org/TR/wai-aria/usage
)
Oracle Global HTML Accessibility Guidelines (OGHAG)。
詳細は、「Oracle Global HTML Accessibility Guidelinesに関する必知事項」を参照してください。
iOSのアクセシビリティ・ガイドライン。
詳細は、『Accessibility Programming Guide for iOS』を参照してください。
そのようなコンポーネントの導入によって、アクセス可能なコンポーネントの外観の変更されたり、アプリケーション・ロジックが影響受けることがありません。
MAF AMXアプリケーション機能のアクセシビリティが適切に機能するために、次のガイドラインに従ってください。
ナビゲーションの深さは3レベル以内にして、ユーザーが簡単にホーム画面に戻れるようにする必要があります。
スクリプトを最小限に維持します。
DOMとの直接対話を提供しないでください。
JavaScriptのタイムアウトは使用しないでください。
フォーカスの不要な変更は回避します。
ポップアップ・トリガーを明示的に指定する
必要に応じて、WAI-ARIAライブ・リージョンを使用します(「基本的なWAI-ARIA用語に関する必知事項」を参照)。
CSSの使用を最小限に維持します。
デフォルト・コンポーネントの外観をオーバーライドしないようにしてください。
拡大縮小が可能なサイズ単位を選択します。
CSSの位置設定は使用しないでください。
詳細は、次を参照してください。
『Mobile Accessibility』(http://www.w3.org/WAI/mobile
)
『Web Content Accessibility and Mobile Web: Making a Web Site Accessible Both for People with Disabilities and for Mobile Devices』(http://www.w3.org/WAI/mobile
)
MAF AMX UIおよびデータ視覚化コンポーネントには、組込みのアクセシビリティ・サポートが備えられており、ほとんどのコンポーネントがアクセシビリティ監査の対象となっています(図15-123を参照)。
commandButton
やtableLayout
などのAMX UIコンポーネントは、アクセシビリティをサポートするために、次の1つ以上の属性を公開します。
Shortdesc
Summary
HintText
ランドマーク
shortDesc
属性は、コンポーネントごとに異なる目的で使用します。たとえば、イメージ・コンポーネントにshortDesc
属性を設定すると、MAF AMXファイルでそれはimage要素のalt
属性の値として表示されます。shortDesc
属性の値はローカライズできます。
tableLayout
コンポーネントにより公開されるsummary
およびshortDesc
属性については、tableLayout
コンポーネントを使用して他のコンポーネントを配置する場合、いずれの属性にも値を指定する必要はありません。このシナリオでは、MAFにより、実行時にレンダリングされるHTMLのtableLayout
コンポーネントにプレゼンテーション・ロールが追加されます。ただし、tableLayout
コンポーネントを使用してデータを表示する場合は、各属性に異なる値を構成してください。MAFでは実行時に、shortDesc
属性に指定された値をHTML表のtitle
属性として使用します。summary
属性に指定された値は、HTML表でサマリーとしてレンダリングされます。
「プロパティ」ウィンドウの「アクセシビリティ」セクションで、コンポーネントの属性を設定できます。
これらの属性およびコンポーネントの詳細は、Oracle Mobile Application Frameworkタグ・リファレンスを参照してください。
パネル・グループ・レイアウト・コンポーネントおよびデック・コンポーネントの場合、ページのコンテキストに従って適用可能なランドマーク・ロール・タイプ(表15-14を参照)を定義します。landmark
属性に次の値の1つを設定できます。
デフォルト(なし)
application
banner
complementary
contentinfo
form
main
navigation
search
inputDate
やinputNumberSlider
などのAMX UIコンポーネントは、WAI-ARIA仕様によって定義されるLabel
およびValue
アクセシビリティ属性を持ちます。これらの属性値は実行時に自動的に適用され、変更できません。詳細は、Oracle Mobile Application Frameworkタグ・リファレンスを参照してください。
アクセシビリティ監査ルールの構成方法は、「アクセシビリティ監査ルールの構成」を参照してください。
JDeveloperの「プリファレンス」ダイアログを使用して次のようにアクセシビリティ監査ルールを構成できます。
図15-123は、JDeveloperに表示されるアクセシビリティ監査警告を示しています。
図15-123 アクセシビリティ監査警告
アクセス可能なMAF AMXアプリケーション機能をテストする方法の詳細は、「iOSデバイス上でアクセシビリティのテストを実行する方法」を参照してください。
注意:
Androidでは、WAI-ARIAアクセシビリティ機能はデータ視覚化コンポーネントに対してサポートされません。
その他のMAF AMX UIコンポーネントは、アプリケーションがAndroidスクリーン・リーダー・モードで実行された場合、正しく動作しない可能性があります。
WAI-ARIA 1.0仕様に述べられているように、複雑なWebアプリケーションは、支援テクノロジがドキュメントの部分の背後にあるセマンティクスを判別できない場合や、ユーザーが、使用可能な方法で実際にそのすべての部分を移動できない場合に、アクセス不可能になります。WAI-ARIAでは、セマンティクスがロール(ユーザー・インタフェース要素を定義するタイプ)と、ロールによってサポートされている状態およびプロパティに分割されています。次のセマンティクス・アソシエーションによって、WAI-ARIA用語の基礎が形成されています。
ロール
ランドマーク
ライブ・リージョン
詳細は、『Important Terms』(http://www.w3.org/TR/wai-aria/terms
)を参照してください。
次の表は、MAFに適用可能なロールのカテゴリ(WAI-ARIA 1.0仕様での定義)を示しています。
表15-11は、全般的なロール概念を定義する目的でWAI-ARIAのロールの分類をサポートするために使用される抽象ロールを示しています。
表15-11 抽象ロール
抽象ロール | 説明 |
---|---|
input |
ユーザー入力を可能にする一般的なタイプのウィジェット。 |
landmark |
ナビゲーショナル・ランドマークを意図したページのリージョン。 |
select |
ユーザーが一連の選択肢から選択を行えるフォーム・ウィジェット。 |
widget |
グラフィカル・ユーザー・インタフェースのインタラクティブ・コンポーネント。 |
表15-12は、スタンドアロン・ユーザー・インタフェース・ウィジェットまたは大きい複合ウィジェットの一部として機能するウィジェット・ロールを示しています。
表15-12 ウィジェット・ロール
ウィジェット・ロール | 説明 | ウィジェットで必要とされるステート |
---|---|---|
alertdialog |
アラート・メッセージを含むダイアログのタイプ。最初のフォーカスはそのダイアログ内の要素に移動します。 |
aria-labelledby、aria-describedby |
button |
クリックまたは押されたときにユーザーによってトリガーされるアクションを可能にする入力。 |
aria-expanded (ステート)、aria-pressed (ステート) |
checkbox |
|
aria-checked (ステート) |
dialog |
応答を要求するためにアプリケーションの現在の処理を中断するように設計されているアプリケーション・ウィンドウによって表されるダイアログ。 |
aria-labelledby、aria-describedby |
link |
内部または外部リソースへのインタラクティブな参照。アクティブ化されるとユーザー・エージェントがそのリソースにナビゲートします。 |
aria-disabled (ステート)、aria-describedby |
option |
選択リスト内の選択可能アイテム。 |
aria-labelledby、aria-checked (ステート)、aria-selected (ステート) |
radio |
ラジオ・ロールのグループ内のチェック可能入力。同時にチェックできるのはそれらのうち1つのみです。 |
aria-checked (ステート)、aria-disabled (ステート) |
slider |
指定された範囲内からユーザーが値を選択するユーザー入力。 |
aria-valuemax、aria-valuemin、aria-valuenow、aria-disabled (ステート) |
listbox |
選択肢のリストからユーザーが1つ以上のアイテムを選択できるウィジェット。 |
aria-live |
radiogroup |
ラジオ・ボタンのグループ。 |
aria-disabled (ステート) |
listitem |
リストまたはディレクトリ内の単一アイテム。 |
aria-describedby |
textbox |
その値として自由形式のテキストを使用できる入力。 |
aria-labelledby、aria-readonly、aria-required、aria-multiline、aria-disabled (ステート) |
表15-13は、ページ内のコンテンツを編成する構造を記述するドキュメント構造ロールを示しています。通常、ドキュメント構造はインタラクティブではありません。
表15-13 ドキュメント構造ロール
ドキュメント構造ロール | 説明 |
---|---|
img |
イメージを形成する要素のコレクションのコンテナ。 |
list |
非インタラクティブ・リスト・アイテムのグループ。 |
listitem |
リストまたはディレクトリ内の単一アイテム。 |
表15-14は、ナビゲーショナル・ランドマークを意図したページのリージョンを表すランドマーク・ロールを示しています。
表15-14 ランドマーク・ロール
ランドマーク・ロール | 説明 |
---|---|
application |
Webアプリケーション(Webドキュメントではなく)として宣言されるリージョン. |
banner |
ほとんどサイト指向のコンテンツ(ページ固有のコンテンツではなく)を含むリージョン。 |
complementary |
DOM階層の類似したレベルにあるメイン・コンテンツを補足するように設計ているが、メイン・コンテンツから切り離しても意味を持つドキュメントのサポート・セクション。 |
contentinfo |
親ドキュメントに関する情報が含まれている大きな認識可能なリージョン。 |
form |
全体として結合されてフォームを作成するアイテムおよびオブジェクトのコレクションが含まれているリージョン。 |
main |
ドキュメントのメイン・コンテンツ。 |
navigation |
ドキュメントまたは関連ドキュメントをナビゲートするためのナビゲーショナル要素(通常はリンク)のコレクション。 |
search |
全体として結合されて検索機能を作成するアイテムおよびオブジェクトのコレクションが含まれているリージョン。 |
MAF UIコンポーネントの大部分では、アクセス可能なWAI-ARIA属性は変更できません。一部のコンポーネントでは、デザインタイムで特別なアクセス可能な属性を設定でき、パネル・グループ・レイアウトおよびデックには、WAI-ARIAランドマーク・ロール・タイプを使用できます。詳細は、「アクセシビリティのためのUIコンポーネントおよびデータ視覚化コンポーネントの構成方法」を参照してください。
Oracle Global HTML Accessibility Guidelines (OGHAG)は、オラクル社が準拠しているHTMLの一連のスクリプト標準です。これらの標準は、Section 508 (http://www.section508.gov
を参照)とWeb Content Accessibility Guidelines (WCAG) 1.0 level AA (http://www.w3.org/TR/WCAG10
を参照)を組み合せ、言い回しとチェックポイントの測定を改善したものです。
詳細は、http://www.oracle.com/us/corporate/accessibility/policies/index.html
のOracleのアクセシビリティについての考え方とポリシーを参照してください。
MAFでは、データ入力エラーおよびデータ入力中に発生するその他の状態に関してエンド・ユーザーに通知できます。それらのタイプ(エラーまたは警告)に応じて、検証メッセージのルック・アンド・フィールが異なります。
ユーザー入力の検証は、入力が送信されたときにトリガーされます。入力テキスト・コンポーネントは、エンド・ユーザーがフィールドから離れたときに自動的に検証されます。チェックボックスや選択肢などの選択コンポーネントの場合は、エンド・ユーザー選択を行ったときに検証が行われます。検証のために、MAF AMXページのUIコンポーネントは、検証グループ操作(validationGroup
)内にまとめられ、送信操作が実行されたときに入力が検証されるコンポーネントが定義されます。検証動作(validationBehavior
)コンポーネントは、コマンド・コンポーネントのアクションが実行される前にどの検証グループが検証されるのかを定義します。1つのコマンド・コンポーネントが、複数の子検証動作コンポーネントを持つことができます。コンポーネントに検証動作が定義されていない場合、検証は行われません。
注意:
ネストされた検証グループ操作を定義することはできません。
検証グループの無効な定義は次のとおりです。
<amx:view> <amx:panelPage> <amx:validationGroup> <amx:panelGroupLayout> <amx:validationGroup/> <amx:panelGroupLayout/> </amx:validationGroup> </amx:panelPage> </amx:view>
有効な定義は次のとおりです。
<amx:view> <amx:panelPage> <amx:validationGroup> </amx:panelPage> <amx:popup> <amx:validationGroup> </amx:popup> </amx:view>
MAF AMXページに検証エラー・メッセージが含まれている場合は、リスト・アイテム、リンク、ボタンなどのコマンド・コンポーネントを使用して、エンド・ユーザーがそのページに移動しないようにできます。警告を含むメッセージでは、ナビゲーションが停止されることはありません。
次の例は、MAF AMXファイルでの複数の検証グループおよび検証動作操作など検証要素の定義方法を示しています。
<amx:panelPage id="pp1"> <amx:facet name="header"> <amx:outputText id="outputText1" value="Validate"/> </amx:facet> <amx:facet name="secondary"> <amx:commandButton id="commandButton2" action="go" text="Save"> <amx:validationBehavior id="vb1" disabled="#{pageFlowScope.myPanel ne 'panel1'}" group="group1"/> <amx:validationBehavior id="vb2" disabled="#{pageFlowScope.myPanel ne 'panel2'}" group="group2"/> <!-- invalid, should be caught by audit rule but for any reason if group not found at run time, this validate is ignored --> <amx:validationBehavior id="vb3" disabled="false" group="groupxxx"/> <!-- group is not found at run time, this validate is ignored --> <amx:validationBehavior id="vb4" disabled="false" group="group3"/> </amx:commandButton> </amx:facet> <amx:panelSplitter id="ps1" selectedItem="#{pageFlowScope.myPanel}"> <amx:panelItem id="pi1"> <amx:validationGroup id="group1"> <amx:panelFormLayout id="pfl1"> <amx:inputText value="#{bindings.first.inputValue}" required="true" label="#{bindings.first.hints.label}" id="inputText1"/> <amx:inputText value="#{bindings.last.inputValue}" label="#{bindings.last.hints.label}" id="inputText2"/> </amx:panelFormLayout> </amx:validationGroup> </amx:panelItem> <amx:panelItem id="pi2"> <amx:validationGroup id="group2"> <amx:panelFormLayout id="pfl2"> <amx:inputText value="#{bindings.salary.inputValue}" label="#{bindings.first.hints.label}" id="inputText3"/> <amx:inputText value="#{bindings.last.inputValue}" label="#{bindings.last.hints.label}" id="inputText4"/> </amx:panelFormLayout> </amx:validationGroup> </amx:panelItem> </amx:panelSplitter> <amx:panelGroupLayout id="pgl1" rendered="false"> <amx:validationGroup id="group3"> <amx:panelFormLayout id="pfl4"> <amx:inputText value="#{bindings.salary.inputValue}" label="#{bindings.first.hints.label}" id="inputText5"/> <amx:inputText value="#{bindings.last.inputValue}" label="#{bindings.last.hints.label}" id="inputText6"/> </amx:panelFormLayout> </amx:validationGroup> </amx:panelGroupLayout> </amx:panelPage>
次の例は、MAF AMXファイルのポップアップに表示される確認メッセージの定義方法を示しています。
<amx:panelPage id="pp1"> <amx:facet name="header"> <amx:outputText id="outputText1" value="Login Demo"/> </amx:facet> <amx:facet name="secondary"> <amx:commandButton id="btnBack" action="__back" text="Back"/> </amx:facet> <amx:panelGroupLayout id="panelGroupLayout1"> <amx:validationGroup id="group1"> <amx:panelGroupLayout id="panelGroupLayout2"> <amx:inputText value="#{bindings.userName.inputValue}" label="#{bindings.userName.hints.label}" id="inputText1" showRequired="true" required="true"/> <amx:inputText value="#{bindings.password.inputValue}" label="#{bindings.password.hints.label}" id="inputText2" required="true" showRequired="true" secret="true"/> <amx:outputText id="outputText2" value="#{bindings.timeToStayLoggedIn.hints.label}: #{bindings.timeToStayLoggedIn.inputValue} minutes"/> </amx:panelGroupLayout> </amx:validationGroup> <amx:commandButton id="commandButton2" text="Login" action="navigationSuccess"> <amx:validationBehavior id="validationBehavior2" group="group1"/> </amx:commandButton> </amx:panelGroupLayout> </amx:panelPage>
検証メッセージはポップアップ・コンポーネントに表示されます(「ポップアップ・コンポーネントの使用方法」を参照)。検証ポップアップのタイトルを構成することはできません。それは、相対的なメッセージ重大度によって自動的に決定されます。現在のメッセージのうちの最も重大なものが検証ポップアップのタイトルになります。つまり、すべての検証メッセージがWARNING
タイプである場合は、そのタイトルは「警告」になります。メッセージのいくつかがWARNING
タイプで、その他はERROR
タイプの場合はタイトルは「エラー」に設定されます。
図15-124は、企業名を入力しなかった場合にStockTracker
サンプル・アプリケーションに表示されるポップアップ検証メッセージを示しています。このサンプル・アプリケーションおよびその他のサンプル・アプリケーションの詳細は、「サンプルのMAFアプリケーション」を参照してください。
図15-124 StockTrackerサンプル・アプリケーションでの検証メッセージ
MAF AMXページからJavaコードを呼び出し、アプリケーション・ロジックを実行するには、次のいずれかの方法でUIコンポーネントの属性としてリスナーを定義します。
MAF AMXファイルのソースでの手動による方法。
選択したコンポーネントの「プロパティ」から。詳細は、Oracle Mobile Application Frameworkタグ・リファレンスを参照してください。
次のリスナーを使用して、MAF AMXページにUIトリガー・イベントの検出機能を追加できます。
valueChangeListener
: 次のパラメータで作成されるValueChangeEvent
をリスニングします。
古い値を表すjava.lang.Object
新しい変更済の値を表すjava.lang.Object
actionListener
: パラメータなしで作成されるActionEvent
をリスニングします。
selectionListener
: 次のパラメータで作成されるSelectionEvent
をリスニングします。
古い行キーを表すjava.lang.Object
選択済行キーを表すjava.lang.String[]
moveListener
: 古い行キーを表すRowKey
タイプの次のパラメータで作成されるMoveEvent
をリスニングします。
移動済行キーを表すjava.lang.Object
移動済行キーがその前に挿入された行キーを表すjava.lang.String[]
rangeChangeListener
: パラメータなしで作成されるRangeChangeEvent
をリスニングします。
mapBoundsChangeListener
: 次のパラメータで作成されるMapBoundsChangeEvent
をリスニングします。
最小マップ境界のX座標(経度)を表すjava.lang.Object
最小マップ境界のY座標(緯度)を表すjava.lang.Object
最大マップ境界のX座標(経度)を表すjava.lang.Object
最大マップ境界のY座標(緯度)を表すjava.lang.Object
マップの中心のX座標(経度)を表すjava.lang.Object
マップの中心のY座標(緯度)を表すjava.lang.Object
現在のズーム・レベルを表すint
mapInputListener
: 次のパラメータで作成されるMapInputEvent
をリスニングします。
イベント・タイプを表すjava.lang.String
イベント・ポイントのX座標を表すjava.lang.Object
イベント・ポイントのY座標を表すjava.lang.Object
viewportChangeListener
: 次のパラメータで作成されるViewportChangeEvent
をリスニングします。
最小X座標を表すjava.lang.Object
最大X座標を表すjava.lang.Object
最小Y座標を表すjava.lang.Object
最大Y座標を表すjava.lang.Object
最初の表示可能グループを表すjava.lang.Object
最後の表示可能グループを表すjava.lang.Object
drillListener
: 次のパラメータで作成されるDrillEvent
をリスニングします。
ドリル済オブジェクトのIDを表すjava.lang.String
ドリル・データ・アイテムのrowkeyを表すjava.lang.String
ドリル済オブジェクトのグループ名を表すjava.lang.String
ドリル済オブジェクトの系列名を表すjava.lang.String
リスナーの値は、パターン#{*}
に一致している必要があり、次の要件を満たしている必要があります。
タイプ名: EL式
ベース・タイプ: 文字列
プリミティブ・タイプ: 文字列
ELイベントの詳細は、「ELイベントについて」を参照してください。
ほとんどのMAF AMXイベント・クラスは、oracle.adfmf.amx.event.AMXEvent
クラスを拡張します。Javaコードでイベント・リスナーを定義するときは、oracle.adfmf.amx.event.AMXEvent
クラスを渡す必要があります。
詳細は、次を参照してください。
Oracle Mobile Application Framework Java APIリファレンス
Oracle Mobile Application Frameworkタグ・リファレンス
MAFでは、マネージドBeanメソッドがMAF AMX固有のイベント・クラスを使用するように、リスナーに対してマネージドBeanメソッドを作成できます。次の3つの例は、同じマネージドBeanメソッドをコールするボタンおよびリンク・コンポーネントを示しています。AMXEvent
のソース値は、コンポーネントのIDを含むメッセージ・ボックスを表示することでどのオブジェクトがイベントを起動したのかを判別します。
次の例は、MAF AMXファイルからBeanメソッドをコールする方法を示しています。
<amx:commandButton text="commandButton1" id="commandButton1" actionListener="#{applicationScope.Bean.actionListenerMethod}"> </amx:commandButton> <amx:commandLink text="commandLink1" id="commandLink1" actionListener="#{applicationScope.Bean.actionListenerMethod}"> </amx:commandLink>
次の例は、AMXEvent
の使用方法を示しています。
private void actionListenerMethod(AMXEvent amxEvent) { // Some Java handling }
次の例は、イベント・メソッドを起動する方法を示しています。
public Object invokeMethod(String methodName, Object[] params) { if (methodName.equals("actionListenerMethod")) { actionListenerMethod((AMXEvent) params[0]); } return null; }
追加の例は、開発コンピュータ上のjdev_install
/jdeveloper/jdev/extensions/oracle.maf/Samples
ディレクトリ内のPublicSamples.zip
ファイルに配置されているAPIDemoというMAFサンプル・アプリケーションを参照してください。このサンプルは、Java Beanからリスナーをコールする方法を示しています。
イベント・リスナーは、一部のMAF AMX UIコンポーネントの子として定義できます。リスナーのtype
属性によって、それらがどのイベントを処理するために登録されるのかが識別されます。各親UIコンポーネントでは(親コンポーネントに適した)イベントのサブセットのみがサポートされているため、これらのサポートされているイベントは、リスナーに対して選択できる限られたタイプのリストに提示されます。
AMX UIコンポーネントでサポートされるイベント・リスナーおよびイベント・タイプの詳細は、Oracle Mobile Application Frameworkタグ・リファレンスを参照してください。
子イベント・リスナーそれぞれのtype
属性(図15-125を参照)には、リスナー・イベントと一致する値の基本セットがあります。これらの値は、親コンポーネントでサポートされているイベントのみを表示するようフィルタされます。たとえば、ボタン・コンポーネントの下にあるアクション・リスナーまたはプロパティ・リスナーの設定の子では、action
タイプの値およびジェスチャーのみか表示されます。
図15-125は、親リスト・アイテム・コンポーネントのプロパティ・リスナーの設定のかぎられたタイプ・リストにおいて使用可能な値を示しています。
図15-125 イベント・タイプの選択
脚注の凡例
脚注1:詳細は、「disabled属性に関する必知事項」を参照してください。