ヘッダーをスキップ

Oracle WebCenter Framework チュートリアル
10g(10.1.3.2.0)

E05043-01
目次
目次
索引
索引

戻る 次へ

4 ページのカスタマイズ

このレッスンでは、前のレッスンで作成したページを拡張します。具体的には、カスタマイズ可能なコンポーネントをページに追加し、コンポーネントのルック・アンド・フィールに影響を与える様々な方法を試してみます。その過程で、ページをテストして、ページの開発が予測どおりに進んでいることを確認します。

図4-1に、このレッスンを終えた時点での、ページ上のコンポーネントのレイアウトを示します。

図4-1    レッスン4を終えた時点でのMyPage.jspx


画像の説明

概要

次の手順を実行することによって、ページをカスタマイズします。

まずは、Oracle WebCenter Frameworkで提供されるいくつかのメリットについて説明します。

手順1: ユーザーにページのカスタマイズを許可

Oracle WebCenter Frameworkの主要な機能の1つは、サイト管理者が他の人のページをカスタマイズできる「実行時での設計時」という概念です。カスタマイズは、カスタマイズ可能なコンポーネント(具体的にはPanelCustomizableおよびShowDetailFrame)を使用して行います。(ページのカスタマイズは、前の章でポートレット・アクションを使用して行ったポートレットのカスタマイズとは異なります。)

