このセクションでは、XUL ウィンドウの状態を保存する方法を説明します。
大きなアプリケーションを作る場合、しばしば、セッション間でウィンドウの状態が保存できたらよいと思うでしょう。例えば、ウィンドウは、ユーザーがアプリケーションを終了した後でも、どのツールバーが折り畳まれているのか記憶しておくべきです。
一つの可能性は、何を保存したいのかに関する情報を集め、次いで、それをファイルに保存するスクリプトを書くことでしょう。しかし、アプリケーションすべてでこれを行なうのは苦痛です。便利なことに、XUL には、ウィンドウの状態を保存するメカニズムがあります。
そうした情報は、収集され、ユーザーの他の設定情報と同じディレクトリーの RDF ファイルに保存されます。そこには、個々のウィンドウに関する状態情報が保持されます。この方法には、Mozilla のユーザープロファイルと協働できる利点があります。その結果、個々のユーザーごとに設定が可能となります。
XUL では、どの要素の状態も保存できます。多くの場合、ツールバーの状態やウィンドウの位置、あるパネルが表示されているかどうかを保存したいのではないでしょうか。
状態を保存できるようにするには、保存したい値をもつ要素に persist 属性を追加するだけです。persist 属性は、保存したい要素の属性を、空白で区切ったリストで指定します。
例えば、ウィンドウの大きさを保存するには、次のようにすればよいでしょう。
<window width="200" height="300" persist="width height" . . . |
window 要素の 2 つの属性である width と height が保存されます。別の属性も、空白で区切って persist に加えることによって、保存することができます。
persist 属性はどの要素にも加えることができ、どの属性も保存できます。スクリプトを使って属性を操作している場合、通常あり得ない値を使う場合があるかもしれません。
persist 属性を「ファイル検索」ダイアログの幾つかの要素に追加しましょう。ウィンドウの位置を保存したいとします。このためには、ウィンドウを変更する必要があります。
<window id="findfile-window" title="Find Files" persist="screenX screenY width height" xmlns:html="http://www.w3.org/1999/xhtml" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> |
これによって、ウィンドウの x 座標と y 座標、ウィンドウの幅と高さが保存されます。これは、スプリッターの折り畳まれた状態を保存するよう拡張できます。実際には、現在のタブの状態を保存しても意味はないでしょう。
(進む) 次は、XUL 要素にイベントハンドラーを追加する方法を見ることにしましょう。