ヘッダーをスキップ
Oracle® Fusion Middleware Oracle Application Development Frameworkモバイル開発者ガイド
11g リリース2 (11.1.2.3.0)
B70750-01
  目次へ
目次

前
 
次
 

5 ADFモバイル・アプリケーションの定義

この章では、概要エディタを使用して、ADFモバイル・アプリケーションのSpringboardおよびナビゲーション・バーの表示動作を定義する方法と、アプリケーション機能を埋め込むことでコンテンツを指定する方法について説明します。

この章では、次の項目について説明します。

5.1 ADFモバイル・アプリケーションの定義の概要

ADFモバイル・アプリケーションには1つ以上のビュー・コントローラタイプのプロジェクトを含めることができます。これらにはそれぞれ、adfmf-feature.xmlファイル内の一連の機能が記述されています。第4章「ADFモバイル・アプリケーション開発の開始」で説明したように、ADFモバイルは、モバイル・アプリケーションそのものに対してadfmf-application.xml構成ファイルを、アプリケーションのコンテンツ定義用にadfmf-feature.xmlファイルを提供しています。これらのファイルは手動で変更することもできますが、ADFモバイルでは、これらのファイルを宣言的にビルドできるようにする2つの概要エディタを提供しています。

5.1.1 adfmf-applications.xmlの概要エディタの使用方法

概要エディタでは、adfmf-application.xmlファイルを構成して、モバイル・アプリケーションとそのリソースを記述できます。エディタの各ページで、構成ファイルの要素を追加または更新できます。

5.2 モバイル・アプリケーションの構成ファイルについて

adfmf-application.xml構成ファイルでは、表示名と一意のアプリケーションID(名前の競合を防ぐ)を指定し、アプリケーションのSpringboard(スマートフォンのホーム・ページに相当)に表示するアプリケーション機能を選択することで、ADFモバイル・アプリケーションの基本構成を設定できます。さらに、このファイルでは、モバイル・アプリケーションのユーザー・プリファレンス・ぺージも作成できます。このファイルは、第4.2項「アプリケーション・ワークスペースの作成」で説明したように、アプリケーション作成ウィザードの完了後にJDeveloperによって生成されるもので、表5-1に示す要素で構成されています。

表5-1 アプリケーション識別子ファイルの要素

要素 説明

<adfmf:application>

adfmf-application.xmlのルート要素。

<adfmf:description>

アプリケーションの説明。

<adfmf:featureReference>

機能参照は、FAR (機能アーカイブ・ファイル)にパッケージされているか、adfmf-feature.xmlファイルで定義されているアプリケーション機能のうち、モバイル・アプリケーションのコンテンツに関連するものを指定します。機能参照を選択することで、ADFモバイル・アプリケーションの特性とコンテンツを定義します。FARの詳細は、第5.12項「機能アーカイブ・ファイルの使用」を参照してください。

<adfmf:preferences>

ユーザー・プリファレンスのオプションおよび動作をアプリケーション・レベルで設定できます。adfmf-feature.xmlファイル内のアプリケーション機能に対するユーザー・プリファレンスの表示および動作方法も設定できます。詳細は、第13章「ユーザー・プリファレンスの有効化」を参照してください。

<adfmf:login>

アプリケーション機能のログイン・ページを設定できます。詳細は、第17章「ADFモバイル・アプリケーションのセキュリティ」を参照してください。

<adfmf:navigation>

ナビゲーション・バーとSpringboardの動作を定義できます。Springboardはホーム・ページで、ここには、埋め込まれたアプリケーション機能のすべてのアプリケーション・アイコンとラベルがリスト・ビューに整理されて表示されます。Springboardには、ユーザーが使用可能なすべてのアプリケーションの最上位のビューが表示されます。ユーザーは内容に目を通してアプリケーションを選択できます。詳細は、第5.4項「Springboardとナビゲーション・バーの動作の構成」を参照してください。


例5-1は、Acme Salesという名前のアプリケーションのadfmf-application.xmlファイルを示しています。Acme Salesはモバイル・アプリケーションで、そのコンテンツには顧客のコンタクト先アプリケーション(<adfmf:featureReference id="customers" showOnNavigationBar="true"/>)が含まれています。このアプリケーションはSpringboardに表示されます(図5-2参照)。

例5-1 adfmf-application.xmlファイル

<?xml version="1.0" encoding="UTF-8" ?>
<adfmf:application xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                   xmlns:adfmf="http://xmlns.oracle.com/adf/mf"
                   name="Acme Sales"
                   id="com.company.AcmeSales"
                   appControllerFolder="ApplicationController"
                   version="1.0"
                   vendor="Oracle"
                   listener-class="application.LifeCycleListenerImpl">
    <adfmf:description>Sample Application</adfmf:description>
<adfmf:featureReference id="Customers"
                        allowDeviceAccess="true"
                        showOnSpringboard="true"
                        showOnNavigationBar="true"/>
<adfmf:featureReference id="HCM"
                        allowDeviceAccess="true"
                        showOnSpringboard="true"
                        showOnNavigationBar="true"/>
<adfmf:featureReference id="PROD"
                        allowDeviceAccess="true"
                        showOnSpringboard="true"
                        showOnNavigationBar="true"/>
    <adfmf:preferences>
        <adfmf:preferenceGroup id="Root.Security" label="Security">
            <adfmf:preferenceText id="OracleSecurityProvider_serviceURL"
                                  label="Security URL"
                                  default="http://somecomputer.example.com:someaddress/
                                           idaas_rest/rest/tokenservice1/tokens/getprofile"/>
            
            <adfmf:preferenceText id="OracleADFMobile_UserName" label="User Name" default="sean"/>
            <adfmf:preferenceText id="OracleADFMobile_Password" label="Password" default="welcome1" 
                                                                secret="true"/>
        </adfmf:preferenceGroup> 
    </adfmf:preferences>
    <adfmf:navigation>
        <adfmf:springboard enabled="false"/>
        <adfmf:navigationBar enabled="true"/>
    </adfmf:navigation>
</adfmf:application>

図5-1 モバイル・アプリケーションのSpringboardに表示されるアプリケーション機能

Springboardのアプリケーション表示。

これらの要素は、概要エディタを使用して宣言的に変更するか(図5-2を参照)、「ソース」エディタを使用して手動で変更できます。この2通りのアプローチは、どちらも同じように使用できます。

図5-2 adfmf-application.xmlファイルの概要エディタ

「構造」ウィンドウの表示された概要エディタ。

5.3 ADFモバイル・アプリケーションの基本情報の設定

「アプリケーション」ページでは、名前、アプリケーションID、モバイル・アプリケーションの表示方法を設定できます。

5.3.1 モバイル・アプリケーションのIDおよび表示動作の設定方法

概要エディタの「アプリケーション」ページ(図5-2を参照)では、モバイル・アプリケーションに名前を付けたり、Springboardやナビゲーション・バーでのモバイル・アプリケーションの表示を制御できます。

始める前に:

adfmf-application.xmlファイルの概要エディタを開くには、「アプリケーション・リソース」パネルのADF META-INFノード(l図5-3を参照)にあるadfmf-application.xmlファイルをダブルクリックします。

図5-3 「アプリケーション・ナビゲータ」でのadfmf-application.xmlファイルの選択

adfmf-applicationファイルをダブルクリックします。