この2つのコンポーネントを使用すると、コンテンツの特定の部分を非表示にしたり、ページの別の位置に移動したりするためのオプションをユーザーに与えることができます。これから、その方法を示します。

  1. ビジュアル・エディタにMyPage.jspxが表示されることを確認します。

  2. コンポーネント・パレットを開きます。

  3. ドロップダウン・リストを使用して、「カスタマイズ可能コンポーネント・コア」を選択します(図4-2)。

    図4-2    カスタマイズ可能コンポーネント・コア


    画像の説明

    このグループには次の2つの項目があります。

    • PanelCustomizable: これは、Oracle ADFコンポーネントを含める水平レイアウトまたは垂直レイアウトを提供します。プロパティ・インスペクタでいくつかの属性を設定することにより、レイアウト内に配置するコンテンツを表示または非表示にするためのアクションを有効化できます。

    • ShowDetailFrame: これを使用すると、特定のコンポーネントに対して許可されるアクションを表示できます。Oracle WebCenter Frameworkのこのリリースでは、ユーザーはコンテンツを移動、最小化または最大化できます。ShowDetailFrameは、クロム(ページ上のコンポーネントを囲む境界)として考えることができます。

    これから、これらの概念が実際にどのように作用するかを示します。

  4. アプリケーション・ナビゲータで、「MyPage.jspx」を選択します。

    ページの構造が、構造ウィンドウに表示されることがわかります(図4-3)。

    図4-3    MyPage.jspxの構造


    画像の説明

  5. コンポーネント・パレットで、「PanelCustomizable」を選択して構造ウィンドウにドラッグします。これを「h:form」タグの上にドロップします。

    ヒント

    コンポーネントをフォーム内にドロップするときは、h:formを囲む枠があることを確認してください。  

    「構造」ビューで作業すると、コンポーネントをはるかに正確に配置できますが、コンポーネントを直接ビジュアル・エディタにドラッグ・アンド・ドロップすることもできます。

  6. コンポーネント・パレットで、「ShowDetailFrame」を選択して構造ウィンドウにドラッグします。これを「cust:panelCustomizable」タグの上にドロップします。

    「cust:showDetailFrame」は、「cust:panelCustomizable」の子になります
    図4-4を参照)。

    図4-4    構造ウィンドウ内の階層


    画像の説明

    ビジュアル・エディタ(図4-5)で、グレーのボックス内に「showDetailFrame1」が表示されます。グレーのボックスはcust:panelCustomizableを表すため、この中にshowDetailFrameを適切にドロップしたことがわかります。丸で囲まれた領域は、ユーザーがshowDetailFrameのコンテンツのカスタマイズに使用するコントロールを表します。

    図4-5    MyPage.jspxに追加されたShowDetailFrameコンポーネント


    画像の説明

    今度は、簡単なイメージのフォームのコンテンツを追加します。

  7. コンポーネント・パレットのドロップダウン・リストで、「ADF Faces Core」を選択します。

    すると、一般的に使用されるADFコンポーネントのリストが表示されます。

  8. アルファベット順リストをスクロールダウンして、「ObjectImage」コンポーネントを見つけます。

  9. 「ObjectImage」を選択して構造ウィンドウにドラッグします。これを「cust:showDetailFrame」の上にドロップします。

    ObjectImageの挿入ウィンドウが開きます。

  10. 「...」ボタンを使用して、webcentertutorialcontent.zipを解凍したディレクトリを見つけます(「サンプル・チュートリアル・ファイルのダウンロード」を参照)。たとえば、C:¥TutorialContentなどです。

  11. イメージ「camera.gif」を選択し、「OK」をクリックします。

    ドキュメント・ルートの下にイメージを配置するかどうか尋ねるダイアログが開きます。「はい」を選択すると、イメージのコピーが、アプリケーション・デプロイメント・アーカイブの作成時に自動的に含められる場所に保存されます。

  12. 「はい」をクリックします。

  13. 「保存」をクリックしてから「OK」をクリックします。

    図4-6    MyPage.jspxへのイメージの追加


    画像の説明

    イメージcamera.gifが、showDetailFrameコンポーネント内に表示されます(図4-6を参照)。

    ヒント

    イメージは、ファイル・システム(たとえば、C:¥TutorialContent¥camera.gifなど)からShowDetailFrameコンポーネントに直接ドラッグ・アンド・ドロップできます。ObjectImageが自動的に作成され、イメージがプロジェクトにコピーされます。 

    今度は、別のイメージを追加して、ユーザーがページ上でイメージを移動する方法を学びます。

  14. コンポーネント・パレットのドロップダウン・リストで、「カスタマイズ可能コンポーネント・コア」を選択し、「ShowDetailFrame」を選択します。

  15. 「ShowDetailFrame」を構造ウィンドウにドラッグし、「cust:panelCustomizable」の上にドロップします。

  16. コンポーネント・パレットのドロップダウン・リストで、「ADF Faces Core」を選択し、「ObjectImage」を選択します。

  17. 「ObjectImage」を構造ウィンドウにドラッグします。これを2つ目の「cust:showDetailFrame」の上にドロップします。

  18. 「...」ボタンを使用してhula.gifを見つけ(「サンプル・チュートリアル・ファイルのダウンロード」を参照)、「OK」をクリックします。

    ドキュメント・ルートの下にイメージを配置するかどうか尋ねるダイアログが開きます。

  19. 「はい」を選択します。

  20. 「保存」をクリックしてから「OK」をクリックします。

    ビジュアル・エディタでの「設計」タブは、図4-7のように表示されます。

    図4-7    MyPage.jspx上の2つのイメージおよび1つのポートレット


    画像の説明

    各イメージにはshowDetailFrameヘッダーにそれぞれアクションが関連付けられているため、互いに無関係に動作できます。

    今度は、ページを実行し、どのようなカスタマイズが可能かを確認します。

手順2: ページの実行およびカスタマイズ

この手順では、ページを実行し、ユーザーが行えるカスタマイズをテストします。

  1. 「MyPage.jspx」を右クリックし、「実行」をクリックします。

    コンパイラ・エラーがなければ、ページが別のブラウザ・ウィンドウ内に開きます(図4-8を参照)。

    図4-8    2つのイメージを持つMyPage.jspx


    画像の説明

  2. 最初のイメージのアクション・アイコンをクリックします。

    2つのアクション(「移動」および「最大化」)が表示されます(図4-9を参照)。

    図4-9    アクション・メニュー


    画像の説明

    これらのアクションは、showDetailFrameによって自動的に提供されます。showDetailFrame内にドロップしたコンポーネントはいずれも、その親であるpanelCustomizableのコンテキストで移動または最大化できます。

  3. 最初のイメージ内で「最大化」をクリックし、そのshowDetailFrameが拡大されてpanelCustomizableいっぱいに表示されることを確認します(図4-10を参照)。2つ目のイメージは非表示になります。

    MyJavaPortletはこのアクションに影響されないことに注意してください。これは、ポートレットがこのpanelCustomizableの一部ではないためです。

    図4-10    最大化された1つのイメージ


    画像の説明

  4. アクション・メニューをクリックし、「リストア」をクリックして、イメージを元のサイズに戻します。

  5. いずれかのイメージに対して「移動」「下へ」または「移動」「上へ」をクリックして、ページ上のイメージ位置が入れ替わることを確認します。ここでも、MyJavaPortletはこのpanelCustomizableの制御下にはないため、イメージの位置が入れ替わってもMyJavaPortletの位置は変わりません。

    図4-11に、最初の図形(カメラ)に対して「移動」「下へ」を使用した後のブラウザを示します。フラの図形は、カメラの図形の上に配置されています。

    図4-11    イメージの移動


    画像の説明

