カスタム・ルック・アンド・フィールのパッケージ化について

ルック・アンド・フィールの実装には、次のように様々なリソースを含めることができます。

ADF UIXでは、インストールされたリソースをWebアプリケーションの要素として検索できます。クラスパス上で検索することもできます。この結果、カスタム・ルック・アンド・フィールを2通りの方法のいずれかでデプロイできます。

UIXではルック・アンド・フィール・リソースをクラスパス上で検出できるため、すべてのリソース(ルック・アンド・フィール構成ファイル、スタイルシート、イメージ、レンダラなど)を1つのJARファイルとしてパッケージ化することができます。

ルック・アンド・フィールJARファイルを作成すると、ルック・アンド・フィールを複数のWebアプリケーションにデプロイする場合に便利です。ただし、ルック・アンド・フィールをJARファイルにパッケージ化する必要はありません。

UIXでは、リソースのタイプによって異なる方法でリソースを検出します。後のセクションでリソース・タイプとUIXで各タイプを検出する方法を説明し、カスタム・ルック・アンド・フィールをパッケージ化する方法を確認します。

ルック・アンド・フィール構成ファイル

ルック・アンド・フィールの構成ファイルへのパスは、UIX構成ファイル(uix-config.xml)の<look-and-feel-config>要素で指定します。UIXでは、まずWebアプリケーションのコンテキスト・ルートを基準としてこのパスの指定が解釈されます。たとえば、カスタム・ルック・アンド・フィールが次のように登録されているとします。

<look-and-feel-config>WEB-INF/mycompany-laf.xml</look-and-feel-config>

UIXは、まずWebアプリケーションのWEB-INFディレクトリの下でmycompany-laf.xml構成ファイルを検索します。

サーブレット・コンテキスト・ルート・ディレクトリでルック・アンド・フィール構成ファイルを検出できない場合、UIXはさらにクラスパスにルック・アンド・フィールがないかを調べます。こうした動作をするのは、カスタム・ルック・アンド・フィールを独立したJARファイルとしてパッケージ化できるためです。

この機能を利用するには、ルック・アンド・フィール構成ファイルをJARファイルとしてパッケージ化し、Webアプリケーションのクラスパスにインストールする必要があります。たとえば、mycompany-laf.xml構成ファイルがorg.example.laf.customパッケージとしてインストールされている場合は、uix-config.xmlファイルに次のパスを指定してカスタム・ルック・アンド・フィールを登録します。

<look-and-feel-config>org/example/laf/custom/mycompany-laf.xml</look-and-feel-config>

スタイルシート