モバイル・アプリケーションの基本情報を設定するには:

  1. 「アプリケーション」ページを選択し、必要に応じて「概要」タブを選択します。


    注意:

    エディタでは、デフォルトで「アプリケーション」ページが開きます。


    図5-4は、「アプリケーション」ページの基本情報を定義する部分を示しています。

    図5-4 ADFモバイル・アプリケーションの基本情報の設定

    アプリケーションの名前を入力します。
  2. 「名前」フィールドに、アプリケーションの表示名を入力します。この属性はローカライズ可能です。詳細は、5.10項「リソース・バンドルの使用」を参照してください。


    注意:

    ADFモバイルでは、このフィールドに入力した値をiOSアーカイブ・ファイルの(.ipaファイル)の名前として使用します。このファイルは、iOSデバイスにアプリケーションをデプロイすると作成されます。詳細は、第16.2.4項「iOSデプロイメント・プロファイルの作成方法」を参照してください。


  3. 「ID」フィールドに、一意のIDを入力します。

    名前の競合を避けるため、AndroidとiOSでは、リバースパッケージ名が使用されます(例: com.company.application)。JDeveloperによって、アプリケーション名の前には、com.companyがリバースパッケージとして付加されますが、この値は別の値で上書きできます。ただし、上書きする値は一意で、iOSとAndroidの両方のデバイスのIDガイドラインを順守するものでなくてはなりません。iOSアプリケーションについては、『iOS Team Administration Guide』 (http://developer.apple.com/library/iosのiOS Developer Libraryで入手可能)の「Creating and Configuring App IDs」を参照してください。Androidについては、,Android開発者のWebサイト(http://developer.android.com/guide/topics/manifest/manifest-intro.html)で入手できる、Androidマニフェスト・ファイルに関する情報を参照してください。第16.2.3項「Androidデプロイメント・プロファイルの作成方法」および第16.2.4項「iOSデプロイメント・プロファイルの作成方法」で説明するように、このIDはデプロイメント・プロファイル内で上書きできます。


    注意:

    Androidデバイスまたはエミュレータにアプリケーションが正しくデプロイされるようにするには、IDの先頭を数字ではなく、文字にする必要があります。たとえば、IDが925090のように(com.company.925090)完全に数値で構成されている場合、アプリケーションはデプロイできません。hello925090などの文字で始まるIDであれば(com.company.hello925090)、デプロイメントは正常に実行できます。


  4. 「説明」フィールドに、アプリケーションの目的を説明した、短いけれども詳細な要約を入力します。

  5. 「バージョン」フィールドに、バージョンを入力します。

  6. 「ベンダー」フィールドに、このアプリケーションを最初に作成したベンダーの名前を入力します。

  7. 「ライフサイクル・イベント・リスナー」フィールドの「参照」をクリックして、「プロパティの編集」ダイアログ(図5-5を参照)を開き、イベントを起動、停止、アクティブ化、非アクティブ化するためのランタイム・コールを有効にするイベント・リスナーを登録します。イベント・リスナーの完全修飾クラス名を入力する必要があります。これはオプションのフィールドです。

    図5-5 アプリケーション・イベント・リスナーの取得

    application.LifeCycleListenerImplの取得。

    デフォルトのアプリケーション・リスナー・クラスは、application.LifeCycleListenerImplです。ADFモバイルでは、デフォルトではこのクラスは登録されません。このクラスはJVMを起動するため、各ADFモバイル・アプリケーションには適さない可能性があるからです。かわりに、「プロパティの編集」ダイアログ(図5-5を参照)を使用して、手動でこのクラスを登録する必要があります。このダイアログを閉じると、JDeveloperにより、<adfmf:application>要素がlistener-class属性によって更新されます(例5-2を参照)。

    例5-2 listener-class属性の追加

    <adfmf:application xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                       xmlns:adfmf="http://xmlns.oracle.com/adf/mf"
                       name="OracleMobileApplication"
                       id="com.company.OracleMobileApplication"
                       appControllerFolder="ApplicationController" 
                       listener-class="application.LifeCycleListenerImpl"
                       version="1.1"
                       vendor="Oracle">
       <adfmf:description>This is an ADF Mobile application</adfmf:description>
       <adfmf:featureReference id="feature1"/>
    </adfmf:application>
    

    詳細は、第5.6項「ライフサイクル・イベント・リスナーについて」を参照してください。

5.4 Springboardとナビゲーション・バーの動作の構成

Springboardとナビゲーション・バーの表示動作を次のように制御するよう、ADFモバイル・アプリケーションを構成できます。

5.4.1 アプリケーションのナビゲーションの構成方法

「アプリケーション」ページの「ナビゲーション」のオプション(図5-6を参照)を使用して、ナビゲーション・バーを表示または非表示にしたり、アプリケーションによって使用されるSpringboardのタイプを選択したり、ユーザーがアプリケーションをめくるように見ていくときのSpringboardの反応方法を定義できます。

図5-6 「アプリケーション」ページの「ナビゲーション」のオプション

「ナビゲーション」のオプション。

始める前に:

adfmf-application.xmlの概要エディタの「アプリケーション」ページを選択する必要があります。

ナビゲーション・バーの表示動作を設定するには:

  1. 「アプリケーションの起動時にナビゲーション・バーを表示」を選択して、モバイル・アプリケーションの起動時に、デフォルトで、Springboardではなくナビゲーション・バーが表示されるようにします(図5-7を参照)。

    図5-7 デフォルトでナビゲーション・バーを表示(iPhone)

    デフォルトのナビゲーション・バー

    このオプションをオフにすると、アプリケーションの起動時にナビゲーション・バーが表示されなくなり、ユーザーにはSpringboardがナビゲーションの唯一の方法として提示されます。ナビゲーション・バーはSpringboardと同じ目的を果たすものなので、これを非表示にすることで冗長な機能を削除できる場合もあります。

  2. 「ナビゲーション・バー・トグル・ボタンの表示」を選択して、選択したアプリケーション機能のコンテンツが表示されているときにはナビゲーション・バーを非表示にします。図5-8はこのオプションを示したもので、図5-7に示されているナビゲーション・バーを、アプリケーション機能のコンテンツによって非表示にする方法が示されています。

    図5-8 ナビゲーション・バーを非表示(iPhone)

    ナビゲーション・バーがアプリケーション・コンテンツによって隠されています。

    このオプションはデフォルトで選択されており、アプリケーション機能によって表示/非表示状態が指定されていなければ、ナビゲーション・バーはデフォルトで表示されます。

Springboardの表示動作を設定するには:

  1. Springboardのタイプを選択します(存在する場合)。

    • なし: アプリケーションにSpringboardを表示しない場合は、このオプションを選択します。

    • デフォルト: ADFモバイルによって提供されるデフォルトのSpringboardを表示します。これは図5-1に示すスタイルを使用しています。デフォルトのSpringboardは、ADFモバイルAMXページとして実装されます。詳細は、第5.4.5項「ADFモバイルAMXコンテンツによるカスタムSpringboardアプリケーション機能について」を参照してください。

    • カスタム: カスタマイズされたSpringboardを使用します。これはHTMLページまたはADFモバイルAMXページのいずれかとして実装できます。このアプリケーションはadfmf-feature.xmlファイルでアプリケーション機能として宣言されます。このファイルはビュー・コントローラ・プロジェクト内にあります。詳細は、第5.8.1項「アプリケーション機能の基本情報の定義方法」を参照してください。HTMLで記述されたカスタムSpringboard内をナビゲーションできるようにする方法は、第6章「アプリケーション機能の表示制御」を参照してください。

      • 機能: Springboardとして使用するアプリケーション機能を選択します(図5-10を参照)。


        注意:

        カスタムSpringboardアプリケーション機能は、ADFモバイル・アプリケーションのナビゲーション・バー内に表示することも、Springboardに表示されるアプリケーション機能の1つとして表示することもできません。詳細は、第5.5.1項「モバイル・アプリケーションのコンテンツの指定方法」を参照してください。


        図5-9 カスタムSpringboardとしてのアプリケーション機能の選択

        アプリケーション機能を選択します。
  2. 「アプリケーションの起動時にSpringboardを表示」を選択して、モバイル・アプリケーションの起動後にエンド・ユーザーに対してSpringboardを表示できるようにします。(このオプションは、「デフォルト」または「カスタム」オプションでのみ使用できます。)

  3. 「Springboardトグル・ボタンの表示」を選択して、Springboardのボタンを表示できるようにします(図5-10を参照)。このボタンはアプリケーション機能内に表示されます。図5-7「デフォルトでナビゲーション・バーを表示(iPhone)」では、アプリケーション機能のコンテキスト内にこのボタンが表示されています。このオプションは、「デフォルト」または「カスタム」オプションでのみ使用できます。

    図5-10 Springboardトグル・ボタン(iPhoneで使用)

    Springboardトグル・ボタン。

Springboardのスライドアウト動作を設定するには:

  1. 「Springboardアニメーション」を選択して、「右にスライド」を選択します。Springboardは、「スライドアウト幅」オプションで入力したピクセル数値(またはパーセント)によって指定された領域を占有します。「なし」を選択した場合、Springboardは右からスライドできません(つまり、ADFモバイルではこのアクションを有効にするためのアニメーションが提供されません)。Springboardが表示領域全体を占有します。


    注意:

    スライドアウト・オプションは、Springboardの「カスタム」または「デフォルト」オプションを選択した場合のみ適用できます。


  2. 幅を設定します(ピクセル単位)。iOSデバイスのSpringboardのデフォルト幅は320ピクセルです。Androidデバイスでは、デフォルトでSpringboardは画面全体を占有するので、使用可能な幅がすべて占有されます。


    注意:

    Springboardが表示領域全体を占有しない場合は、アクティブなアプリケーション機能が残りの表示領域を占有します。詳細は、第5.4.3項「Springboardにアニメーションを設定する場合の処理」を参照してください。


5.4.2 ナビゲーション・オプションの構成時の処理

Springboardおよびナビゲーション・バーのオプションを設定すると、adfmf:application.xmlファイルの<adfmf:navigation>要素に対して要素の更新や追加が行われます。たとえば、「なし」を選択すると、<springboard enabled="false">によってコードが更新されます(例5-3を参照)。

例5-3 Springboardを表示しないようにする処理

<adfmf:application>
  ...
  <adfmf:navigation>
     <adfmf:navigationBar enabled="true"/>
     <adfmf:springboard enabled="false"/>
  </adfmf:navigation>
</adfmf:application>

ヒント:

デフォルトでは、ナビゲーション・バーは有効ですが、Springboardは有効ではありません。XMLを手動で更新すると、次のようにSpringboardを有効化できます。

<adfmf:application>
  ...
<adfmf:navigation>
    <adfmf:springboard enabled="true"/>
  </adfmf:navigation>
  ...
</adfmf:application>

例5-4は、デフォルトを選択したときに、enabled属性がtrueに設定される様子を示しています。


注意:

Springboardはデバイスの画面全体を占有するので、ナビゲーション・バーとSpringboardは同時には表示されません。


例5-4 デフォルトのSpringboardの表示の有効化

<adfmf:application>
  ...
  <adfmf:navigation>
     <adfmf:navigationBar enabled="true"/>
     <adfmf:springboard enabled="true"/>
  </adfmf:navigation>
</adfmf:application>

「カスタム」を選択して、Springboardとして使用するアプリケーション機能を選択すると、エディタでは<adfmf:navigation>要素(例5-5を参照)が移入されます。id属性は、adfmf-feature.xmlファイルで定義された、カスタムSpringboardとして使用するアプリケーション機能を指しています。

例5-5 カスタムSpringboardの構成

<adfmf:navigation>
    <adfmf:springboard enabled="true">
      <adfmf:springboardFeatureReference id="springboard"/>
    </adfmf:springboard>
  </adfmf:navigation>

5.4.3 Springboardにアニメーションを設定する場合の処理

例5-6は、adfmf-application.xmlファイルのナビゲーション・ブロックを示しています。ここでは、Springboardはスライドアウトし、指定された表示領域(213ピクセル)を占有するように設定されています。

例5-6 Springboardアニメーションの構成

<adfmf:navigation>
   <adfmf:navigationBar enabled="true"
                        displayHideShowNavigationBarControl="true"/>
   <!-- default interpretation of width is pixels -->
   <adfmf:springboard enabled="true"
                      animation="slideright"
                      width="213"
                      showSpringbaordAtStartup="true"/>
</adfmf:navigation>

次の行ではアニメーションを無効にしています。

<adfmf:springboard enabled="true" animation="none"/>

次の行では、Springboardが表示領域の左から100ピクセル分を占有するように設定し、アクティブなアプリケーション機能が表示領域の残りの部分を占有できるようにしています。

<adfmf:springboard enabled="true" animation="slideright" width="100px"/>

アニメーション以外に、例5-6は次の処理を示しています。

  • showSpringboardAtStartup属性の使用。アプリケーションの起動時にSpringboardを表示するかどうかを定義します。(デフォルトでは、Springboardは表示されます。)

  • navigationBardisplayHideShowNavigationBarControl属性の使用。

Springboardが表示されないようにするには、enabled属性をfalseに設定します。

5.4.4 HTMLコンテンツによるカスタムSpringboardアプリケーション機能について

ADFモバイルによって提供されるデフォルトのHTML Springboardページでは、次のテクノロジが使用されています。これらは、カスタマイズしたログイン・ページに含めることもできます。

  • Cascading Style Sheets (CSS): 色とレイアウトを定義します。

  • JavaScript: Springboardページ内に埋め込まれた<script>タグには、第6章「アプリケーション機能の表示制御」で説明するメソッド(PhoneGap APIをコールする)が格納されています。また、HTMLページはJavaScriptを使用して、コールバックに応答したり、ページ・スワイプを検出します。スワイプ・イベントが検出されたら、JavaScriptでは、スタイル・シートの動的変更によってページ・モーションをアニメートできるようになります。

  • WebKit: レイアウト間および異なるSpringboardページ間での遷移時に、アイコンのなめらかなアニメーションが提供されます。WebKitレンダリング・エンジンの詳細は、http://www.webkit.org/を参照してください。

HTMLで記述されるSpringboardは、adfmf-feature.xmlファイルで宣言され、adfmf-application.xmlファイルで参照されるアプリケーション機能です。

5.4.5 ADFモバイルAMXコンテンツによるカスタムSpringboardアプリケーション機能について

HTMLで記述されたもののように、ADFモバイルAMXを使用して記述されたSpringboardは、ADFモバイル・アプリケーションによって参照されるアプリケーション機能です(第5.5.1項「モバイル・アプリケーションのコンテンツの指定方法」を参照)。


注意:

カスタムSpringboardページ(HTMLまたはADFモバイルAMXによって作成されたもの)は、ビュー・コントローラ・プロジェクト内に配置する必要があります。ビュー・コントローラ・プロジェクト内にはadfmf-feature.xmlファイルも格納されています。詳細は、第5.5.1項「モバイル・アプリケーションのコンテンツの指定方法」を参照してください。


デフォルトのSpringboard (jdev_install\jdeveloper\jdev\extensions\oracle.adf.mobile\libにあるadfmf.default.springboard.jar)は、ADFモバイルAMXページであり、機能アーカイブ(FAR) JARファイルにバンドルされ、ADFモバイル・アプリケーションに含まれる別のFARとともにデプロイされます。JARファイルには、DataBindings.cpxファイルやPageDef.xmlファイルなど、Springboardに関連付けられたすべてのアーティファクトが含まれます。このファイルは、adfmf-application.xmlファイルのSpringboardオプションで「デフォルト」が選択された後のみ使用できます。このオプションを選択すると、このFARもアプリケーション・クラスパスに追加されます。詳細は、第16.5項「機能アーカイブ・ファイル(FAR)のデプロイ」を参照してください。

デフォルトのSpringboard (例5-7に示すspringboard.amx)は、ADFモバイルAMXアプリケーション機能として実装されます。

例5-7 デフォルトのSpringboardページ、springboard.amx

<?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:facet name="header">
         <amx:outputText value="#{bindings.name.inputValue}" id="ot3"/>
      </amx:facet>
      <amx:listView var="row"  
                    value="#{bindings.features.collectionModel}"
                    fetchSize="#{bindings.features.rangeSize}"
                    id="lv1"
                    styleClass="amx-springboard">
         <amx:listItem showLinkIcon="false"  
                       id="li1"
                       actionListener="#{bindings.gotoFeature.execute}">
            <amx:tableLayout id="tl1"
                             width="100%">
               <amx:rowLayout id="rl1">
                  <amx:cellFormat id="cf11"  
                                  width="46px"
                                  halign="center">
                      <amx:image source="#{row.image}"  
                                 id="i1"
                                 inlineStyle="width:36px;height:36px"/>
                  </amx:cellFormat>
                  <amx:cellFormat id="cf12"  
                                  width="100%"
                                  height="43px">
                     <amx:outputText value="#{row.name}" 
                                     id="ot2"/>
                  </amx:cellFormat>
               </amx:rowLayout>
            </amx:tableLayout>
               <amx:setPropertyListener from="#{row.id}" 
                                        to="#{pageFlowScope.FeatureId}"/>
         </amx:listItem>
      </amx:listView>
   </amx:panelPage>
</amx:view>

図5-11に示すように、ADFモバイルAMXファイルでは、リスト・アイテムがADFモバイル・アプリケーションの埋込みアプリケーション機能であるリスト・ビューを使用してSpringboardを定義します。これらのアプリケーション機能は、デプロイ後は、名前と関連アイコンによって表示されます。アプリケーション機能を選択すると、AdfmfContainerUtilities.gotoFeatureメソッドがコールされます。詳細は、第6.2.7項「gotoFeature」を参照してください。また、第8.2.7項「リスト・ビューおよびリスト・アイテム・コンポーネントの使用方法」も参照してください。

図5-11 デフォルトのSpringboard

リスト・ビューのアプリケーション機能

ADFモバイルでは、ApplicationFeaturesデータ・コントロール内にカスタムSpringboardを作成(またはデフォルトのSpringboardを拡張)するための基本ツールが提供されています。このデータ・コントロール(図5-12を参照)により、ADFモバイル・アプリケーションとそのアプリケーション機能の両方を記述する属性のデータ・コレクションを使用して、Springboardを宣言的に構築できます。

図5-12 ApplicationFeaturesデータ・コントロール

ApplicationFeaturesデータ・コントロール。

ApplicationFeaturesデータ・コントロールのメソッドにより、ナビゲーション機能を追加できます。これらのadfmf.containerUtilitiesメソッドについて、表5-2に説明します。詳細は、第6.2項「ADFモバイル・コンテナ・ユーティリティAPI」を参照してください。また、第9章「バインディングの使用とデータ・コントロールの作成」も参照してください。

表5-2 ApplicationFeatureメソッド

メソッド 説明

gotoDefaultFeature

デフォルトのアプリケーション機能に移動します。

gotoFeature

このメソッドに渡されたパラメータによって指定される特定のアプリケーションに移動します。

gotoSpringboard

Springboardに移動します。

hideNavigationbar

ナビゲーション・バーを非表示にします。

showNavigationbar

ナビゲーション・バーを表示します(非表示になっている場合)。

resetFeature

このメソッドに渡されたパラメータによって指定されるアプリケーション機能をリセットします。


5.5 モバイル・アプリケーション内のアプリケーション機能の構成

各ADFモバイル・アプリケーションには、少なくとも1つのアプリケーション機能が必要です。

5.5.1 モバイル・アプリケーションのコンテンツの指定方法

図5-13は、「機能参照」ページを示しています。このページで、モバイル・アプリケーションのコンテンツを構築できます。第5.2項「モバイル・アプリケーションの構成ファイルについて」に示したように、モバイル・アプリケーション識別子ファイルの<adfmf:featureReference>要素によって、これらのアプリケーション機能を指定します。

例5-8 adfmf-application.xmlファイルでの機能参照の指定

<adfmf:featureReference id="Customers"
                        allowDeviceAccess="true"
                        showOnSpringboard="true"
                        showOnNavigationBar="true"/>
<adfmf:featureReference id="HCM"
                        allowDeviceAccess="true"
                        showOnSpringboard="true"
                        showOnNavigationBar="true"/>
<adfmf:featureReference id="PROD"
                        allowDeviceAccess="true"
                        showOnSpringboard="true"
                        showOnNavigationBar="true"/>

例5-8では、いくつかの定義済の機能参照とそれらに関連する属性を示しています。概要エディタでは、これらの機能参照は「機能参照」表に表示されます。図5-13は、カスタマおよび製品のアプリケーション機能をそれぞれ表すHCMおよびPRODに対して定義された機能参照を示しています。このページを使用して、アプリケーション機能に対する参照を入力し、モバイル・アプリケーションのSpringboard内での表示を設定します(図5-1を参照)。

さらに、このページでは、ナビゲーション・バーおよびSpringboard上でのアプリケーション機能の表示順序を設定できます。


注意:

モバイル・アプリケーションの構築は反復型のプロセスなので、新しいFARが使用可能になり、新しいアプリケーション機能がadfmf-feature.xmlファイルに追加されると、機能参照を追加、削除または更新できます。


図5-13 「機能参照」ページを使用したアプリケーション機能の指定

機能参照の追加。

始める前に:

第5.8項「アプリケーション機能の基本構成の設定」に示すように、アプリケーション機能がadfmf-feature.xmlファイル内で構成されている必要があります。さらに、adfmf-application.xmlの概要エディタを開く必要があります。

機能参照を指定するには:

  1. adfmf-application.xmlの概要エディタの「機能参照」ページをクリックします。

  2. 「追加」をクリックします。

  3. 機能参照の挿入ダイアログで、ドロップダウンリストからアプリケーション機能のIDを選択します(図5-14を参照)。

    このダイアログには、adfmf-feature.xmlファイルの<adfmf:feature>要素に記述されているすべてのアプリケーション機能がリストされます。このダイアログを使用することで、<adfmf:featureReference>要素と<adfmf:feature>要素の両方のid属性が確実に一致するようになります。第5.5.2項「機能参照IDと機能IDについて」も参照してください。

    図5-14 モバイル・アプリケーションのコンテンツの選択

    機能参照の追加。
  4. 必要に応じて、上矢印と下矢印(図5-14参照)を使用して機能参照の表示順序を調整するか、「ID」列の行にあるドロップダウン・リスト(図5-15を参照)を使用して機能参照の順序を変更します。


    注意:

    「機能参照」表の一番上のIDが、ADFモバイル・アプリケーション内で最初に表示されるアプリケーション機能です。例として、図5-7に示されているEmployeesアプリケーション機能を参照してください。


    図5-15 機能参照の順序変更

    アプリケーション機能の表示順序を再ソートします。
  5. 「ナビゲーション・バーに表示」列および「Springboardに表示」列の行のドロップダウン・リストから、 「true」または「false」を選択することで、Springboardとナビゲーション・バーのアプリケーション機能に対する表示動作を設定します。図5-16は、アプリケーション機能がナビゲーション・バーに表示されなくなるオプションの選択状態を示しています。

    図5-16 ナビゲーション・オプションの変更

    アプリケーション機能が表示されないようにします。

    デフォルトでは、Springboardとナビゲーション・バーの表示は有効(つまりtrue)に設定されています。ナビゲーション・バーとSpringboardの両方の属性をfalseに設定すると、アプリケーション機能は最初の位置にある場合のみ表示されるようになります。第6.2.12項「hideNavigationBar」および第6.2.13項「showNavigationBar」も参照してください。


    注意:

    Springboardアプリケーションは、ナビゲーション・バー上またはADFモバイル・アプリケーションのSpringboard内には表示されないので、カスタムSpringboardアプリケーション機能の機能参照については、「ナビゲーション・バーに表示」および「Springboardに表示」を両方とも「false」に設定する必要があります。第5.4.5項「ADFモバイルAMXコンテンツによるカスタムSpringboardアプリケーション機能について」も参照してください。


  6. connections.xmlファイル内で構成したドメインが、ADFモバイルPhoneGap APIによって有効化されたデバイス・サービスにアクセスできるようにするには、「デバイス・アクセスの許可」列で「true」を選択します。デフォルトでは、すべてのアプリケーション機能でこのようなアクセスを許可しています。ドメインがデバイス・サービスにアクセスできないようにするには、「false」を選択します。詳細は、第12章「リモートURLとしてのアプリケーション機能の実装」を参照してください。

5.5.2 機能参照IDと機能IDについて

ADFモバイル・アプリケーションには多数のプロジェクトを格納できるので、多数のadfmf-feature.xmlファイルも含むことができます。アプリケーション構成ファイルでは、機能参照はadfmf-feature.xmlファイルによって記述される機能と関連しています。<adfmf:featureReferenceのIDは、対応するアプリケーション機能が定義される場所を識別します。言い換えれば、adfmf-application.xmlファイル内の<adfmf:featureReference要素のid属性は、adfmf-feature.xml内の<adfmf:feature要素に対して定義されたid属性と同じである必要があります。たとえば、adfmf-application.xml<adfmf:featureReference id="customers"は、adfmf-feature.xml<adfmf:feature id="customers"によって定義されます。JDeveloperは、同じモバイル・アプリケーション内のアプリケーションと機能識別子ファイルの間の参照を監査し、矛盾を発見したら警告を行います。図5-17に示すように、JDeveloperは、機能参照と機能アプリケーション識別子ファイルで宣言された機能との間の不一致をコード内で波状の下線で強調表示し、「参照が見つかりません」という警告を表示します。この場合は、機能参照IDが正しいPRODではなくPRiDと定義されています。JDeveloperの構文監査の詳細は、『Oracle Fusion Middleware Oracle JDeveloperユーザーズ・ガイド』の「アプリケーションの監査とプロファイリング」の章を参照してください。


注意:

機能IDはアプリケーション全体を通して一意である必要があります。アプリケーション機能は再使用できるので、適切なネーミング規則によって機能IDを必ず一意にしてください。


図5-17 id属性の監査

idの監査。

<adfmf:featureReference>のIDがadfmf-feature.xmlファイルで定義されている場合、ポップアップ・メニューの「宣言に移動」(図5-18を参照)を使用して、adfmf-application.xmlファイル内の<adfmf:featureReference>idから、これに対応するadfmf-feature.xmlファイル内の<adfmf:feature>idへ移動できます。

図5-18 adfmf-feature.xmlファイル内のアプリケーション機能宣言の検索

機能宣言を見つけます。

5.6 ライフサイクル・イベント・リスナーについて

ADFモバイル・ランタイムでは、クラスが様々なLifeCycleListenerメソッドを実装して、ネイティブ・オペレーティング・システムのフレームワークからJVMに送信されるイベント通知を伝達します。これらのイベント通知は、モバイル・アプリケーションと埋込みのアプリケーション機能の両方の様々な状態(起動、停止または休止)について記載しています。ADFモバイルは、汎用的な起動メッセージを使用して、JVMでクラス関数を呼び出します。

adfmf-application.xmlファイルとadfmf-feature.xmlファイルの概要エディタでは、イベント発生時にADFモバイルがコールするライフサイクル・リスナー・クラスを宣言的に追加できます。概要エディタのライフサイクル・イベント・リスナー・クラスフィールドにある「クラスおよびパッケージ・ブラウザ」を使用して、完全修飾クラス名(パッケージを含む)を入力すると、JDeveloperによってXMLページにlistener-class属性が移入されます。ADFモバイル・アプリケーションでは、この属性は<adfmf:application>要素に含まれています(例5-9を参照)。

例5-9 adfmf-application.xmlファイルのlistener-class属性

<adfmf:application xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                   xmlns:adfmf="http://xmlns.oracle.com/jdev/adfmf"
                   id="app-20110308"
                   name="#{strings.Title}"
                   vendor="Oracle"  version="1.0"
                   listener-class="oracle.adfmf.application.AppListener">
 
...
 
</adfmf:application>

adfmf-feature.xmlファイルでは、listener-class属性は、<adfmf:feature>属性内に格納されています(例5-10を参照)。

例5-10 adfmf-feature.xmlファイルのlistener-class属性

...
 
   <adfmf:feature id="mycompany.phonelist"
                 name="Phone List"
                 icon="mycompany.phonelist/PhoneIcon.png"  
                 listener-class="oracle.adfmf.feature.LifeCycleListener">
                 image="mycompany.phonelist/PhoneImage.png"
      <adfmf:content id="general">

         <adfmf:amx file="mycompany.phonelist/Phone.amx"/>
      </adfmf:content>
 
   </adfmf:feature>
 
...

LifeCycle Eventsサンプル・アプリケーションでは、adfmf-application.xmlファイルとadfmf-feature.xmlファイルにおけるイベント・リスナー・クラスの宣言例が提供されています。このサンプル・アプリケーションは、開発用コンピュータのJDeveloperインストール・ディレクトリ内にある次の場所のPublicSamples.zipファイルに含まれています。

jdev_install/jdeveloper/jdev/extensions/oracle.adf.mobile/Samples

5.6.1 ADFモバイル・アプリケーションのイベント

ADFモバイル・アプリケーションのライフサイクル・リスナー・クラスは、LifeCycleListenerインタフェースのstartstopactivatedeactiveメソッドを実装する必要があります(例5-11を参照)。

例5-11 ADFモバイル・アプリケーションのLifeCycleListenerインタフェース

package oracle.adfmf.application;
 
public interface LifeCycleListener
{
   void start();
   void stop();
   void activate();
   void deactivate();
}

例5-12に示すAppListenerクラスでは、イベントを開始または停止するためにLifeCycleListenerメソッド・コールを使用します。また、アプリケーションを休止させる(deactivate)場合や、休止から戻す(activate)場合にも、これらのメソッド・コールを使用します。

例5-12 LifeCycleListenerインタフェースの実装

package some.package;
import oracle.adfmf.application.LifeCycleListener;
 
public class AppListener implements LifeCycleListener
{
    public AppListener()
    {
        super();
    }
    public void start()
    {
        // Perform application startup tasks...
    }
    public void stop()
    {
        // Perform tasks to stop the application...
    }
    public void activate()
    {
        // Perform appplication activation tasks...
    }
    public void deactivate()
    {
        // Perform application deactivation tasks...
    }
}

ヒント:

アプリケーション・レベルでのLifeCycleListenerImpl.javaインタフェースの実装例は、LifeCycleEventsサンプル・アプリケーションのAppHandler.javaファイルを参照してください。このファイルは、アプリケーション・コントローラ・プロジェクトのApplication Sourcesフォルダ内のapplicationノードにあります。


5.6.2 モバイル・アプリケーション・イベントのタイミング

ADFモバイルは、ADFモバイル・アプリケーションの起動時、シャットダウン時、休止時における特定のタイミングでアプリケーション・ライフサイクル・イベントをコールします。表5-3は、これらのイベントが実行されるタイミングと、各イベントに対応するObjective-Cを示しています。

表5-3 ADFモバイル・ライフサイクル・イベント

ADFモバイル・アプリケーション・イベント タイミング iOSアプリケーション委任メソッドとの関係

start

ADFモバイル・アプリケーションがアプリケーション機能を完全にロードした後、ユーザーに最初のアプリケーション機能またはSpringboardを表示する直前にコールされます。

このイベントは特定のアプリケーション委任メソッドには対応していません。adfmf-application.xmlファイルとadfmf-feature.xmlファイルのロード後、スプラッシュ画面が非表示になる直前にコールされます。

stop

ADFモバイル・アプリケーションがシャットダウンを開始するときにコールされます。

アプリケーション委任のapplicationWillTerminate:メソッド内でコールされます。

activate

ADFモバイル・アプリケーションを背景にある状態からアクティブ化するときにコールされます。

アプリケーション委任のapplicationDidBecomeActive:メソッド内でコールされます。

deactivate

ADFモバイル・アプリケーションを非アクティブ化し、背景に移動するときにコールされます。

アプリケーション委任のapplicationWillResignActive:メソッド内でコールされます。


5.6.3 アプリケーション機能ライフサイクル・リスナー・クラスについて

ADFモバイル・アプリケーション機能ライフサイクル・リスナー・クラス(例5-14に示したFeatureListenerPhoneListなど)では、アプリケーション機能を休止時に非表示にしたり、休止から戻るときに表示したりするために、LifeCycleListenerインタフェースのactivateおよびdeactivateメソッドを実装する必要があります(例5-13を参照)。

例5-13 アプリケーション機能LifeCycleListenerのインタフェース

package oracle.adfmf.feature;
public interface LifeCycleListner
{
   void activate();
   void deactivate();
}

例5-14は、FeatureListenerPhoneListと呼ばれるクラスを示しています。このクラスでは、LifeCycleListenerを実装することで、activateおよびdeactive関数を使用してアプリケーション機能を表示/非表示にします(表5-4を参照)。

例5-14 アプリケーション機能ライフサイクルの実装

package some.package;
 
import oracle.adfmf.feature.LifeCycleListener;
 
public class FeatureListenerPhoneList implements LifeCycleListener
{
    public FeatureListenerPhoneList()
    {
        super();
    }
    public void activate()
    {
        // Perform application activation tasks...
    }
    public void deactivate()
    {
        // Perform application deactivation tasks...
    }
 
}

ヒント:

LifeCycle Eventsサンプル・アプリケーションでは、Feature1Handler.javaおよびFeature2Handler.javaファイルにより、機能アプリケーション・レベルでLifeCycleListenerインタフェースを使用する例が提供されています。これらのファイルは、ビュー・コントローラ・プロジェクトのApplication Sourcesフォルダ内にあります。


5.6.4 アプリケーション機能のアプリケーション・ライフサイクルでイベントをアクティブ化および非アクティブ化するタイミング

表5-4は、アプリケーション機能に対してactivateイベントおよびdeactivateイベントを実行するタイミングを示しています。

表5-4 activateイベントとdeactivateイベント

イベント タイミング

activate

アプリケーション機能をエンド・ユーザーに表示する直前にコールします。

deactivate

アプリケーション機能がエンド・ユーザーに表示されなくなった後でコールします。


5.7 モバイル機能アプリケーションの構成ファイルについて

adfmf-feature.xmlファイル(例5-15を参照)では、対応するadfmf-application.xmlファイルの<adfmf:featureReference>要素によって参照される実際のモバイル・アプリケーション機能を構成できます。

例5-15 adfmf-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="PROD" 
                   name="Products" 
                   icon="images/logo.png">
        <adfmf:constraints>
        </adfmf:constraints>
        <adfmf:description>ADF Products</adfmf:description>
        <adfmf:content id="PROD.1">
            <adfmf:amx file="PROD/Products_page.amx"/>
        </adfmf:content>
    </adfmf:feature>
    <adfmf:feature id="HCM" 
                   name="Contents" 
                   icon="images/directory.png">
        <adfmf:description>People Finder</adfmf:description>
        <adfmf:content id="HCM.1">
            <adfmf:remoteURL connection="Connections1"/>
        </adfmf:content>
    </adfmf:feature>
    <adfmf:feature id="Customers" 
                   name="Customers" 
                   icon="images/people.png">
        <adfmf:constraints>
            <adfmf:constraint property="user.roles" 
                              operator="equal" 
                              value="field sales"/>
            <adfmf:constraint property="user.roles" 
                              operator="not" 
                              value="consultant"/>
        </adfmf:constraints>
        <adfmf:description>Customers</adfmf:description>
        <adfmf:content id="Customers.2">
            <adfmf:localHTML url="Customers/customers_page.html"/>
        </adfmf:content>
    </adfmf:feature>
</adfmf:features>

adfmf-feature.xmlファイルの要素を定義することで、アプリケーション機能の動作を設定します。このためには、今度はXMLファイル内のルート要素<adfmf:features>の下で最上位の要素である<Feature>機能の子要素を定義します。<Feature>要素そのものは、名前、バージョン、セキュリティ保護の有無など、アプリケーション機能の基本情報について記述しています。詳細は、第17章「ADFモバイル・アプリケーションのセキュリティ」を参照してください。<Feature>要素の子要素を表5-5に示します。adfmf-application.xml識別子ファイルの概要エディタのように、adfmf-feature.xmlファイルの概要エディタを使用して、このファイルをこれらの要素で宣言的に更新(または編集)できます(第5.8項「アプリケーション機能の基本構成の設定」を参照)。

表5-5 <Feature>要素の子要素

要素 説明

<adfmf:content>

アプリケーション機能のコンテンツの実装方法を記述します。アプリケーション機能のコンテンツは、ADFモバイルAMXページ、ローカルに格納されたHTMLページまたはリモートに提供されるWebアプリケーションとして配信できます。コンテンツをWebアプリケーションとして指定する方法は、第12章「リモートURLとしてのアプリケーション機能の実装」を参照してください。

<adfmf:constraint>

指定したアプリケーション機能をアプリケーション・ランタイムに表示できるようにするかどうかを決定します。制約を使用すると、ユーザー・ロールやデバイスのプロパティなどの基準に基づいてアプリケーション機能の使用を許可または回避できます。詳細は、第14章「制約の設定」を参照してください。


5.8 アプリケーション機能の基本構成の設定

各モバイル・アプリケーションには、少なくとも1つのアプリケーション機能が必要です。各アプリケーション機能はそれぞれ別個に(モバイル・アプリケーション自体とも別に)開発できるので、adfmf-feature.xmlファイルの概要エディタでは、<adfmf:features>の子要素を定義して、それぞれの名前とIDを割り当て、コンテンツの実装方法を設定することで、アプリケーション機能を区別できます。アプリケーション機能の概要エディタを使用すると、モバイル・アプリケーション内のアプリケーション機能のランタイム表示を制御したり、アプリケーション機能がユーザー認証を必要とするタイミングを指定することもできます。

5.8.1 アプリケーション機能の基本情報の定義方法

概要エディタの「一般」タブ(図5-19を参照)では、アプリケーション機能を追加したり、その基本情報や表示アイコンを指定できます。

図5-19 機能アプリケーションの「一般」タブ

「一般」タブで一意の機能IDを設定します。

始める前に:

アプリケーション機能で、ADFモバイルによって提供されるデフォルト・イメージではなく、ナビゲーション・バーやSpringboardのカスタム・イメージを使用する場合、これらのイメージは、Android開発者のWebサイト(http://developer.android.com/guide/practices/ui_guidelines/icon_design.html)および、iOS Developer Library(http://developer.apple.com/library/ios/navigation/)で入手できる『iOS Human Interface Guidelines』の「Custom Icon and Image Creation Guidelines」の章に示されている仕様に従って作成する必要があります。

これらのイメージは、ビュー・コントローラ・プロジェクトのpublic_htmlディレクトリに配置します。第5.9.2項「外部リソースの選択について」も参照してください。

さらに、adfmf-feature.xmlファイルを開いて、「一般」タブを選択します。

アプリケーション機能の基本情報を設定するには:

  1. 「一般」タブを選択します。

  2. 「機能」表で、「追加」をクリックします。

  3. 「ADFモバイル機能の作成」ダイアログ(図5-17を参照)の入力を完了して、「OK」をクリックします。このダイアログは次のように入力します。

    • 「機能名」フィールドに、アプリケーション機能の表示名を入力します。

    • 「機能ID」フィールドに、アプリケーション機能の一意の識別子を入力します。

    • 必要に応じて、アプリケーション機能の場所を、public_htmlディレクトリ(デフォルトの親ディレクトリ)内の任意のディレクトリに変更します。この場所を「ディレクトリ」フィールドに入力します。

    • 新しく定義したアプリケーション機能をモバイル・アプリケーションに追加するには、「機能ID」に入力した値と一致するid属性を持つadfmf-application.xmlファイルに、新しい<adfmf:featureReference>要素を追加します。「対応する機能参照をadfmf-application.xmlに追加」を選択します。このダイアログの入力を完了すると、「機能参照」ページの表(図5-13を参照)に機能参照が追加されます。第5.5.2項「機能参照IDと機能IDについて」も参照してください。

      図5-20 アプリケーション機能の追加

      機能アプリケーションを追加します。
  4. 概要エディタの「一般」タブで、「ベンダー」フィールドに、アプリケーション機能を最初に作成したベンダーの名前を入力します。これはオプションの値です。

  5. 「バージョン」フィールドに、アプリケーション機能のバージョン番号を入力します。これはオプションの値です。

  6. 「説明」フィールドに、アプリケーションの目的の簡単な説明を入力します。これはオプションの値です。

  7. 「ライフサイクル・イベント・リスナー」の「クラスおよびパッケージ・ブラウザ」を使用して、完全修飾クラス名(oracle.adfmf.featureのようにパッケージを含む)を入力して、イベントを起動、停止、休止および休止から戻すためのランタイム・コールを有効にします。詳細は、第5.6項「ライフサイクル・イベント・リスナーについて」を参照してください。これはオプションの値です。

  8. 「ナビゲーション・バー・アイコン」および「Springboardイメージ」フィールドで、ナビゲーション・バーのアイコンとして使用するイメージと、Springboardの表示アイコンとして使用するイメージを、プロジェクトから参照して選択します。アプリケーション・ナビゲータからファイルの場所のフィールドに、イメージ・ファイルをドラッグ・アンド・ドロップすることもできます。これはオプションの値です。

5.9 アプリケーション機能のコンテンツ・タイプの定義

<adfmf:content>要素に子要素を追加すると(例5-16を参照)、アプリケーション機能をローカルHTML、リモートURL、モバイルADF AMXファイルのどれとして実装するのかを定義できます。各アプリケーション機能は、いずれかまたはすべてのコンテンツ・タイプとして実装できます。

例5-16 <adfmf:content>要素

<adfmf:content id="Feature1">
      <adfmf:amx file="FeatureContent.amx">
</adfmf:content>

5.9.1 アプリケーション・コンテンツの定義方法

概要エディタの「コンテンツ」タブ(図5-21を参照)には、例5-16に示したターゲット・コンテンツ関連の要素と属性を定義するためのドロップダウン・リストとフィールドが表示されます。このタブのフィールドを使用すると、アプリケーション機能用に配信されるコンテンツのタイプと、そのコンテンツ・タイプで使用するナビゲーションとSpringboardアイコンのイメージを制御できる制約を設定できます。

各コンテンツ・タイプには、独自のパラメータ・セットがあります。たとえば、図5-21に示すように、ADFモバイルAMXとして実装するアプリケーション機能のADFモバイルAMXページまたはタスク・フローの場所を指定する必要があります。さらにオプションで、アプリケーション機能に他のアプリケーション機能(またはADFモバイル・アプリケーション自体)とは異なるルック・アンド・フィールを設定するCSSファイルを選択したり、ADFモバイルAMXコンポーネントのアクションを制御するJavaScriptファイルを選択することもできます。

図5-21 アプリケーション機能の実装の定義

コンテンツの実装を選択します。

始める前に:

各コンテンツ・タイプには、次のような独自の前提条件があります。

  • ADFモバイルAMX: ADFモバイルAMXとして実装されるアプリケーション機能には、既存のビュー(単一のADFモバイルAMXページ)か、バインド・タスク・フローまたはバインドなしタスク・フローが必要です。JavaScriptファイルを追加すると、ADFモバイルAMXコンポーネントに対するレンダリング・ロジックが提供されるか、既存のレンダリング・ロジックがオーバーライドされます。カスタムのルック・アンド・フィールを指定するセレクタを含むスタイル・シート(CSS)を含めます。このルック・アンド・フィールは、ADFモバイル・アプリケーション・レベルで埋込みアプリケーション機能に対して提供されるスキニング・ファイルのルック・アンド・フィールをオーバーライドします。CSSを含むことで、アプリケーション機能全体で確実に独自のルック・アンド・フィールを持つようになります。

    ADFモバイルAMXページとこれらを格納するモバイル・アプリケーションは、両方とも「新規ギャラリ」のウィザードを使用して作成できます。これらのウィザードにアクセスするには、まず「アプリケーション・ナビゲータ」でビュー・コントローラ・プロジェクトを強調表示してから、次に「新規」を選択します。または、「アプリケーション・ナビゲータ」でビュー・コントローラ・プロジェクトを右クリックしてから「新規」を選択すると表示されるポップアップ・メニュー(図5-22を参照)を使用して、ADFモバイルAMXページを作成することもできます。ADFモバイルAMXページの構築の詳細は、第7章「ADFモバイルAMXページの作成」を参照してください。

    図5-22 ADFモバイル・ページを作成するためのポップアップ・メニュー

    「ADFモバイルAMXページ」を選択します。
  • リモートURL: リモートURL実装には、有効なWebアドレスとホストされたモバイル・アプリケーションが必要です。詳細は、第12章「リモートURLとしてのアプリケーション機能の実装」を参照してください。

  • ローカルHTML: ローカルHTMLとして実装されるアプリケーション機能には、既存のHTMLファイルのバンドルとサポートするリソースが必要です。

アプリケーション・コンテンツをリモートURLまたはローカルHTMLとして定義するには:

  1. adfmf-feature.xmlファイルの「機能」表にリストされているアプリケーション機能を選択します。

  2. 「コンテンツ」をクリックします。

  3. 「追加」をクリックして、「コンテンツ」表に新しい行を作成します(例として、図5-21products.1を参照)。

  4. 次のいずれかのコンテンツ・タイプで、生成されたIDに対応するものを選択します。

    • リモートURL

    • ローカルHTML

  5. コンテンツ固有のパラメータを定義します。

    • リモートURLコンテンツの場合は、図5-23のように接続を選択します。これは、サーバー上のWebページのアドレス(および起動ページの場所)を表しています。

      図5-23 ホスト・アプリケーションの接続の選択

      サーバー接続を選択します。

      この接続を作成するには、まず「追加」をクリックして、次に「URL接続の作成」ダイアログに入力します(図5-24を参照)。このダイアログの詳細は、Oracle JDeveloperのオンライン・ヘルプを参照してください。この接続は、connections.xmlファイルに格納されます。


      注意:

      この接続は、アプリケーション・リソースとしてのみ作成できます。


      図5-24 URL接続の作成

      リモート・サーバーURLを入力します。
    • ローカルHTMLコンテンツの場合は、ローカル・バンドルの場所を入力します。または、「URL」フィールドで「追加」をクリックし、図5-25に示すダイアログに入力して、JDeveloperのHTMLエディタを使用してページを構築することで、HTMLページを作成します。これはアプリケーション機能なので、このページはビュー・コントローラ・プロジェクトのWeb Contentフォルダに格納されます。

      図5-25 アプリケーション機能のコンテンツとしてのローカルHTMLページの作成

      「URL」フィールドの「追加」をクリックします。
  6. 必要に応じて、次の手順を実行します。

    • このコンテンツをユーザーが使用できるようになるための条件を示す制約を入力します。詳細は、第14章「制約の設定」を参照してください。

    • ナビゲーション・バーとSpringboardのイメージを選択します。

アプリケーション機能のコンテンツをADFモバイルAMXとして指定するには:

  1. アプリケーション機能を選択します。

  2. 「コンテンツ」をクリックします。

  3. 必要に応じて、「追加」をクリックして「コンテンツ」表に行を作成し、「タイプ」列のドロップダウン・リストから「ADFモバイルAMX」を選択します(図5-26を参照)。

    図5-26 ADFモバイルAMXをコンテンツ・タイプとして選択

    ADFモバイルAMXをコンテンツ・タイプとして選択します。
  4. 「ファイル」フィールドで「参照」をクリックし、「ADFモバイルAMXページ」または「タスク・フロー」を選択して(図5-27を参照)、ADFモバイルAMXページまたはバインド・タスク・フローの場所に移動し、これを取得します。または、「アプリケーション・ナビゲータ」からファイルの場所のフィールドに、ADFモバイルAMXページをドラッグ・アンド・ドロップすることもできます。

    図5-27 ファイル・フィールドでのファイルの場所の参照

    「ADFモバイルXMLページ」または「タスク・フロー」を選択します。
  5. または、ページまたはタスク・フローを作成します。手順は次のとおりです。

    1. 「ファイル」フィールドで「追加」をクリックして、「ADFモバイルAMX」または「タスク・フロー」を選択します(図5-28を参照)。

      図5-28 「ファイル」フィールドからの「ADFモバイルAMXページ」または「タスク・フロー」の追加

      タスク・フローまたはページを作成します。
    2. 「ADFモバイルAMXページの作成」ダイアログ(図5-29参照)など、作成ダイアログの入力を完了させます。

      図5-29 「ADFモバイルAMXページの作成」ダイアログ

      ADFモバイルAMXコンテンツを作成します。
    3. エディタを使用して、ADFモバイルAMXページまたはタスク・フローを構築します。

  6. 必要に応じて、次の手順を実行します。


    注意:

    イメージ、スタイルシートおよびJavaScriptファイルは、デプロイ可能にするために、public_htmlフォルダ内に配置する必要があります。第5.9.2項「外部リソースの選択について」を参照してください。


5.9.2 外部リソースの選択について

デプロイメントを可能にするために、次の属性によって参照されるすべてのリソースは、ビュー・コントローラまたはアプリケーション・コントローラ・プロジェクトの、public_htmlディレクトリ内に配置する必要があります。

ADFモバイルは、別の場所から参照されるリソースをサポートしていません。つまり、たとえば、../を接頭辞として使用して、public_htmlディレクトリ外部に値を入力することはできません。public_html外部のリソースを参照しないようにする安全策として、ADFモバイルには、「ファイルがpublic_htmlディレクトリにありません」と呼ばれる監査ルールが含まれています。ADFモバイルの監査プロファイル(図5-30を参照)には、「ツール」「プリファレンス」「監査」「プロファイル」と選択することで、「プリファレンス」の「監査」の下の「プロファイル」ノードからアクセスできます。

図5-30 ADFモバイルの監査プロファイル

ディレクトリ・ルールにファイルが見つかりません。

このプロファイルを選択した場合、リソースの場所を変更すると、JDeveloperによって警告が発行されます。図5-31に示すように、デフォルト値がオーバーライドされると、JDeveloperはこうした警告を表示します。監査の詳細は、『Oracle Fusion Middleware Oracle JDeveloperユーザーズ・ガイド』の「アプリケーションの監査とプロファイリング」の章を参照してください。

図5-31 外部リソースの警告

外部リソースの警告

5.10 リソース・バンドルの使用

ADFモバイルでは、ADFの標準のローカライゼーション構造を使用して、英語の言語テキスト・リソースを指定します(ただし他の言語では、任意のツールを使用して、リソース・バンドル・ファイルを生成できます)。ADFモバイル・アプリケーションは、変換可能なUI文字列をアプリケーション・レベルとプロジェクト・レベルの両方で格納するように構成できます(『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』のリソース・バンドルの使用に関する項を参照)。ADFモバイルは、ローカライゼーションにXLIFF (XML Localization Interchange File Format)ファイルのみを使用します。つまり、JDeveloperは、文字列を格納するために.xlfファイルを作成します。(また、図5-32に示すように、プロジェクトのリソース・バンドル設定ページで使用できるリソース・バンドル・タイプは、「Xliffリソース・バンドル」のみです。このページの詳細は、Oracle JDeveloperのオンライン・ヘルプを参照してください。)

図5-32 「プロジェクト・プロパティ」の「リソース・バンドル」ページ

XLIFFのみが使用できます。

アプリケーション・レベルでは、アプリケーション名やプリファレンス・ページのラベルなどの属性の文字列をローカライズできます。表5-6にこれらを示します。

表5-6 ADFモバイル・アプリケーションのローカライズ可能な属性

要素 属性

<adfmf:Application>

name

<adfmf:PreferenceGroup>

label

<adfmf:PreferencePage>

label

<adfmf:PreferenceBoolean>

label

<adfmf:PreferenceText>

label

<adfmf:PreferenceNumber>

label

<adfmf:PreferenceList>

label

<adfmf:PreferenceValue>

name


プロジェクト(ビュー・コントローラ)レベルでは、表5-7に示すような、アプリケーション機能関連の属性ををローカライズできます。

表5-7 アプリケーション機能のローカライズ可能な属性

要素 属性

<adfmf:Feature>

name

<adfmf:Constraint>

value

<adfmf:Parameter>

value

<adfmf:PreferencePage>

label

<adfmf:PrefrenceGroup>

label

<adfmf:PreferenceBoolean>

label

<adfmf:PreferenceText>

label

<adfmf:PreferenceNumber>

label

<adfmf:PreferenceList>

label

<adfmf:PreferenceValue>

name


<amx:commandButton>text属性のようなADFモバイルAMXコンポーネントの属性には、リソース・バンドルを作成できます。表5-8に、これらのADFモバイルAMX (amx)コンポーネントを示します。詳細は、第8.7項「UIコンポーネントのローカライズ」を参照してください。

表5-8 ADFモバイルAMXコンポーネントのローカライズ可能な属性

コンポーネント 属性

<amx:inputDate>

label

<amx:inputNumberSlider>

label

<amx:panelLabelAndMessage>

label

<amx:selectBooleanCheckBox>

label

<amx:selectBooleanSwitch>

label

<amx:selectItem>

label

<amx:selectManyCheckBox>

label

<amx:selectManyChoice>

label

<amx:selectOneButton>

label

<amx:selectOneChoice>

label

<amx:selectOneRadio>

label

<amx:commandButton>

text

<amx:commandLink>

text

<amx:goLink>

text

<amx:inputText>

labelvaluehintText

<amx:outputText>

value


5.10.1 プロジェクト・レベルのリソース・バンドルの作成方法

プロジェクト・レベルでは、「リソース・バンドル」ダイアログを使用してリソース・バンドル・ファイルを作成します。このダイアログには、「プロパティ・インスペクタ」で「テキスト・リソースの選択」をクリックすることでアクセスします(図5-33を参照)。このダイアログでは、表5-7に示すadfmf-feature.xml属性のベース・リソース・バンドルに、テキスト・リソースを自動的に作成できます。

図5-33 機能アプリケーション属性のローカライズ

テキスト・リソースの選択。

始める前に:

『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』のメッセージ・バンドル・オプションの設定方法に関する項の説明に従って、リソース・バンドル・プロパティを構成する必要がある場合もあります。

リソース・バンドルで文字列を使用するには:

  1. 「プロパティ・インスペクタ」で属性を選択します(図5-34Nameなど)。

  2. 「テキスト・リソースの選択」を選択します。図5-34は、「プロパティ・インスペクタ」で選択されたアプリケーション名の属性を示しています。

    図5-34 テキスト・リソースを選択するダイアログ

    アプリケーションのテキスト・リソースを選択します。
  3. 「テキスト・リソースの選択」ダイアログ(図5-35を参照)で、表示名とキーを入力して新しい文字列リソースを作成し、「保存して選択」をクリックします。

    図5-35 リソースを選択するダイアログ

    テキスト・リソースを選択します。

5.10.2 リソース・バンドル追加時の処理

「テキスト・リソースの選択」ダイアログでリソースを追加すると、JDeveloperによって、指定した表示名の文字列とキー・ファイルをADF Meta-INFファイルに格納した、新しいアプリケーション・レベルのリソース・バンドルが作成されます(図5-36Application15Bundle.xlfを参照)。

図5-36 アプリケーション・リソース・バンドル

リソース・バンドルとそのコンテンツ。

属性を最初にローカライズすると、JDeveloperによって<adfmf:loadbundle>要素が追加されます。この要素のbasename属性が、新しく作成したリソース・バンドルを参照します。

さらにJDeveloperは、ローカライズされた属性文字列を、リソース・バンドル内で定義された文字列のキーを参照するEL式に変更します。たとえば、JDeveloperは、Acme Salesというアプリケーション名属性を、リソースの選択ダイアログでキーとして入力されたACME_SALES値に基づいて、name="#{application15Bundle.ACME_SALES}"に変更します。

アプリケーション・レベルにはリソース・バンドル・ファイルが1つしか存在しないので、JDeveloperは、ローカライズされた各文字列を同じリソース・バンドル・ファイルに追加します。

adfmf-application.xmlおよびadfmf-feature.xmlファイルには、それぞれadfmf:loadBundle要素が1つのみ格納されています。アプリケーションをデプロイすると、リソース・バンドルはランタイムによって想定される言語フォーマットに変換されます。

5.10.2.1 ADFモバイルAMXコンポーネントのプロジェクト・レベルのリソース・バンドルを作成する場合の処理

プロジェクト・レベルのリソース・バンドルを使用して、ADFモバイルAMXコンポーネントの属性の文字列をローカライズできます(第8.7「UIコンポーネントのローカライズ」を参照)。例5-17<amx:commandButton>text属性のように、コンポーネントをローカライズすると、JDeveloperによって文字列がEL式に変換されます(たとえば、例5-17#{viewcontrollerBundle.MYBUTTONなど)。

例5-17 ADFモバイルXMLコンポーネントのローカライズ

<?xml version="1.0" encoding="UTF-8" ?>
<amx:view xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:amx="http://xmlns.oracle.com/jdev/amx"
          xmlns:dvtm="http://xmlns.oracle.com/jdev/dvtm">
  <amx:panelPage id="pp1">
    <amx:commandButton id="commandButton1" text="#{viewcontrollerBundle.MYBUTTON}" 
  </amx:panelPage>
  <amx:loadBundle basename="mobile.ViewControllerBundle" var="viewcontrollerBundle"/>
</amx:view>

さらに、図5-37ViewControllerBundle.xlfのように、JDeveloperはプロジェクトのデフォルト・パッケージの下にリソース・バンドルを作成します。生成された<amx:loadBundle>要素では、basenameでこのパッケージをmobile.ViewControllerBundleなどとして表します。

図5-37 プロジェクト・レベルのリソース・バンドル

プロジェクト・レベルのリソース・バンドル。

5.10.3 イメージ・ファイルのローカライズについて

イメージがテキストを格納していたり、特定の国または地域を反映している場合(たとえば旗のピクチャなど)、ローカライゼーション・プロセスの一環として代替イメージを指定できます。イメージをハードコード化することはできません(<amx:image="image2" source="feature1/test.jpg">など)。そのかわり、イメージのパスの<trans-unit>要素を追加することで、ViewControllerBundle.xlfファイルを手動で編集する必要があります(例5-18を参照)。

例5-18 <amx:image>コンポーネントのリソースの定義

<trans-unit id="IMAGEPATH">
     <source>/feature1/test.jpg</source>
     <target/>
</trans-unit>

注意:

例5-18<source>要素で定義されているイメージの場所は、ViewController\public_htmlのアプリケーション機能ファイルの場所を基準にした相対的な場所です。または、イメージ・ファイルの名前を入力することもできます(例: <source>test.jpg</source>)。第5.9.2項「外部リソースの選択について」も参照してください。


ViewControllerBundle.xlfの更新後、「式ビルダー」を使用して、<amx:image>コンポーネントのsource属性のEL式を定義します(図5-38を参照)。

図5-38 ローカライズされた<amx:image>コンポーネントのEL式の作成

XLIFFファイルで定義されたイメージ・リソースを選択します。

5.10.4 iOSアプリケーションのXLIFFファイルについて

<adfmf:loadBundle>要素によって説明された場所には、1つ以上のXLIFFファイルで構成されるファミリが存在している必要があります。XLIFFファイルのファミリには、次のファイルが含まれています。

  • ベースXLIFFファイル: ベースXLIFFファイルの名前は、basename属性によって指定されたパス内の最後のトークンと一致する必要があります。このファイルには.xlfという拡張子が付きます(例: ViewControllerBundle.xlf)。次の定義では、ファイルの名称はViewControllerBundleです。

    <adfmf:loadBundle var="stringBundle" basename="view.ViewControllerBundle"/>
    
  • ゼロ個以上のローカライズされたXLIFFファイル: 各ベースXLIFFファイルには、ゼロ個(以上)のローカライズされたXLIFFファイルを存在させることができます。各ファイルには次のきまりがあります。

    • ファイル拡張子は.xlfである必要があります。

    • 対応するベースXLIFFファイルと同じディレクトリにコロケートさせる必要があります。

    • ファイル名の形式は次のようになります。

      <BASE_XLIFF_FILE_NAME>_<LANGUAGE_TOKEN>.xlf
      

      ここで

      • <BASE_XLIFF_FILE_NAME>は、ベースXLIFFファイル名です(拡張子.xlfは含みません)。

      • <LANGUAGE_TOKEN>の形式は次のとおりです。

        <ISO-639-lowercase-language-code>
        

        注意:

        ADFモバイルは、国または地域をサポートしていません。


        たとえば、スペインの場合、言語トークンはesになります。詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Webユーザー・インタフェース開発者ガイド』のリソース・バンドルとロケールの手動による定義に関する項を参照してください。

      たとえば、言語コードがenesfrの場合、stringBundle.xlfという名前のベースXLIFFを参照するXLIFFファイルのローカライズされたファイル名は次のようになります。

      • stringBundle_en.xlf

      • stringBundle_es.xlf

      • stringBundle_fr.xlf

5.10.5 iOSアプリケーションの国際化

adfmf-application.xmlおよびadfmf-feature.xmlファイルのローカライズ可能な要素は、表5-7および表5-6に示す属性内で、ELに似た文字列を使用して国際化された文字列を参照します。これらの構成ファイルはアプリケーション・ライフサイクルの初期に読み取られるので、これらの文字列は実行時にはEL文として評価されません。そのかわり、これらの文字列は、ネイティブ・デバイス変換インフラストラクチャにおいて変換された文字列の完全なキーとして取得されます。

式言語の構文は"${BUNDLE_NAME.STRING_KEY}"ですが、ADFモバイルは"#{}"によって囲まれた文字列全体をキーとして使用して、変換された文字列を検索します。これらの文字列の形式は、#{bundleName.['My.String.ID']} (ここではXLIFF文字列がピリオドによって分割されています)と、#{bundleName.['MyStringID']} (これはピリオドによって分割されない文字列の識別子に対してのみ使用されます)になります。例5-19には、#{strings.CONTACTS} (name属性を変更します)など、後者の例が示されています。iOSネイティブ・フレームワークでは、デプロイメントで、その文の内容が、変換に使用される*.stringファイル内の適切なキーと必ず一致するようになっています。

エンド・ユーザーに表示される属性、またはエンド・ユーザーに表示されるコンテンツの場所を制御する属性のみが、国際化された文字列の使用をサポートしています。そこには次のような属性が含まれています。

  • <adfmf:application>要素のname属性

  • <adfmf:feature>要素のname属性

  • <adfmf:feature>要素のicon属性

  • <adfmf:feature>要素のimage属性

  • <adfmf:content>要素のicon属性

  • <adfmf:content>要素のimage属性

例5-19では、nameiconimage属性を持つアプリケーション機能が国際化文字列を使用しています。

例5-19 文字列を使用した国際化

<adfmf:feature id="CTCS" name="#{strings.CONTACTS}"  
                         icon="#{strings.CONTACTS_ICON}"
                         image="#{strings.CONTACTS_IMAGE}">
        <adfmf:constraints>
            <adfmf:constraint property="user.roles" 
                              operator="contains" 
                              value="employee" />
        </adfmf:constraints>
        <adfmf:description>The HTML Device Contacts</adfmf:description>
        <adfmf:loadBundle basename="mobile.adfmf-stringsBundle"
                          var="strings"/>
        <adfmf:content id="CTCS.Generic">
            <adfmf:constraints />
            <adfmf:localHTML url="contacts.html" />
        </adfmf:content>
    </adfmf:feature>

<adfmf:loadBundle>要素を定義するときに(例5-20を参照)、バンドル名と実際のバンドルとのマッピングを作成します。バンドル名は、式を評価するときに使用します。

例5-20 <adfmf:loadBundle>を使用したバンドル名のマッピング

<adfmf:constraint property="user.roles"  
                  operator="contains"
                  value="employee" />
        </adfmf:constraints>
        <adfmf:description>The HTML Device Contacts</adfmf:description>
        <adfmf:loadBundle basename="mobile.adfmf-featureBundle" 
                          var="mobileBundle"/>
        <adfmf:loadBundle basename="mobile.adfmf-stringsBundle" 
                          var="strings"/>

ADFモバイルのランタイムでは、JVMの最初のアクセスまで、<adfmf:loadBundle>要素が保持されます。アプリケーション機能に対してADFChannelが作成されると、JVMにメッセージが送信され、すべてのバンドルに関するベース名からEL名へのマッピングが初期化されます。例5-21は、JVMに送信されるメッセージの構造を示しています。

例5-21 ベース名からEL名へのマッピングを初期化するメッセージ

{classname:"oracle.adfmf.framework.api.Model",method:"setBundles",
 params:[[{basename:"mobile.adfmf-featureBundle",elname:"mobileBundle"},{basename:"mobile.adfmf-stringsBundle",elname:"strings"}]]}

5.11 ADFモバイル・アプリケーションのスキニング

ADFモバイルではCSS (Cascading Style Sheet)言語ベースのスキンを使用するので、ADFモバイル・アプリケーション内の(その要素のアプリケーション機能で使用されるものを含む)すべてのアプリケーション・コンポーネントが一貫したルック・アンド・フィールを確実に共有するようになっています。アプリケーションのプレゼンテーションに影響する変更は、ADFモバイルAMXまたはHTMLコンポーネントを再構成するのではなく、スキンを作成または拡張することで実行できます。ADFモバイルは実行時にスキンを適用するので、スキンに対する変更はアプリケーションの起動時に有効になります。

第4.2.2項「ADFモバイル・アプリケーション作成時の処理」に示したように、アプリケーション・コントローラ・プロジェクトの作成によって生成されるアーティファクトには、2つのスキニング関連ファイル、adfmf-config.xmlおよびadfmf-skins.xmlが含まれます。これらのファイルを使用して、ADFモバイル・アプリケーションのスキニングを制御します。adfmf-config.xmlファイルでは、アプリケーション・コンポーネントのレンダリングに使用するデフォルト・スキン・ファミリを指定し、adfmf-skins.xmlファイルでは、デフォルト・スキン・ファミリをカスタマイズしたり、新しく定義することができます。

5.11.1 adfmf-config.xmlファイルについて

ADFモバイル・アプリケーションを作成すると、JDeveloperによって、adfmf-config.xmlファイルがADFモバイル・アプリケーションのMETA-INFノードに移入されます。このファイル自体には、ベースADFモバイル・スキン・ファミリであるMobileFusionfxが移入されます(例5-22を参照)。

例5-22 adfmf-config.xmlファイルに移入されたデフォルト・スキン(mobileFusionFX)

<?xml version="1.0" encoding="UTF-8" ?>
<adfmf-config xmlns="http://xmlns.oracle.com/adf/mf/config">
  <skin-family>mobileFusionFx</skin-family>
<skin-version>1</skin-version>
</adfmf-config>

注意:

<skin-family>要素はEL式をサポートしていません。<skin-version>要素には、1という1つの値しか存在しません。


ADFモバイルは、mobileFusionFxスキン・ファミリのスキンを定義します。スキニング階層では、最上位のスキンがmobileFusionFxで、そこから下って次のスキンはプラットフォーム(iOS)、デバイス・タイプ・スキン(iPadおよびiPhone)は3番目のレベルです。図5-39は、ADFモバイルのプリファレンス・ページのシード・フォーム・ファクタのリストを示しています。この図では、プラットフォームとモデルによる階層が示されています。様々なレベルでのスキンの適用方法の詳細は、第5.11.5項「スキニングについて」を参照してください。

図5-39 スキニングの階層

mobileFusionFXスキニング・ファミリ。

5.11.2 adfmf-skins.xmlファイルについて

アプリケーション・コントローラ・プロジェクトのMETA-INFノードにあるadfmf-skins.xmlファイルは、<skin>および<skin-addition>要素を使用します。<skin>要素は、スキン・ファミリを拡張するために使用します。<skin-addition>要素は、既存のスキンにスタイル・シートを追加します。

デフォルトでは、このファイルは空ですが、表5-9に示されている要素によって子要素を記述します。これらの子要素をこのファイルに移入することで、mobileFusionFxを拡張したり、アプリケーションで使用できるCSSファイルを定義できます。新しいスキンを作成したり、既存のスキンを拡張するには、<skin>要素を使用します。新しいスキンを定義するときに<extends>要素を使用しないでください。

表5-9 <skin>要素の子要素

要素 説明

<id>

ADFモバイルのスキニングはデフォルトのmobileFusionFxスキンをカスタマイズするので、識別子の構文はオペレーティング・システムのバージョンを反映します。これは必須要素です。mobileFusionFxに関してこの要素を定義する場合、Apple iPadおよびiPhoneのコンポーネントをレンダリングするスタイル・シートは、mobileFusionFx.iOSによって識別されます。

mobileFusionFx.iPadはiPadを、mobileFusionFx.iPhoneはiPhoneを、それぞれ排他的にレンダリングします。

<family>

スキン・ファミリを識別します。これは必須要素です。

<extends>

この要素を使用して、特定のデバイス用にデフォルト・スキン(mobileFusionFx)をカスタマイズします。

<?xml version="1.0" encoding="UTF-8" ?>
<adfmf-skins xmlns="http://xmlns.oracle.com/adf/mf/config">
    <skin>
        <id>mobileFusionFx.iPhone</id>
        <family>mobileFusionFx</family>
        <extends>mobileFusionFx.iOS</extends>
       <style-sheet-name>styles/myiphone.css</style-sheet-name>
    </skin>
</adfmf-skins>

<skins>要素に<extends>句がない場合は、新しく定義されたスキンです。

<style-sheet-name>

CSSファイルの場所です(相対URL)。これはオプション要素です。

<version>

不具合修正のためにCSSを変更する場合に使用できるオプションの要素です。


表5-10は、スタイル・シートを既存のスキンに統合する場合に、ADFモバイルCSS内で<skin-addition>要素を定義するために使用できる要素を示しています。

表5-10 <skin-addition>の子要素

要素 説明

<skin-id>

スタイル・シートに注入する既存のスキンの名前。この識別子は、<skin><id>サブ要素の値と一致する必要があります。

<style-sheet-name>

スキンのスタイル・シートの相対URL。


例5-23では、<style-sheet-name>要素でCSSファイルの場所を、<skin-id>でターゲット・スキン・ファミリを指定しています。

例5-23 <skin-addition>要素の使用

<?xml version="1.0" encoding="UTF-8" ?>
<adfmf-skins xmlns="http://xmlns.oracle.com/adf/mf/config">
  <skin-addition>
    <skin-id>mobileFusionFx.iPhone</skin-id>
    <style-sheet-name>skins/mystyles.iphone.addition1.css</style-sheet-name>
  </skin-addition>
</adfmf-skins>

5.11.2.1 ADFモバイルのスキン識別子について

スキン識別子(<skin-id>)は<skin-family>要素と同一で、オペレーティング・システム(iOS、iPhoneまたはiPadなど)を追加することができます。ADFモバイルは、最初に、<skin-family>.<OS>という形式(mobileFusionFx.iPadなど)のスキン識別子を検索します。スキンが見つからない場合は、かわりに<skin-family>のスキン識別子が検索され、デフォルトのスキン・ファミリ(mobileFusionFx)に戻されることになります(この最上位のスキンは、<skin-family>と同一の<skin-id>によって参照されます)。<skin-family>は常に、adfmf-config.xmlファイル内で識別される必要があります。

5.11.3 デフォルト・スキン・ファミリの変更方法

adfmf-config.xmlファイルはADFモバイル・アプリケーションによって使用されている現在のスキンを指定し、adfmf-skins.xmlファイルはそこで使用可能なスキン・ファミリについて記述しています。これらのファイルを編集することで、スキンのカスタマイズ、追加およびテストを実行できます。

ソース・ファイルを直接編集するか、「構造」ウィンドウ(図5-40を参照)を使用して、adfmf-skins.xmlおよびadfmf-config.xmlファイルを更新できます。adfmf-skins.xmlファイルでは、すべてのスキンとスキンの追加を維持し、adfmf-config.xmlファイルでは、アプリケーション・コンポーネントをレンダリングするためのデフォルト・スキンを指定します。「Cascading Style Sheetの作成」ダイアログを使用して、アプリケーション・コントローラ・プロジェクト内に新しいCSSファイルを作成します。CSSファイルは<skin-id>に関連付けられているので、adfmf-skins.xml内の<skin-id>要素を新しいCSS参照によって更新します。adfmf-config.xmlで指定されていないスキン・ファミリをスキニングに使用することはできません。

図5-40 スキニング・ファイルの構成

adfmf_config.xmlファイル。

デフォルト・スキンをカスタマイズするには:

  1. 必要に応じて、新しいCSSファイルを作成します。

    1. アプリケーション・コントローラ・プロジェクトを右クリックして「新規」を選択するか、「ファイル」「新規」をクリックします。

    2. 「新規ギャラリ」で、「HTML」(「Web層」内にある)を選択して、「CSSファイル」を選択します。「OK」をクリックします。

    3. CSSファイルの名前とディレクトリの場所を入力して、「Cascading Style Sheetの作成」ダイアログの入力を完了します。


      注意:

      CSSファイルは、アプリケーション・コントローラ・プロジェクトのpublic_htmlフォルダ内の任意の場所に配置する必要があります(/Users/user name/jdeveloper/mywork/Mobile Application/ApplicationController/public_html/resources/cssなど)。このCSSを参照するadfmf-skins.xmlも、アプリケーション・コントローラ・プロジェクト内に配置されます(application_workspace/ApplicationController/src/META-INF)。


      図5-41 「Cascading Style Sheetの作成」ダイアログ

      アプリケーション・コントローラに配置されたCSSファイル。
  2. adfmf-skins.xmlファイルを開きます。

  3. ADFモバイル・スキンの「コンポーネント・パレット」から「構造」ウィンドウに、<skin>コンポーネントをドラッグ・アンド・ドロップします。

  4. 次のように、「skinの挿入」ダイアログ(図5-42を参照)に入力を行うことで、表5-9で説明した要素を<skin>要素に移入します。

    • ファミリ: ベース・スキン・ファミリを入力します。スタイルを適用するには、ベース・スキン・ファミリが、adfmf-config.xmlファイルの<skin-family>要素によって定義されたものと同じである必要があります。

    • ID: スキンの識別子を入力します。

    • 拡張: 親スタイルの名前を入力します。mobilefusionFXファミリでは、オペレーティング・システムを付加したベース・ファミリ(mobileFusionFx.iOS)を入力します。

    • スタイルシート名: スタイルシートを取得します。

    図5-42 「skinの挿入」ダイアログ

    デフォルト・スキンをカスタマイズするために使用します。
  5. 「OK」をクリックします。

  6. adfmf-config.xmlファイル内でCSSを定義します。このファイル内のCSS定義のコンテキストは、このスタイルシートを使用してmobilefusionfxスキン・ファミリを拡張するのか、このスタイルシートを追加するのかによって異なります。

新しいスタイルシートをスキンに追加するには:

  1. 「コンポーネント・パレット」から「構造」ウィンドウに、<skin-addition>要素ををドラッグ・アンド・ドロップします。

  2. 「skin-additionの挿入」ダイアログ(図5-43を参照)に入力を行うことで、表5-10で説明した要素を<skin-addition>要素に移入します。

    • 新しいスタイルを追加するスキンの識別子を入力します。

    • CSSファイルの場所を取得します。

    図5-43 「skin-additionの挿入」ダイアログ

    スキン・ファミリIDとファイルの場所を入力します。
  3. 「OK」をクリックします。


注意:

DOM変更構造を使用するカスタム・スタイルを作成すると、ADFモバイルがハングする可能性があります。特に、displayプロパティでは、ADFモバイルAMXから変換されたHTMLでレンダリングに問題が発生します。このプロパティは、tabletable-rowtable-cellなどの値を使用してコンポーネントを表に変換しており、適切な親の表オブジェクト内に含まれていない表関連の構造が作成される可能性があります。この問題はアプリケーションのユーザー・インタフェース自体には表示されないことがありますが、ロギング・コンソールではSignal 10の例外によってレポートされます。


5.11.4 デフォルト・スキン・スタイルのオーバーライド

ADFモバイルAMXアプリケーションでは、ADFモバイルAMXとして実装されたアプリケーション機能に対して特定のスタイルを指定し、それによって、adfmf-config.xmlおよびadf-skins.xmlファイル内のアプリケーション・レベルで設定されているデフォルトのスキン・スタイルをオーバーライドできます。アプリケーション機能に個別のスタイルを追加するには、CSSファイルを包含ファイルとして使用します。

5.11.4.1 アプリケーション機能に新しいスタイル・クラスを適用する方法

adfmf-feature.xmlファイルの概要エディタの「包含」表では、ADFモバイルAMXアプリケーション機能にCSS(Cascading Style Sheet)を追加できます。

図5-44 「包含」表

「包含」表。

始める前に:

第7.2項「タスク・フローの作成」の説明に従って、ADFモバイルのタスク・フローを作成します。Oracle Fusion Middleware Oracle ADFスキン・エディタによるADFスキンの作成のADFライブラリJARからのADFスキンのインポートに関する項およびADFスキンの作成に関する項の説明に従って、Cascading Style Sheetを作成または追加します。

アプリケーション機能にスタイルを追加するには:

  1. 「追加」をクリックして、「包含」表に新しい行を作成します。

  2. 「タイプ」列のドロップダウン・メニューから、「スタイルシート」を選択します(図5-45を参照)。

    図5-45 「スタイルシート」オプションの選択

    「スタイルシート」を選択して編集します。
  3. 「ファイル」列で、「編集」を選択します(図5-45を参照)。

  4. 「プロパティの編集」ダイアログでCSSを選択して(図5-46を参照)、「OK」をクリックします。

    図5-46 アプリケーション機能のCSSの選択

    「プロパティの編集」ダイアログを使用してCSSを選択します。

5.11.4.2 スキンを機能アプリケーションに適用する場合の処理

CSS (またはJavaScriptファイル)を「包含」表に追加すると、ADFモバイルAMXエディタの「プレビュー」ペインにある機能コンテンツのドロップダウン・メニュー(図5-47を参照)からアプリケーション機能を選択することで、アプリケーション機能に追加されたCSSおよびJavaScriptページを、ADFモバイルAMXページに適用できます。

図5-47 機能コンテンツのドロップダウン・メニュー

機能コンテンツのドロップダウン・メニュー

5.11.5 スキニングについて

adfmf-skins.xmlファイルで定義されるCSSファイル(例5-24参照)は、Apple iPhoneとiPadの異なる表示要件に適応するようにスキンを拡張する方法を示します。これらのスタイルは、図5-39に示すように、降順に適用されます。SkinningDemoサンプル・アプリケーションでは、アプリケーションを異なるデバイスにデプロイするときに、カスタマイズされたスタイルを適用できるようにする方法のデモが提供されています。このサンプル・アプリケーションは、開発用コンピュータのJDeveloperインストール・ディレクトリ内にある次の場所のPublicSamples.zipファイルに含まれています。

jdev_install/jdeveloper/jdev/extensions/oracle.adf.mobile/Samples

たとえば、iOSレベルでは、スタイルシート(例5-24mobileFusionFx)がiPhoneまたはiPadのどちらにも適用されます。デバイス固有のスタイル用には、iPhoneおよびiPadのスキンに対して<skin-id>要素を定義します。スキニングのデモ・アプリケーションでは、この要素によって定義されたカスタム・スキンの使用方法が示されています。図5-48は、カスタム・スタイルをiPhoneに適用する方法を示しています。

図5-48 iPhone固有のレンダリング

iPhone上のCSSレンダリング。

例5-24 adfmf-skins.xmlファイルで定義されるスキニング・レベル

adfmf-skins.xml
<?xml version="1.0" encoding="UTF-8" ?>
<adfmf-skins xmlns="http://xmlns.oracle.com/adf/mf/skins">
    <skin>
        <id>mobileFusionFx.iPhone</id>
        <family>mobileFusionFx</family>
        <extends>mobileFusionFx.iOS</extends>
        <style-sheet-name>skins/mobilefusionfx.iphone.css</style-sheet-name>
    </skin>
    <skin>
        <id>mobileFusionFx.iPad</id>
        <family>mobileFusionFx</family>
        <extends>mobileFusionFx.iOS</extends>
        <style-sheet-name>skins/mobilefusionfx.ipad.css</style-sheet-name>
    </skin>
    <skin>
        <id>mobileFusionFx.iPod</id>
        <family>mobileFusionFx</family>
        <extends>mobileFusionFx.iOS</extends>
        <style-sheet-name>skins/mobilefusionfx.ipod.css</style-sheet-name>
    </skin>
    <!--  Skin Additions -->
    <skin-addition>
        <skin-id>mobileFusionFx.iPhone</skin-id>
        <style-sheet-name>skins/mystyles.iphone.addition1.css</style-sheet-name>
    </skin-addition>
    <skin-addition>
        <skin-id>mobileFusionFx.iPhone</skin-id>
        <style-sheet-name>skins/mystyles.iphone.addition2.css</style-sheet-name>
    </skin-addition>
    <skin-addition>
        <skin-id>mobileFusionFx.iOS</skin-id>
        <style-sheet-name>skins/mystyles.ios.addition2.css</style-sheet-name>
    </skin-addition>
</adfmf-skins>

5.12 機能アーカイブ・ファイルの使用

adfmf-application.xmlファイルは、少なくとも1つのアプリケーション機能を参照します。これらのアプリケーション機能は、機能アーカイブ・ファイル(FAR)呼ばれるJARファイルにパッケージ化されると、他のADFモバイル・アプリケーションが使用できる再使用可能なコンテンツを提供します。FARは本質的に、アイコンのイメージ、リソース・バンドル、HTML、JavaScript、その他の実装固有のファイルなど、アプリケーション機能が必要とするすべてのものを格納した自己完結型のコレクションです。第16.5項「機能アーカイブ・ファイル(FAR)のデプロイ」で説明するように、FARのコンテンツには1つのadfmf-feature.xmlファイルが含まれます。このファイルでは、パッケージ化された各アプリケーション機能が一意のIDによって識別されます。このファイルを編集することで(第5.7項「モバイル機能アプリケーションの構成ファイルについて」を参照)、コンテンツ実装(ローカルまたはリモートのHTMLファイルや、ADFモバイルAMXページ)などの機能プロパティを更新し、ユーザー・ロールや権限またはデバイス・プロパティなどのファクタに基づいて表示できます。モバイル・アプリケーションでは、1つまたは複数のFARを参照することも、何も参照しないようにすることもできます。

5.12.1 ADFモバイル・アプリケーションでのFARコンテンツの使用方法

アプリケーション機能を、それを使用するアプリケーションのクラス・パスに追加することで、ADFモバイル・アプリケーションで使用できるようにします。

始める前に:

アプリケーション機能を機能アーカイブ・ファイルとしてデプロイします(第16.5.2項「機能アーカイブのデプロイメント・プロファイルのデプロイ方法」を参照)。

アプリケーション機能コンテンツをADFモバイル・アプリケーションに追加するには:

  1. 「リソース・パレット」を開き、新規ファイルシステム接続を選択します。

  2. 「ファイルシステム接続」ダイアログに入力し、機能アーカイブJARファイルを格納するディレクトリへのファイル接続を作成します。詳細は、Oracle JDeveloperのオンライン・ヘルプを参照してください。

  3. 「リソース・パレット」で、機能アーカイブ・ファイル(JARファイルとして示されている)を右クリックします。

  4. 「アプリケーションに追加」を選択して、これを使用するアプリケーションのクラスパスに追加します(図5-49を参照)。

    図5-49 ADFモバイル・アプリケーションへのFARの追加

    機能アーカイブJARをADFモバイル・アプリケーションに追加します。

    注意:

    使用するアプリケーションのクラスパスから機能アーカイブJARを削除するには、「アプリケーションから削除」を選択します。


5.12.2 機能アーカイブJARをクラスパスに追加する場合の処理

アプリケーションのクラスパスにFARを追加すると、次のようになります。

  • FARのコンテンツが、「アプリケーション・リソース」の「ライブラリ」ノードの下に表示されます(図5-50を参照)。

    図5-50 使用するアプリケーションの「アプリケーション・リソース」に表示される機能アーカイブ・ファイル

    「アプリケーション・リソース」の機能アーカイブJAR。
  • JARに含まれるadfmf-feature.xmlファイルで宣言されたすべてのアプリケーション機能は、図5-51に示すように、アプリケーションで使用できるようになります。この図のドロップダウンには、AcmeSales.jarに属している使用可能なアプリケーション機能のID (HCM、PROD、Customers)と、アプリケーション(StockTracker.jar)に追加された別の機能アーカイブ内で定義されたPortfolioというIDが表示されています。第5.5.1項「モバイル・アプリケーションのコンテンツの指定方法」も参照してください。

    図5-51 様々なadfmf-feature.xmlファイルで定義されたアプリケーション機能の参照

    定義済のアプリケーション機能はどれでも使用できます。

    ヒント:

    機能アーカイブJARをアプリケーションのクラスパスに手動で追加すると、アプリケーション機能が機能参照の挿入ダイアログにも表示されるようになります。


  • 機能アーカイブJARにあるconnections.xmlファイル内の情報は、使用するアプリケーションのconnections.xmlファイルにマージされます。図5-52に示す「ログ」ウィンドウには、名前の競合が表示されています。


    注意:

    使用するアプリケーションで接続が有効であることを確認する必要があります。


    図5-52 接続での名前の競合を示すメッセージ・ログ・ウィンドウ

    接続に関するメッセージ警告ログ。

5.12.3 機能アーカイブ・リソースの再使用の有効化について

FARのリソースをアプリケーションで使用可能にするためには、FARの名前とその機能参照IDが両方ともグローバルに一意である必要があります。FARの内部では、DataControl.dcxファイルが一意のパッケージ・ディレクトリ内に存在する必要があります。これらのパッケージ・ディレクトリのデフォルト名をそのまま使用するのではなく、プロジェクト用に一意のパッケージ階層を作成する必要があります。さらに機能参照IDについても、同じようなパッケージ・ネーミング・システムを使用する必要があります。