次の手順では、MyJavaPortletを「cust:panelCustomizable」に移動し、プロパティ・インスペクタを使用してページ上の様々なコンポーネントの動作を試してみます。

手順3: 追加のカスタマイズ

  1. ブラウザを閉じ、JDeveloperに戻ります。

  2. 構造ウィンドウで、(MyJavaPortletを表す)「adfp:portlet」をドラッグし、「cust:panelCustomizable」にドロップします(図4-12)。

    図4-12    ポートレットをPanelCustomizableにドロップ


    画像の説明

    ポートレットは、自動的にオブジェクト・リストの一番下に移動します。また、「設計」ビューでも同様になります。ポートレットは、2つ目のイメージの下に表示されます。

    最初にshowDetailFrameを挿入せずにポートレットを直接「cust:panelCustomizable」にドロップしたことに注意してください。これは、ポートレットには、ポートレット・クロムによって提供されるカスタマイズ機能(ページ上でポートレットの最大化/最小化や位置変更を行う機能)が自動的に備わっているためです。

    今度は、ポートレットおよびイメージに別の位置決めを選択します。これらを垂直に表示せずに、水平に表示します。

  3. 構造ウィンドウで、「cust:panelCustomizable」を選択します。

  4. プロパティ・インスペクタの「General」で、Layoutの隣のフィールドをクリックします。

    プロパティ・インスペクタは、JDeveloper画面の右部分です(図4-13)。

    図4-13    JDeveloperのプロパティ・インスペクタ


    画像の説明

  5. horizontalを選択します(図4-14を参照)。

    図4-14    水平レイアウトの選択


    画像の説明

    ビジュアル・エディタで、ポートレットとイメージが上下にではなく横に並んで表示されることがわかります(図4-15を参照)。

    図4-15    水平レイアウト表示


    画像の説明

    今度は、コンテンツを表示または非表示にする機能を有効にします。

  6. プロパティ・インスペクタの「General」で、DisplayHeaderを見つけてtrueに変更します(図4-16を参照)。

    図4-16    DisplayHeaderをtrueに変更


    画像の説明

    これによって、メニューの一部としてアクション・アイコンが表示されるためのヘッダー領域が、レイアウトの一番上に表示されます。(独自のアプリケーションでヘッダーを表示しない場合は、DisplayHeaderをfalseのままにしておくことができます。)次の手順を実行する間は、panelCustomizable領域の上にカーソルを合せると、コンポーネントのメニュー・アクションが表示されます。

  7. プロパティ・インスペクタの「アクション」で、IsSeededInteractionAvailableを見つけてtrueに変更します。

    IsSeededInteractionAvailable属性を設定すると、コンポーネントによってサポートされるメニュー・アクションを表示することが可能になります。この場合、ユーザーは、レイアウト内に表示されるコンテンツを表示または非表示にすることができます。

    今度は、プロパティ・インスペクタを使用してMyJavaPortletの名前を変更する方法を学びます。

    プロパティ・インスペクタを介して変更を行った後、実行時にポートレット名を再度カスタマイズまたはパーソナライズすることはできません。この動作はこのチュートリアルの目的上は問題ありませんが、将来的に独自のアプリケーションを開発する際には留意しておく必要があります。

  8. プロパティ・インスペクタにポートレットのプロパティが反映されるように、構造ウィンドウで「adfp:portlet」を選択します。

  9. プロパティ・インスペクタの「General」で、Textフィールドを見つけ、Sample Portletを入力します(図4-17を参照)。

    これによって、ポートレット・ヘッダーに表示される名前が変更されます。

    図4-17    ポートレットの名前変更


    画像の説明

  10. JDeveloperのツールバーで、「すべて保存」をクリックします。

