[PR]何かを探す前に無料占い:当たる!無料占い『スピリチュアルの館』

XUL チュートリアル - 1.2 - XUL ファイルを追加する
戻る 内容 リファレンス 進む

XUL チュートリアル - XUL ファイルを追加する

XUL ファイルシステムが、Mozilla で、どのように構成されているか見ることからはじめましょう。

パッケージの構成

Mozilla は、インストールしたいコンポーネントを幾つでももてるように構成されています。典型的なインストールは、ナビゲーター、メッセンジャー、エディターコンポーネントでしょう。インストールされたこれら各々にスキンとロケールをもつこともできます。これらのコンポーネントの各々、つまりパッケージは、そのためのユーザーインターフェースを記述するファイルセットからなります。例えば、メッセンジャーコンポーネントには、メールメッセージリストウィンドウ、コンポジションウィンドウ、アドレスブックダイアログの記述があります。

Mozilla とともに提供されるパッケージは、クロム (chrome) ディレクトリーに置かれます。これは、Mozilla をインストールしたディレクトリーにあります。クロムディレクトリーは、Mozilla が使うユーザーインターフェースを記述するファイルすべてが置かれる場所です。

個々のパッケージには、多くのサブパッケージがあるかもしれません。例えば、メッセンジャーパッケージには、2 つのサブパッケージ、アドレスブックとメッセージコンポジションパッケージが含まれます。

パッケージは、その一部として、それ自身のスキン情報を提供することができます。あるいは、デフォルトスキンに依存する場合もあります。

'クロム' という語は、アプリケーション内のユーザーインターフェース要素を指しています。例えば、ブラウザーでは、ウィンドウのクロム部は、ツールバー、メニュー、ステータスバーでしょう。ブラウザーの内容エリアは、別の文書を表示します。

クロムディレクトリー (Chrome Directory) の詳細

ユーザーインターフェースは、3 つのファイルセットからなり、個々のファイルは、クロムディレクトリー内の別々のサブディレクトリーに保存されます。これら 3 つのセットは、内容、スキンとロケールです。コンポーネントによっては、一つ以上のデフォルトスキンとロケールを提供している場合がありますが、ユーザーは、自分のスキンとロケールでそれを置き換えることができます。

Mozilla のクロムディレクトリーを見てみましょう。インストールされた個々のパッケージのための多数の JAR ファイルがあるのが分かるはずです。例えば、ファイル messenger.jar は、メッセンジャー (Messenger) コンポーネントのユーザーインターフェースを記述しています。ファイル modern.jar は、モダン (Modern) スキンを記述しています。現在のところ、個々の JAR ファイルのためのディレクトリーがあるのが分かると思います。予定では、JAR ファイルへの変換が完了すると、それらのディレクトリーはなくなるはずです。ディレクトリーは、関連する JAR ファイルの圧縮されていないバージョンにすぎません。

その他に、クロムディレクトリーには、rdf 拡張子をもつたくさんのファイルがあるのが分かるでしょう。これらのファイルは、インストールされたパッケージ、スキン、ロケールのリストを記述しています。

パッケージの型を区別する

JAR ファイルの名前は、ファイルがもつ内容を記述しますが、その内容を見ることによっても、確かめることができます。(ZIP ユーティリティーを使えば、JAR ファイルを見ることができます。) 単純な messenger パッケージを例にすることにしましょう。

ファイル messenger.jar を抽出すると、次のようなディレクトリー構造があるのが分かります。

content
   messenger
      contents.rdf
      messenger.xul
      -- 他のメール XUL と JS ファイルがここに来る --
      addressbook
         -- アドレスブックファイルがここに来る --
      messagecompose
         -- メッセージコンポジションファイルがここに来る --
.
.
.

これは、トップレベルディレクトリーが 'content' と呼ばれているので、簡単に、内容パッケージとして認識できます。スキンの場合は、このディレクトリーは 'skin'、ロケールの場合は、'locale' と呼ばれます。実際には、これは必須ではありませんが、パッケージをより明確にするため、この慣習に従うべきです。パッケージによっては、内容、スキン、ロケールが複数ある場合があります。こうした場合には、個々のタイプごとにディレクトリーがあることになります。

内容/メッセンジャーディレクトリーには、xul と js 拡張子をもつファイルがたくさんあります。XUL ファイルは、xul 拡張子をもつファイルです。js 拡張子をもつファイルは、JavaScript ファイルで、ウィンドウの機能を処理するスクリプトが入っています。多くの XUL ファイルには、それと関連するスクリプトファイルがあります。

上のリストには、2 つのファイルを示しました。もちろん、他にもファイルはありますが、簡単にするため、それらは示しませんでした。ファイル messenger.xul は、メールメッセージのリストを表示するメインのメッセンジャーウィンドウを記述する XUL ファイルです。内容パッケージのためのメインウィンドウは、xul 拡張子をもつパッケージ名であるべきです。他の XUL ファイルの中には、messenger.xul がインクルードするものもあれば、別のウィンドウを記述するものもあります。例えば、ファイル subscribe.xul は、ニュースグループに購読申し込みをするためのダイアログのために使われます。

ファイル contents.rdf は、どのパッケージにもあり、パッケージ内の個々の内容、スキン、ロケールのためのものです。このファイルについては、後で詳細に説明しますが、簡単に言えば、パッケージの内容を記述するために使われるものです。

