目次 | 前の項目 | 次の項目 | ドラッグ&ドロップ |
ドラッグ&ドロップは、多くのグラフィカルユーザインタフェース (GUI) システムにみられる直感的な操作方法で、GUI 内の表示要素に論理的に関連付けられた 2 つの構成要素間で情報を転送するための機構を提供します。 通常、ドラッグ&ドロップは、人間であるユーザが適切な入力デバイスを使用して行う物理的なジェスチャーによって生じます。 ドラッグ&ドロップは、GUI の表示要素上で行う操作により行われるデータ転送の結果をユーザに継続的にフィードバックする機構と、続いて行われるデータのネゴシエーションと転送を容易にする機能を提供します。一般的なドラッグ&ドロップ操作は、次のようにいくつかの状態に分けることができます。
- Transferable (転送可能) データのドラッグ&ドロップを開始するために、GUI の表示要素 (Component) に関連付けられた DragSource (ドラッグソース) が作成される
- GUI の表示要素 (Component) に関連付けられ、Transferable データ型を消費する可能性のある 1 つ以上の DropTarget (ドロップターゲット) が作成または削除される
- Component に対してユーザが開始したドラッグジェスチャーの追跡および識別を行うために、DragGestureRecognizer が DragSource から取得され、Component に関連付けられる
- 人間であるユーザは、Component に対してドラッグジェスチャーを行う。登録された DragGestureRecognizer がそれを検出し、DragGestureListener に通知する
注: このドキュメントでは、ドラッグ&ドロップ操作の開始要因が、人間であるユーザによる物理的なジェスチャーであることを繰り返し言及していますが、これには、DragSource が適切に実装されている場合の、プログラムによるドラッグ&ドロップ操作も含まれています。
- DragGestureListener からの指示によって、GUI Cursor (カーソル) をアニメーション化したり、操作の対象となるアイテムの Image (画像) を描画するなどして、DragSource がユーザに代わってドラッグ&ドロップ操作を開始する
- ユーザのジェスチャーが、関連する DropTarget を持つ GUI の Component を移動するとき、DragSource は、Drag Over フィードバック効果を提供するために通知を受け、DropTarget は、サポートされる操作および関係するデータ型に基づいて Drag Under フィードバック効果を提供するために通知を受ける
ジェスチャー自体は、論理カーソルを GUI 階層を越えて動かし、GUI Component のジオメトリと交差します。 この結果、論理 Drag カーソルは Component および関連する DropTarget 内に入り、それらを横切ってから出て行きます。DragSource オブジェクトは、通常の場合は、論理カーソルに関連付けられた GUI Cursor をアニメーション化することによって、ユーザに「Drag Over」フィードバックを明示します。
DropTarget オブジェクトは、通常の場合は、GUI Cursor の下にある関連付けられた GUI Component にアニメーションを描画することによって、ユーザに Drag Under フィードバックを明示します。
- フィードバック効果の決定、およびデータ転送が行われる場合はその操作が最終的に成功したかどうかが、次のようにパラメータ化される
- ユーザが選択し、DragSource および DropTarget でサポートされる転送「操作」(コピー、移動または参照 (リンク)) ごと
- DragSource によって提供されるデータ型のセットと DropTarget で認識できるデータ型セットとの共通部分ごと
- ユーザがドラッグ操作を終了すると、通常はドロップが成功するが、このとき DragSource と DropTarget の両方に、Transferable オブジェクトを介して DragSource に関連付けられた情報を含む通知が渡され、型ネゴシエーションおよび結果情報の転送が行われる
このドキュメントの以降の部分では、このモデルをサポートするために提案された API の変更の詳細について説明します。