これから、再度ページを実行して、これらの変更がページにどのような影響を及ぼすかを確認します。

手順4: 新しいカスタマイズのテスト

カスタマイズをテストするには、ページを実行し、ページが予測どおりに表示されることを確認します。

  1. 再度ページを実行する前に、埋込みOC4Jサーバーを停止します。メイン・メニューから「実行」「終了」「埋込みOC4Jサーバー」の順に選択します。

    あるいは、埋込みOC4Jサーバーのログ・ウィンドウで、赤い四角形の「終了」アイコンをクリックします。

  2. ビジュアル・エディタで「MyPage.jspx」をクリックし、ツールバーの緑色の矢印をクリックしてページを実行します。

    コンパイラ・エラーがなければ、ページが新しいブラウザ・ウィンドウ内に開きます(図4-18)。

    図4-18    2つのshowDetailFrameおよび1つのポートレットを持つpanelCustomizable


    画像の説明

  3. IsSeededInteractionAvailableをアクティブにした結果、コンテナ・オブジェクトのアクション・アイコンには「コンテンツの表示」アクションが表示されます。このアクションを使用すると、イメージとポートレットを非表示にしたり表示することができます(図4-19)。ここで、これらの操作を試してみます。

    図4-19    「コンテンツの表示」アクション


    画像の説明

    手順3で行った他のページ・カスタマイズもすべて反映されています。

    • ポートレットのタイトルは、Sample Portletに変更されています。ポートレット・タイトルはTextプロパティの影響を受けているため、実行時にタイトルをカスタマイズまたはパーソナライズすることはできません。アクション・アイコンをクリックして「カスタマイズ」をクリックすると、これがわかります。

    • コンポーネントは、垂直ではなく水平に表示されています。イメージの1つに対してアクション・アイコンをクリックすると、「移動」アクションに「上へ」と「下へ」ではなく「左」と「右」が表示されることがわかります。

    • DisplayHeaderをtrueに変更したため、コンテナ・オブジェクトのpanelCustomizableにヘッダー領域が表示されています。DisplayHeader設定を変更する前、手順3ではこのようなヘッダーはレイアウトになかったことを思い出してください。

    ページを実行した人には、これらのページ・カスタマイズが表示されます。

  4. 先に進む前に、プロパティ・インスペクタで行ったポートレット・タイトルの永続的カスタマイズを削除します。第8章「セキュリティの設定」では、実行時に名前を変更できるように、ポートレットのtitleプロパティを使用してページをパーソナライズする例を示します。

    1. ブラウザを閉じ、JDeveloperに戻ります。

    2. MyPage.jpsxの構造ウィンドウで、「adfp:portlet」を選択します。

    3. プロパティ・インスペクタでTextフィールドをクリックし、プロパティ・インスペクタのツールバーで「デフォルトにリセット」アイコンをクリックします。これによって、テキストSample Portletが削除されます。

      ビジュアル・エディタで、ポートレット・ヘッダーの名前がMyJavaPortlet1に戻ります。

将来、1つのページ上に複数のpanelCustomizableコンポーネントを使用し、それぞれで、1つのshowDetailFrameコンポーネント内に複数のポートレットまたはオブジェクトを含めることができます。各レイアウトにそれぞれの「移動」、「最大化」および「表示/非表示」機能があるため、ページに複数のレイアウトを配置すると、コンポーネントおよびポートレットのブロックを個別のエンティティとして扱うことができます。詳細は、『Oracle WebCenter Framework開発者ガイド』を参照してください。

手順5: ルック・アンド・フィールの変更

Oracle WebCenter Frameworkでは、アプリケーションのスタイル(つまり、ルック・アンド・フィール)を制御する方法が2つあります。

次の各手順では、この両方の方法を使用して、MyPage.jspxのルック・アンド・フィールを変更します。

手順5a: デフォルトのADF Facesスキンを使用したshowDetailFrame背景の変更