メッセンジャーコンポーネントの追加的なセクションを記述する 2 つのサブディレクトリー addressbook と messagecompose があります。これらは、区別するという目的のためにのみ、別のディレクトリーに置かれています。

スキン (Skin)

modern.jar と classic.jar ファイルは、Mozilla が提供するスキンを記述します。その構造は、内容パッケージに似ています。例えば、modern.jar

skin
   modern
      navigator
         contents.rdf
         -- ナビゲータースキンファイルがここに来る --
      messenger
         contents.rdf
         -- メッセンジャースキンファイルがここに来る --
      editor
         contents.rdf
         -- エディタースキンファイルがここに来る --
      communicator
         contents.rdf
         -- コニュミケータースキンファイルがここに来る --
      global
         contents.rdf
         -- グローバルスキンファイルがここに来る --
.
.
.

ここには、ディレクトリーが 5 つあり、その各々は、スキンが適用される個々のパッケージのためにあります。例えば、エディターディレクトリーには、エディターコンポーネントのためのスキンを記述します。グローバルディレクトリーには、すべてのパッケージに共通するもののためのスキンファイルを入れます。通常は、このディレクトリーを使うことになるでしょう。

contents.rdf ファイルが 5 つあることに気が付いたかもしれません。これは、スキンが個々のコンポーネントに別々に適用されるためです。メッセンジャーのように、ナビゲーターに別のスキンをもつこともできますが、外見のほとんどはグローバル部分によって決められるため、あまり違いは分からないでしょう。これらは別々のファイルであるため、簡単に、新しいコンポーネントを追加し、既にあるコンポーネントを取り除くことができます。

スキンは、インターフェースの外見を定義するのに使われる CSS ファイルと多くのイメージからなります。イメージは、ツールバーのボタンに使われます。ファイル messenger.css は、messenger.xul が使い、メールのツールバーとメッセージリストの外見を定義するスタイルを含みます。

CSS ファイルを変更することで、機能を変更することなく、ウィンドウの外見を調整することができます。このようにして、スキンを作ることができます。

ロケール (Locale)

アメリカ英語の場合、ファイル en-US.jar に、個々のコンポーネントのための言語情報を記述します。スキンと同様に、個々の言語には、パッケージがその言語で使うテキストを指定するファイルが含まれます。

これまでと同様に、ロケールが提供するテキストのためのパッケージをリストした contents.rdf ファイルが提供されます。サブディレクトリーには、個々のパッケージのためのテキストがあります。

ローカラズされたテキストは、2 種類のファイル、つまり、DTD ファイルとプロパティーファイルに保存されます。DTD ファイルは、dtd 拡張子をもち、ウィンドウで使われる個々のテキスト文字列のためのエンティティー宣言を含みます。例えば、ファイル messenger.dtd には、個々のメニューコマンドのためのエンティティー宣言があります。また、個々のコマンドのためのキーボードショートカットも定義されています。これは、個々の言語で違っている場合があるからです。DTD ファイルは、XUL ファイルが使用します。そのため、一般に、XUL ファイルごとに、一つの DTD ファイルがあることになります。

プロパティーファイルも同様ですが、スクリプトファイルが使う点が違います。ファイル messenger.properties には、こうした文字列が幾つか含まれます。

この構造は、Mozilla やコンポーネントを異なった言語に変えるためには、その言語のための新しいロケールを追加しさえすればよいということです。

その他のパッケージ

Mozilla のパッケージの多くは、コミュニケーターパッケージのサブパッケージです。例えば、コミュニケーターパッケージの中に、ブックマークウィンドウ、ヒストリービューアー、プレファレンスダイアログがあるのが分かるはずです。それらは多くのパッケージで一般的であるため、ここに置かれています。これらについて特殊なものは何もありません。

特殊なパッケージに、ツールキット (あるいは、グローバル) と呼ばれるものがあります。グローバルディレクトリーは、以前、スキンのところで見ました。toolkit.jar は、それに対応する内容を含みます。そこには、幾つかのグローバルダイアログと定義があります。そこでは、また、テキストボックスやボタンなどの様々なウィジェットのデフォルトの外見や機能が定義されています。スキンディレクトリーのグローバル部に置かれたファイル golbal.css には、XUL インターフェース要素のすべてのためのデフォルトの外見を含まれます。スキンを変更する場合の多くには、このファイルの変更が必要です。

パッケージを追加する

上で説明した構造は、デフォルトのパッケージ、スキン、ロケールが保存される場所に関するものです。しかし、それらは、必ずそこに置かなければならないという訳ではありません。別のパッケージをインストールしたら、それは、どこに置かれるかもしれません。クロムディレクトリーの RDF ファイルは、インストールしたパッケージ、スキン、ロケールとその位置のリストを保存しています。

ユーザーは、同じパッケージを変更する多数のスキンとロケールをインストールしているかもしれません。パッケージごとに一つのスキンとロケールだけが、ある時点で、有効です。RDF ファイルも、どのスキンとロケールが有効かを指定できます。


(進む) 次のセクションでは、クロム構造内のファイルの参照方法を見ることにしましょう。

XUL チュートリアル - 1.2 - XUL ファイルを追加する
戻る 内容 リファレンス 進む

[PR]在宅副業で驚きの高収入を獲得:バイクを買うためのお金を稼ごう