XUL アプリケーションは、しばしば、ダイアログからなります。このセクションでは、ダイアログの作り方を説明します。
open 関数はダイアログを開くのに使われます。関連する関数は openDialog です。この関数には、大きな違いが幾つかあります。これは、ウィンドウではなくダイアログを表示します。これは、ユーザーに何かをするよう求めるものです。それがユーザーに対して動作し表示される方法には微妙な違いがあるかもしれません。こうした違いは、プラットフォームによって異なります。
更に、openDialog 関数は、最初の 3 つ以外に別の引数を取ることができます。これらの引数は、新しいダイアログに渡され、新しいウィンドウの arguments プロパティーにある配列に保存されます。必要に応じて、幾つでも引数を渡すことができます。これは、ダイアログのフィールドにデフォルト値を渡す便利な方法です。
var somefile=document.getElementById('enterfile').value;
window.openDialog("chrome://findfile/content/showdetails.xul","showmore",
"chrome",somefile);
|
この例では、ダイアログ 'showdetails.xul' が表示されます。これには、'somefile' という引数が一つ渡されています。これは、enterfile という id をもつ要素の値から取られたものです。ダイアログで使われているスクリプトでは、ウィンドウの arguments プロパティーを使って引数を参照することができます。例えば、次のようにします。
var fl=window.arguments[0];
document.getElementById('thefile').value=fl;
|
これは、新しいウィンドウに値を渡す効率的な方法です。開いたウィンドウから元のウィンドウに値を返すのには 2 つの方法があります。まず、このウィンドウを開いたのがどのウィンドウなのかを保持する window.opener プロパティーが使えます。第 2 に、引数として関数かオブジェクトを渡し、その関数を呼び出すか開いているダイアログのオブジェクトの変更ができます。
Mozilla には、ダイアログを作るとき、たいていの場合、インクルードするオーバーレイがあります。これは、ダイアログの下部に OK や Cancel など最大で 4 つまでのボタンを作るのに便利な機能を提供します。個々のボタンのために XUL ファイルをインクルードする必要はありませんが、ユーザーがボタンを押した場合の処理をする関数を作る必要があります。このメカニズムが必要なのは、プラットフォームによってボタンが表示される順序が異なるためです。
例 12.2.1
<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin/global.css" type="text/css"?>
<?xul-overlay href="chrome://global/content/dialogOverlay.xul"?>
<window id="donothing" title="Do Nothing"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
onload="doSetOKCancel(doOK,doCancel);">
<script>
function doOK()
{
alert("You pressed OK!");
return true;
}
function doCancel()
{
alert("You pressed Cancel!");
return true;
}
</script>
<box orient="vertical">
<description value="Select a button"/>
<box id="okCancelButtons"/>
</box>
</window>
|
オーバーレイ dialogOverlay.xul には、ボタンセットとそれを処理する関数が幾つかあります。okCancelButtons という id をもつボックスがあり、そこにボタンがあります。これは、上のコードでは、同じ id をもつボックス上に置かれています。
関数 doSetOKCancel は、onload ハンドラーから呼ばれています。この関数は、オーバーレイが提供するもので、OK や Cancel ボタンが押されたときに呼び出される関数を設定するのに使用されています。この例を試してみると、OK ボタンを押すと doOK 関数が呼び出され、Cancel ボタンを押すと doCancel 関数が呼び出されることが分かるでしょう。
2 つの関数 doOK と doCancel は真を返します。これは、ダイアログを閉じることを表します。偽を返した場合、ダイアログは開いたままです。これは、ダイアログのフィールドに妥当ではない値が入力された場合に使えるでしょう。
(進む) 次は、ファイルダイアログの開き方を見ることにしましょう。
例: 12.2.1