この手順では、(Oracleという名前の)デフォルトのADF Facesスキンを使用して、スタイル関連のプロパティを操作します。

  1. 構造ウィンドウで、「cust:showDetailFrame」エントリの1つを選択します。このコンポーネントを使用して、スタイル・プロパティ値を指定する方法を示します。

  2. プロパティ・インスペクタで、Backgroundプロパティを開きます。

    デフォルトのADF Facesスキンには、light、mediumおよびdarkの3つの設定があります。このコンポーネントには濃い背景色を選択します。

  3. 値をdarkに変更します(図4-20を参照)。

    図4-20    プロパティ・インスペクタ: Background


    画像の説明

  4. 「ファイル」「すべて保存」の順にクリックして、作業を保存します。

  5. 再度ページを実行する準備として、赤い四角形をクリックして、埋込みOC4Jを停止します。

  6. 「MyPage.jspx」を右クリックし、「実行」をクリックします。

    コンパイラ・エラーがなければ、ページが新しいブラウザ・ウィンドウ内に開きます(図4-21)。showDetailFrameの背景の装飾が変更されたことに注意してください。

    図4-21    濃い背景色のイメージ


    画像の説明

    今度は、新しいスキンを作成し、デフォルトのADF Facesスキンで定義されているスタイルをオーバーライドします。

手順5b: カスタム・スキンを使用した独自のスタイルの適用

