4.4.11. Plug-n-Skin (プラグアンドスキン)
プラグアンドスキン は、 プロジェクトへカスタムスキンを簡単に作成、 カスタマイズ、 プラグできるようにします。 事前定義された RichFaces スキンのパラメータを基にしてスキンを作成することができます。 また、 プラグアンドスキンはリッチコントロールの外見を標準の HTML エレメントと統合できるようにします。 本項では、 プラグアンドスキンで独自のスキンを作成するための段階的な手順を取り上げます。
最初に Maven を使用して、新しいスキンのテンプレートを作成します (RichFaces に Maven を設定する方法に関する詳細は JBoss wiki article を参照してください)。こうした Maven の手順はコマンドラインインターフェースにコピーして貼り付けることで実行できます。
コマンドの主キーは次の通りです。
archetypeVersion—3.3.1.GAのように RichFaces のバージョンを表します。artifactId— プロジェクトのアーティファクト ID です。groupId— プロジェクトのグループ ID です。version— 作成するプロジェクトのバージョンです。 デフォルトでは1.0.-SNAPSHOTに設定されています。
この操作は
ARTIFACT-ID にちなんで名付けられるディレクトリを作成します。 このディレクトリには Maven プロジェクトのテンプレートが格納されます。
次の手順はスキン自体を作成するための手順です。
Maven プロジェクトのルートディレクトリより次のコマンドを実行します (このディレクトリには
pom.xml ファイルが格納されます)。
... mvn cdk:add-skin -Dname=SKIN-NAME -Dpackage=SKIN-PACKAGE ...
...
mvn cdk:add-skin -Dname=SKIN-NAME -Dpackage=SKIN-PACKAGE
...
コマンドの主キーは次の通りです。
name— 新しいスキンの名前を定義します。package— スキンの基本パッケージです。デフォルトではプロジェクトのgroupIdが使用されています。
コマンドのその他任意のキーは次の通りです。
baseSkin— ベーススキンの名前を定義します。createExt—trueに設定されると拡張 CSS クラスが追加されます。 詳細は 「標準コントロールスキニング (Standard Controls Skinning) 」 を参照してください。
コマンドで作成されたファイルについては 表4.34「
mvn cdk:add-skin -Dname=SKIN-NAME -Dpackage=SKIN-PACKAGE コマンドで作成されたファイルとフォルダ」 を参照してください。
|
ファイル名
|
場所
|
内容
|
|---|---|---|
BaseImage.java
| \src\main\java\SKIN-PACKAGE\SKIN-NAME\images\
|
イメージを格納するために使用する基本クラスです。
|
|
BaseImageTest.java
| \src\test\java\SKIN-PACKAGE\SKIN-NAME\images\
|
イメージを格納するクラスのテストバージョンです。
|
|
XCSS files
| \src\main\resources\SKIN-PACKAGE\SKIN-NAME\css\
|
新しいスキンに影響された RichFaces コンポーネントの新しい外見を定義します。
|
SKIN-NAME.properties
| \src\main\resources\SKIN-PACKAGE\SKIN-NAME\css\
|
新しいスキンのプロパティを含むファイルです。
SKIN-NAME.properties ファイルの設定に使用されるプロパティは次の通りです。
|
SKIN-NAME.xcss
| src\main\resources\META-INF\skins
|
新しいスキンが修正したコンポーネントの XCSS ファイルをインポートする XCSS ファイルです。
|
|
XCSS files
| \src\main\resources\SKIN-PACKAGE\SKIN-NAME\css\
| createExt キーが true に設定されている場合に、標準コントロールのスタイルを決定します (extended_classes.xcss と extended.xcss)。
|
SKIN-NAME-ext.xcss
| src\main\resources\META-INF\skins.
| createExt が true に設定されている場合に、標準コントロールの定義のスタイルをインポートします。
|
SKIN-NAME-resources.xml
| src\main\config\resources.
|
前回にリストされた全ファイルの詳細が含まれています。
|
これで
\src\main\resources\SKIN-PACKAGE\SKIN-NAME\css\ にある XCSS ファイルの編集を開始できるようになりました。 次のいずれかの方法で ( XCSS ファイルにリストされている) セレクタに新しいスタイルプロパティを割り当てます。
- 標準 CSS コーディングアプローチ (CSS プロパティをセレクタに追加) です。セレクタは
<f:verbatim> </f:verbatim>タグ内にあるようにしてください。例は以下のとおりです。... .rich-calendar-cell { background: #537df8; } ...... .rich-calendar-cell { background: #537df8; } ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow - XCSS コーディングアプローチ (RichFaces で XCSS ファイルを作成する通常のメソッド) です。XCSS タグは
<f:verbatim> </f:verbatim>タグの 外に 配置されている必要があります。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
これまでの手順を実行し、 XCSS ファイルを編集したら、 新しいスキンをビルドし、 プロジェクトへプラグします。 スキンをビルドするにはスキンプロジェクトのルートディレクトリ (
pom.xml ファイルを格納するディレクトリ) より次のコマンドを実行します。
... mvn clean install ...
...
mvn clean install
...
プラグアンドスキン機能には事前定義されたグラデーションが複数あります。 次のコードを使用してグラデーションを適用することができます。
background-image CSS プロパティは <f:resource f:key="org.richfaces.renderkit.html. CustomizeableGradient"> で定義され、グラデーションを設定します。グラデーションのタイプは gradientType プロパティを使って SKIN-NAME.properties で指定することができ、glass、plastic または plain に設定可能です。前のコードスニペットで見たとおりグラデーションは baseColor、gradientColor、gradientHeight、valign 属性で調整することも可能です。
これで、
web.xml ファイルに新しいスキンパラメータを追加し、 スキンを格納する JAR ファイル (スキンプロジェクトの target ディレクトリに存在) を \WebContent\WEB-INF\lib\ に配置するとプロジェクトの新規作成されたスキンを使用することができるようになりました。
4.4.11.1. 使用詳細 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
本項ではプラグアンドスキン実装の実用面について取り上げます。 プラグアンドスキンのプロトタイプ作成プロセスを説明する項を読んでから本項を読むようにしてください。
最初に、 新しいスキンを作成する必要あります (前項の説明通り)。 以下は新しいスキンプロジェクトのテンプレートを作成します。
これで、作成したファイルやフォルダを確認するため
P-n-S ディレクトリを閲覧できるようになりました。
次に、 Maven を使用して次のように必要なファイルをすべてスキンプロジェクトに追加します。
mvn cdk:add-skin -DbaseSkin=blueSky -DcreateExt=true -Dname=PlugnSkinDemo -Dpackage=SKINPACKAGE
mvn cdk:add-skin -DbaseSkin=blueSky -DcreateExt=true -Dname=PlugnSkinDemo -Dpackage=SKINPACKAGE
前項で説明した通り、
-DbaseSkin はベースとして使用する RichFaces のビルトインスキンを定義し、-DcreateExt=true は、新しいスキンがリッチコンポーネントと標準 HTML コントロールの外見を統一する XCSS ファイルを含んでいることを判断します。
リソースが作成された時点で、新規作成されたスキンを設定し直し始めることができます。リッチコンポーネントの XCSS ファイルの編集から始めます。
プラグアンドスキン機能の例として、
<rich:calendar> スタイル属性といくつかの基本的な HTML コントロールを編集します。以下のように行います。
<rich:calendar>の現在日の背景色を変更します。- 標準 HTML 提出ボタンの色を変更します。
<rich:properties> のスタイルプロパティを編集するには、P-n-S\src\main\resources\skinpackage\plugnskindemo\css\ にある calendar.xcss ファイルを開く必要があります。
calendar.xcss ファイルで .rich-calendar-today セレクタを探し、 background-color: #075ad1; のように変更します。 これにより現在日の背景色が変更します。
次に、 標準 HTML 提出 ボタンのフォントスタイルを変更します。
P-n-S\src\main\resources\skinpackage\plugnskindemo\css\ ディレクトリより extended.xcss ファイルを開き、 次のようにセレクタの波括弧の間に font-weight: bold; を挿入します。
button[type="button"], button[type="reset"], button[type="submit"], input[type="reset"], input[type="submit"], input[type="button"] {
font-weight: bold;
}
button[type="button"], button[type="reset"], button[type="submit"], input[type="reset"], input[type="submit"], input[type="button"] {
font-weight: bold;
}
変更が適用されたため、次に新しい
PlugnSkinDemo スキンをビルドし、 プロジェクトへインポートすることができます。
P-n-S ディレクトリより mvn clean install を実行し、 スキンをビルドします。 これにより、 新たにコンパイルされたスキンを持つ JAR ファイルが格納されている target ディレクトリが作成されます。 この例では、 ファイル名は P-n-S-1.0.-SNAPSHOT.jar です。
次に、 新しい
PlugnSkinDemo スキンをプロジェクトへインポートします。
P-n-S-1.0.-SNAPSHOT.jarファイルを\WebContent\WEB-INF\lib\ディレクトリへコピーします。- 次のように新しいスキンの名前を
web.xmlファイルに追加します。<context-param> <param-name>org.ajax4jsf.SKIN</param-name> <param-value>PlugnSkinDemo</param-value> </context-param>
<context-param> <param-name>org.ajax4jsf.SKIN</param-name> <param-value>PlugnSkinDemo</param-value> </context-param>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
標準コントロールスキニングが
web.xml で有効になっていなければなりません。 以下を追加して標準コントロールスキニングを有効にします。
<context-param> <param-name>org.richfaces.CONTROL_SKINNING</param-name> <param-value>enable</param-value> </context-param>
<context-param>
<param-name>org.richfaces.CONTROL_SKINNING</param-name>
<param-value>enable</param-value>
</context-param>
下図はスキンに行った各変更の結果を表しています。
図4.6 プラグアンドスキン機能の実行