Preferences System:New attributes
出典: MDC
<prefwindow> の中に置かれたウィジェットは、(標準の属性に加えて)以下の属性を持つことができます。
[編集] preference
リンクされた <preference> 要素のidを指定します。この設定の value 属性とこのウィジェットの状態は常に同期されます。
例えば以下の例は、設定 extensions.example.mypref の値に基づいてtextboxの value を自動的に初期化します。またその逆に、ユーザがtextboxの値を変更した時、<preference> 要素の値は更新され、必要に応じて設定システムに書き込まれます。
<preference id="my_pref" name="extensions.example.mypref" type="unichar"/> <textbox preference="my_pref"/>
[編集] preference-editable
既定の状態において、 <preference> 要素は、checkbox, colorpicker, radiogroup, textbox, listitem, listbox, そしてmenulistといったいくつかの標準的なウィジェットの値を自動的に変更します。これ以外のローカル名を持つ要素、例えばXBLによって定義されたウィジェットなどの値を更新したい場合は、preference-editable="true"属性をその要素に設定する必要があります。
あなたのウィジェットが <preference> の値を変更するために、あなたはそのウィジェットの値が変更された後にchange, command, または inputイベントが発行されたかどうかを確認する必要があります。
[編集] onsyncfrompreference および onsynctopreference
あなたはしばしば、与えられた設定の型に簡単には割り当てられない型のユーザインターフェイス要素を持つことがあるでしょう。例えば、チェックされた時に設定に保存される値を整数値の3、チェックされていない時の値を2とするcheckboxを使うことがあるでしょう。このユーザインターフェイス要素を初期化するためには、どちらの値もcheckbox要素に対しては無意味なので、あなたは既定の初期化処理に期待をかけることはできません。あなたは、設定の値をユーザインターフェイス要素の初期値に変換したり、ユーザインターフェイス要素の値を設定ファイルに書き込める何らかの値に変換したりする、関数を書く必要があります。これが、 onsyncfrompreference と onsynctopreference を使う理由です。
onsyncfrompreference は、要素が設定から初期化される時に呼ばれます。もしあなたがこのイベントに対する実装を提供する場合、ユーザインターフェイス要素を初期化するための値か、または、設定システムがユーザインターフェイス要素を既定の値で初期化する(言い替えれば、設定の値に基づいて初期化することを試みる)ことを示すための値 undefined の、いずれかを返すあなたの実装が、初期化処理の間に呼び出されるでしょう。以下のように、あなたは上の例のcheckboxを記述することができます。:
<checkbox preference="foo.bar" onsyncfrompreference="return onsyncfrompreference();"/>
.. スクリプト:
function onsyncfrompreference()
{
var preference = document.getElementById("foo.bar");
return preference.value == 3;
// もしfoo.barが真偽値であり、チェックボックスを初期化するのにその値を使いたければ、
// この時、他の何らかの初期化動作を実行したければ、
// 私たちはまだこのメソッドの続きを実装することができるでしょう。
}
onsynctopreference は、現在の状態を指定された設定に書き込める形の値に変換するように、設定システムがそれぞれの要素に要求する時に、呼ばれます。あなたは、特別な値か、値を取得するのに標準的な方法を使うよう設定システムに対して通知するために undefined を返すことができます。上の例でいえば:
<checkbox preference="foo.bar" onsynctopreference="return onsynctopreference();"/>
.. スクリプト:
function onsynctopreference()
{
var checkbox = document.getElementById("checkbox");
return checkbox.checked ? 3 : 2;
}
// もしfoo.barが真偽値で、その値を設定に書き込むために使いたいなら、
// この時、他の何らかの初期化動作を実行したければ、
// 私たちはまだこのメソッドの続きを実装することができるでしょう。
設定システムの資料:
- 簡単な紹介: Getting Started | サンプル | トラブルシューティング
- リファレンス: <prefwindow> | <prefpane> | <preferences> | <preference> | 新しい属性