この手順では、新しいスキンを作成してアプリケーションに登録し、カスタム・スタイルをMyPage上のコンポーネントに適用する方法を学びます。

  1. まず、JDeveloperに戻り、新しいスタイルシート(.css)を作成します。

    1. アプリケーション・ナビゲータで、「ViewController」を右クリックし、「新規」を選択します。

    2. 新規ギャラリの「カテゴリ」で、「Web Tier」を開き、「HTML」を選択します。

    3. 「項目」で「CSSファイル」を選択し、「OK」をクリックします。

    4. 「ファイル名」に、mystyle.cssを入力します(図4-22を参照)。

      図4-22    Cascading Style Sheetの作成


      画像の説明

    5. 「OK」をクリックします。

    新しいスタイルシートが、アプリケーション・ナビゲータの「ViewController」、「Webコンテンツ」、「css」の下に表示されます。また、エディタにも表示されます。デフォルトのスタイル・セレクタBODY、H1、H2およびH3に注意してください。

    以降の手順で、新しいスキンをアプリケーションに登録します。これには、adf-faces-skins.xmlという名前のファイルを作成し、スキンのID、場所、.cssなどを示すタグの短いリストをこのファイルに移入します。

  2. adf-faces-skins.xmlを作成します。

    1. アプリケーション・ナビゲータで、「ViewController」、「Webコンテンツ」の下の「WEB-INF」フォルダを右クリックし、「新規」を選択します。

    2. 新規ギャラリで、「フィルタ方法」スコープを「すべてのテクノロジ」に設定します。

    3. 「General」ノードで、「XML」を選択します。

    4. 右ペインで、「XML文書」を選択し、「OK」をクリックします。

    5. 「ファイル名」フィールドに、ファイル名としてadf-faces-skins.xmlを入力します(図4-23を参照)。

      図4-23    adf-faces-skins.xmlの作成


      画像の説明

    6. このファイルをWEB-INFフォルダに格納するため、「OK」をクリックしてファイルを作成します。

      エディタに空のXMLファイルが表示されます。このファイルは、アプリケーション・ナビゲータで「WEB-INF」の下に表示されています。

  3. タグをadf-faces-skins.xmlに追加して、新しいスキンを指定します(また、新しいスタイルシートmystyle.cssをポイントします)。

    1. 次のコードをコピーしてXMLエディタに貼り付けます。

      <?xml version="1.0" encoding="ISO-8859-1"?>
      <skins xmlns="http://xmlns.oracle.com/adf/view/faces/skin">
       <skin>
        <id>mystyle</id>
        <family>mystyle</family>
        <render-kit-id>oracle.adf.desktop</render-kit-id>
        <style-sheet-name>css/mystyle.css</style-sheet-name>
       </skin>
      </skins>
      

      ファイルは、図4-24のように表示されます。

      図4-24    adf-faces-skins.xmlの構成


      画像の説明

    2. 「ファイル」「保存」の順にクリックして、adf-faces-skins.xmlを保存します。

    次の手順では、adf-faces-config.xml内に<skin-family>タグを設定することにより、この新しいスキンを使用するようにアプリケーションを構成します。

  4. adf-faces-config.xml内の<skin-family>タグを編集します。

    1. 「ViewController」、「Webコンテンツ」、「WEB-INF」の下にある「adf-faces-config.xml」を開きます。

    2. oracle(デフォルトのスキン)を新しいスキンのファミリ名に置き換えます。mystyleを入力します(図4-25を参照)。

      図4-25    adf-faces-config.xmlでのスキン・ファミリの編集


      画像の説明

    3. 「ファイル」「保存」の順にクリックします。

    これで、新しいスキンがアプリケーションに登録されました。今度は、MyPage上のshowDetailFrameコンポーネントに適用するスタイルシートにいくつかのスタイル・セレクタを追加します。

  5. 次のスタイル・セレクタをmystyle.cssに追加します。

    1. アプリケーション・ナビゲータの「ViewController」、「Webコンテンツ」、「css」の下の「mystyle.css」をダブルクリックします。

    2. 次のコードをコピーしてファイルの一番下に貼り付けます。

      af|showDetailFrame::header-light
      {
       color:Purple;
      }
      af|showDetailFrame::header-medium
      {
       color:Purple;
      }
      af|showDetailFrame::header-dark
      {
       color:White;
      }
      

      このコードは、showDetailFrameコンポーネントのヘッダーおよびポートレットのヘッダーに表示されるテキストの色を指定するものです。ここでは、header-lightおよびheader-mediumにpurpleのテキストを選択し、header-darkにwhiteのテキストを選択しました。適宜、別のカラー・スキームを選択してください。

    3. 次のコードをコピーしてファイルの一番下に貼り付けます。

      af|showDetailFrame::content-light, af|showDetailFrame::content-medium, 
      af|showDetailFrame::content-dark
      {
       color: Black;
       background-color: Silver;
       border-left:1px black solid;
       border-right:1px black solid;
       border-bottom:1px black solid;
      }
      

      このコードは、showDetailFrameコンポーネントおよびポートレット本体のコンテンツについて、背景を銀色、テキストを黒色、境界線を黒色に変更するものです。適宜、別のカラー・スキームを選択してください。

    showDetailFrameコンポーネントおよびpanelCustomizableコンポーネントのスタイル・セレクタの完全なリストは、『Oracle WebCenter Framework開発者ガイド』を参照してください。

  6. 今度は、ページの背景色を変更します。スタイルシートの一番上にあるBODYタグにスクロールし、背景色をWhiteからPurpleに変更します。BODYタグは次のようになります。

    BODY
    {
       background-color: Purple;
       color: black;
       font-family: Arial, Helvetica, sans-serif;
    }
    
  7. 「ファイル」「すべて保存」の順にクリックして、作業を保存します。

  8. 再度ページを実行する準備として、赤い四角形をクリックして、埋込みOC4Jを停止します。

  9. 「MyPage.jspx」を右クリックし、「実行」をクリックします。

    コンパイラ・エラーがなければ、ページが新しいブラウザ・ウィンドウ内に開きます。

    ここで、新しいルック・アンド・フィールを調べてみます。ここに示したスタイルを使用した場合、ページは図4-26のように表示されます。showDetailFramesで、紫色と白色のヘッダー・テキスト、黒色のコンテンツ・テキスト、および銀色の背景が表示されていることに注意してください。また、ページの背景も紫色になります。

    図4-26    mystyle.cssを使用するMyPage.jspx


    画像の説明

    このレッスンでは、アプリケーションのルック・アンド・フィールを操作する方法を試してみました。詳細は、『Oracle WebCenter Framework開発者ガイド』を参照してください。

    先に進む前に、デフォルトのOracleスキンに戻します。

  10. カスタム・スキンを削除するには、次のようにします。

    1. 「ViewController」、「Webコンテンツ」、「WEB-INF」の下にある「adf-faces-config.xml」を開きます。

    2. <skin-family>タグをoracleに戻します(図4-27を参照)。

      図4-27    adf-faces-config.xmlでのスキン・ファミリの編集


      画像の説明

    3. 「ファイル」「すべて保存」の順にクリックします。

次のレッスンでは、ユーザーへの掲示板のような機能を提供するリッチ・テキスト・ポートレットを追加する方法を学びます。


戻る 次へ
Oracle
Copyright © 2007 Oracle Corporation.

All Rights Reserved.
目次
目次
索引
索引