ルック・アンド・フィールのスタイルシートの場所は、ルック・アンド・フィール構成ファイルの<look-and-feel>要素のstyle-sheet-name属性で指定します。UIXは、次の場所でスタイルシートを検索します。

  1. UIXスタイルシート・ディレクトリ(/cabo/styles
  2. Webアプリケーションのコンテキスト・ルート
  3. Webアプリケーションのクラスパス

/cabo/stylesディレクトリに格納されたUIXの独自のスタイルと同じ場所にカスタム・スタイルシートをインストールする場合は、ファイル名のみを指定します。たとえば、mycompany.xssスタイルシートを/cabo/stylesディレクトリにインストールする場合、look-and-feel要素は次のようになります。

<look-and-feel style-sheet-name="mycompany.xss" ... />

コンテキスト・ルートの下のサブディレクトリにスタイルシートをインストールする場合は、コンテキスト・ルートを基準としたパスのみを指定します。たとえば、mycompany.xssスタイルシートをWebアプリケーションの/laf/stylesディレクトリにインストールする場合、style-sheet-name属性は次のようになります。

<look-and-feel style-sheet-name="/laf/styles/mycompany.xss" ... />

最後に、カスタム・ルック・アンド・フィールをJARファイルにパッケージ化する場合は、クラスパス上のスタイルシートへのパスのみを指定します。たとえば、mycompany.xssスタイルシートをorg.example.laf.custom.stylesパッケージ内のJARファイルにインストールする場合、style-sheet-name属性は次のようになります。

<look-and-feel style-sheet-name="org/example/laf/custom/styles/mycompany.xss" ... />

イメージ

ルック・アンド・フィールのイメージは、UIXのカスタマイズ可能なアイコン・アーキテクチャを使用して指定されます。UIXがイメージ・ファイルを検索する場所は、ルック・アンド・フィール構成ファイルにイメージを登録するときに使用するアイコンのタイプによって変わります。UIXは次のアイコン・タイプをサポートし、該当する場所でイメージを検索します。

UIXでは<resource-image>アイコン・タイプもサポートされており、アイコンはルック・アンド・フィールのJARファイルにパッケージ化されます。UIXは、<resource-image>アイコンを使用して登録したアイコンをWebアプリケーションのクラスパス上で検索します。したがって、たとえば必要なカスタム・アイコンがorg.example.laf.custom.imagesパッケージの下のJARファイルに配置された場合は、ルック・アンド・フィール構成ファイルに次のエントリを追加してこのようなイメージを登録します。


<icon name="required">
  <resource-image uri="org/example/laf/custom/images/required.gif"/>
</icon>    

これで、クラスパス上でイメージが自動的に検索され、ブラウザで使用可能になります。

レンダラ

UIXは、JavaベースのレンダラとUIX XMLテンプレートベースのレンダラ(.uitファイル)という2種類のレンダラをサポートしています。Javaベースのレンダラは、Webアプリケーションのクラスパスから直接ロードされます。テンプレートベースのレンダラの場合は、まずUIXがWebアプリケーションのコンテキスト・ルートの下、次にクラスパス上でレンダラを検索します。たとえば、カスタム・ルック・アンド・フィールにpageLayoutコンポーネントのカスタム・テンプレートベースのレンダラcustomPageLayout.uitが含まれる場合は、次のエントリを使用してルック・アンド・フィール構成ファイルにレンダラを登録します。


<renderer name="pageLayout">
  <template name="/laf/templates/customPageLayout.uit"/>
</renderer>    

次に、UIXはWebアプリケーションの/laf/templatesディレクトリの下でテンプレートを検索します。テンプレートが見つからない場合、UIXはさらにクラスパス上でlaf.templatesパッケージを検索します。

テンプレートをルック・アンド・フィールJARファイルのorg.example.laf.custom.templatesパッケージにパッケージ化する場合は、次のエントリを指定してカスタム・テンプレートを登録します。


<renderer name="pageLayout">
  <template name="org/example/laf/custom/templates/customPageLayout.uit"/>
</renderer>    

アプリケーションのディレクトリ構造

カスタム・リソースを使用するアプリケーションのディレクトリ構造は一般に次のようになります。

|.....
|||+------<oc4j_install>/j2ee/home/applications
||||+-------myUIXApp
|||||+--------cabo
|...............[images、jsLibs、jsps、styles]
|...............[stylesに配置された.xssファイル]
|||||+--------lib
|...............[ルック・アンド・フィールJARファイル]
|||||+--------META-INF
|...............application.xml
|||||+--------WEB-INF
|...............web.xml
|...............uix-config.xml
|||||+--------UIXWebApp1
|---------------[*.uix]
|||||||+--------cabo
|.................[実行時に自動生成]
|||||||+--------images
|||||||+--------includes
|||||||+--------jsLibs
|.................[JavaScriptライブラリ]
|||||||+--------source
|.................[.java files]
|||||||+--------templates
|.................[*.uit]
||||||+---------WEB-INF
|.................[.xmlルック・アンド・フィール構成ファイル]
|||||||+----------classes
|...................[任意のprivateクラス]
|||||||+----------lib
|...................[アプリケーションで使用する任意のprivate JARファイル]
|.................web.xml
|.................uix-config.xml
|.....

注意: カスタム・ルック・アンド・フィールがJAR形式でパッケージ化されている場合は、クラスパスにJARファイルを追加してアプリケーションでカスタム・リソースを使用できるようにする必要があります。この作業は、アプリケーションごとにローカルでも実行できますが、JARファイルをサーブレット・エンジンのクラスパスにインストールすればグローバルに実行できます。


ルック・アンド・フィール構成ファイルについて

ルック・アンド・フィール構成ファイルの作成
カスタム・ルック・アンド・フィールの登録
カスタム・ルック・アンド・フィールの作成
ADF UIXページの操作
Webアプリケーション設計ツールの使用

 

Copyright © 1997, 2004, Oracle. All rights reserved.