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

XUL チュートリアル - 8.5 - ドラッグとドロップ
戻る 内容 リファレンス 進む

XUL チュートリアル - ドラッグとドロップ

このセクションでは、ドラッグでき、他のオブジェクトにドロップできるオブジェクトの実装方法を説明します。

ドラッグとドロップのインターフェース

ユーザーインターフェースの多くでは、インターフェース内にある特定のオブジェクトをドラッグすることができます。例えば、ファイルを他のディレクトリーにドラッグしたり、アイコンを別のウィンドウにドラッグすることによって、それが参照する文書を開くことができます。Mozilla と XUL は、ユーザーがオブジェクトをドラッグしようとする場合の処理ができる多数のイベントを提供しています。

ユーザーは、マウスボタンを押したままマウスを動かすことにより、ドラッグを開始することができます。ドラッグは、ユーザーがマウスボタンを放すと終わります。イベントハンドラーは、ドラッグの開始と終了、その間の様々な時点で呼び出されます。

Mozilla は、ドラッグセッションを使ってドラッグを実装しています。ユーザーが、ドラッグできるものをドラッグすると、ドラッグセッションが始まります。ドラッグセッションは、マウスポインターの更新やどこでオブジェクトがドロップされるかを処理します。ドラッグできないものをドラッグしようとしても、ドラッグセッションは始まりません。ユーザーにはマウスが一つしかないのが一般的なので、一度に一つのドラッグセッションしか使用されることはありません。

ドラッグセッションは、Mozilla 自身の中から、あるいは他のアプリケーションから作ることができることに注意して下さい。Mozilla は、必要に応じて、ドラッグされるデータの翻訳を行ないます。

以下のリストは、呼び出すことのできるイベントハンドラーの説明です。これらはどの要素にも置くことができます。必要なのは、イベントが起こったときに何かする必要のある要素に値を置くだけです。

ドラッグとドロップイベントを処理する方法は 2 つあります。最初の方法は、ドラッグとドロップの XPCOM インターフェースを直接使用するものです。2 番目の方法は、これらのイベントの幾つかを処理してくれる JavaScript ラッパーオブジェクトを使うもです。このラッパーは、widget-toolkit (あるいは global) パッケージに含まれています。

XPCOM ドラッグとドロップ

2 つのインターフェースがドラッグとドロップをサポートするために使われます。最初のものは、ドラッグサービス nsIDragService で、2 番目のものは nsIDragSession で、これはセッションごとに使われます。

nsIDragService の役割は、ドラッグが始まったときドラッグセッションを作り、ドラッグが終わったときドラッグセッションを削除することです。ドラッグが始まると、ondraggesture イベントハンドラー内で、関数 'invokeDragSession' を呼び出します。この関数が呼ばれると、ドラッグが始まったことになります。

関数 invokeDragSession は、以下で説明するように、パラメータを 4 つ取ります。

invokeDragSession(element,transferableArray,region,actions);

インターフェース nsIDragService は、関数 'getCurrentSession' も提供しています。これは、ドラッグの状態を取得したり変更するために、ドラッグイベントハンドラー内から呼び出すことができます。関数は、nsIDragSession を実装したオブジェクトを返します。

インターフェース nsIDragSession は、現在起こっているドラッグのプロパティーの取得と設定に使用されます。以下のプロパティーとメソッドが使えます。


(進む) 次のセクションでは、ドラッグとドロップのための JavaScript ラッパーの使い方を見ることにしましょう。

XUL チュートリアル - 8.5 - ドラッグとドロップ
戻る 内容 リファレンス 進む

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