Solaris 共通デスクトップ環境 プログラマーズ・ガイド

ドラッグ & ドロップ・ユーザ・モデル

この節では、デスクトップの他の部分に矛盾せずに、ユーザの期待に反しないアプリケーションが設計できるように、ドラッグ & ドロップの基本となるユーザ・モデルを説明します。

ドラッグ & ドロップの詳細と、ドラッグ & ドロップ要素の外観に関するガイドラインについては、『共通デスクトップ環境 スタイル・ガイド』を参照してください。

ドラッグ & ドロップをデスクトップ上のすべてのアプリケーションで使用できれば、システムはユーザにとってより予測可能なものとなり、したがって、より使いやすく覚えやすくなります。ユーザは、すでに知っている技術を使うことによって、自分が学んだことをより多くのアプリケーションに応用できます。また、多くのユーザはメニューを使うよりもドラッグ & ドロップを好みます。

この章では、ユーザが何かをドロップできる場所としてドロップ領域という用語を使用します。ドロップ領域は、通常、コントロールまたはグラフィック・アイコンによって表示されます。たとえば、ごみ箱アイコンや入力フィールドのグラフィックです。ドロップ領域を表す矩形の領域には、ドロップ・ターゲットという用語を使用します。

ドラッグ & ドロップ機能

ドラッグ & ドロップ機能があれば、ユーザはアイコンとして表されたオブジェクトを選択し、操作できます。


注 -

ドラッグ & ドロップは、アプリケーション内でサポートされている他のユーザ・インタフェース・コントロールを通して使用できる機能のアクセラレータです。ただし、すべてのユーザがドラッグ & ドロップを利用できるわけではありません。基本的な操作は、ドラッグ & ドロップ以外にもサポート方法を用意してください。アプリケーションがドラッグ & ドロップを通してサポートする基本的な機能は、メニュー、ボタン、またはダイアログ・ボックスによってもサポートされなければなりません。


ドラッグ・アイコン

ユーザがドラッグ & ドロップを使用してアイコンを選択し、操作するときには、ドラッグされる項目を表すグラフィック・アイコンは、選択からドラッグ & ドロップの終了まで一貫していることをユーザは期待します。ユーザがファイル・マネージャのメッセージ・アイコンを選択してドラッグを開始した場合には、ドラッグ・アイコンの元の部分は、そのメッセージ・アイコンによって表されます。このような一貫性を与えることで、ドラッグ & ドロップはユーザにとって予測可能なものになります。転送先アプリケーションがアイコンを使用する場合、ほとんどのアイコンは、選択されてドラッグ & ドロップされたアイコンと同じでなければなりません。ただし、この動作は、すべてのアプリケーションで常に適切であるとは限りません。テキストのドラッグは例外です。選択されたテキストをドラッグする代わりに、テキスト・ドラッグ・アイコンが使用されます。

転送元と転送先の両方のアプリケーションが、ドラッグ・アイコンの外観を指定します。アプリケーションが一貫した適切なドラッグ・アイコンを持つようにするのは、開発者の責任です。ドラッグ & ドロップ・ライブラリはデフォルトのアイコンを提供しますが、各アプリケーションのために開発者が独自のアイコンを指定するとよいでしょう。アイコンとそのアイコンによって表されるデータ型を関連付けるために、データ型データベースを使用しなければならない場合があります。詳細は、第 9 章「データ型データベースのアクセス」を参照してください。

ユーザがアイコンを選択せずにドラッグを開始する場合は、関連するドラッグ・アイコンを提供しなければなりません。たとえば、アポイント・エディタでは、ユーザはスクロール・リストからアポイントを選択できますが、アイコンが表示される場合と表示されない場合があります。ソース・インジケータとしてアポイント・アイコンを使用しなければなりません。転送先アプリケーション (たとえば、ファイル・マネージャ) は、同じアポイント・アイコンを表示しなければなりません。

ドラッグ・アイコンの各部

ドラッグ・アイコンがドロップ領域の上に来ると、ドラッグオーバ・フィードバックを提供するために外観が変化します。

ドラッグ・アイコンには次の 3 つの部分があり、その組み合わせによってドラッグオーバ・フィードバックを提供します。

状態インジケータは、有効または無効ドロップ領域インジケータと組み合わされて、位置付けのために使用されるポインタです。有効状態インジケータは、矢印ポインタです。このポインタにはホット・スポットがあるので、ユーザは予測可能な方法で位置付けることができます。無効状態インジケータは、円と斜線の組み合わせであり、ユーザが無効なドロップ領域の上にカーソルを置いたときに表示されます。

操作インジケータは、ドラッグ時に行われる操作 (移動、コピー、またはリンク) に関するフィードバックをユーザに与えます。ほとんどのドラッグは移動なので、より頻度が少ないコピーまたはリンク操作を実行するときには、追加のフィードバックが与えられます。


注 -

操作フィードバックは、状態フィードバックとソース・フィードバックの手前に表示されます。この動作は、Motif のドラッグ & ドロップ動作と一致しています。


ユーザは、表 5-1 に示されている特定のキーを押しながらドラッグすることによって、ドラッグ操作 (移動、コピー、またはリンク) を選択できます。

表 5-1 ドラッグ操作を変更するためのキー

キー 

操作 

[Shift] 

移動 

[Control] 

コピー 

[Control]+[Shift] 

リンク 

ファイル・マネージャの読み取り専用ウィンドウの場合のように、転送元アプリケーションがコピーを強制することもあります。ユーザが操作を選択したときに、ドロップ領域がその操作と一致しなければドロップできません。一致しない場合には、ドロップ領域は無効です。つまり、ユーザが [Control] キーを押してコピーを選択して、ドラッグ・アイコンをごみ箱アイコンへドラッグした場合には、ごみ箱へのコピーは許可されません。このため、ドラッグ・アイコンはごみ箱アイコンを無効なドロップ領域として表示しなければならず、ドロップは失敗します。

ソース・インジケータは、選択 (すなわち、ドラッグされている項目) を表します。ソース・インジケータは、選択が 1 つの項目または複数の項目を表すか、あるいは選択が表す項目の種類によって変化します。

ウィンドウ内部からのドラッグ

アプリケーションは、ダイアログ・ボックスまたはウィンドウ内部からのドラッグを可能にする必要がある場合があります。カレンダのアポイントエディタには、アポイントのスクロール・リストとアポイントを編集するための入力領域があります。ユーザは、スクロール・リストからアポイントをドラッグできますが、アポイント入力領域からもドラッグできなければなりません。ユーザが入力領域からドラッグできるのは、アポイントがまだカレンダに挿入されていないときです (たとえば、申し込まれたミーティングの時間を入力したが、カレンダに挿入していないときなどです)。

ドラッグできる項目には、アイコン・グラフィックを関連付ける必要があります。ダイアログ・ボックスのグラフィック・アイコンは、ドラッグされる情報に隣接する適切な領域に置きます。ダイアログ・ボックスまたはウィンドウの右上隅が、望ましいデフォルトの位置です。このアイコンは何かをドラッグできることをユーザに知らせます。また、使用するグラフィックは、ドラッグ・アイコンに使用するグラフィックと同じにして、一貫性を持たせます。アイコンは 32 * 32 ピクセルでなければならず、ファイル・マネージャが使用するアイコンと同様のラベルがなければなりません。詳細は、『共通デスクトップ環境 スタイル・ガイド』の第 3 章「ドラッグ & ドロップ」を参照してください。


注 -

ドラッグが可能なのは、選択できるコンポーネントまたは項目を持つヒューマン・インタフェース要素からだけです。ボタンまたはメニューのラベルなど、静的なラベルからはドラッグできません。


視覚的なフィードバック

この節では、ドロップ領域フィードバックとドラッグ & ドロップの遷移効果を説明します。

ドロップ領域フィードバック

デフォルトのドロップ領域フィードバックをドラッグアンダといい、領域を囲む実線、ドロップ領域を囲む斜角の付いた浮き出した表面かくぼんだ表面、またはドロップ領域の上に描かれたピックスマップで表されます。

遷移効果

遷移効果は、ドロップが成功したか失敗したかをユーザに知らせます。メルトとスナップバックという 2 つの遷移効果があります。

メルトは、ユーザがドラッグ・アイコンを有効なドロップ領域にドロップしたときに発生します。ユーザがドラッグ・アイコンを有効なドロップ領域にドロップすると、ドラッグ・アイコンは、ドロップ領域に溶けてなくなります。ドラッグ・アイコンは、転送先アプリケーションにふさわしいアイコンに置き換えられます。フロントパネルのプリンタは、メルト効果以外には何も示しません。開いているファイル・マネージャ・ウィンドウは、適切なアイコンを表示することがあります。

アイコンがドロップされても、メルト効果が直ちに起こらないこともあります。転送が完了するまで、アイコンが位置していた場所に表示されています。転送中は、転送先のカーソルをビジー状態に設定してください。転送が完了するまで、ユーザはアイコンを動かしたり、選択したりできません。ビジー・カーソルによって、転送中であることをユーザに知らせます。

スナップバックは、ドロップが失敗したときに発生します。ドロップの失敗には、2 通りあります。ユーザが無効なドロップ領域にドラッグ・アイコンをドロップした場合には、ドラッグ・アイコンは転送元アプリケーションへ戻ります (スナップバックします)。ドロップが発生したら、転送元と転送先のアプリケーションはデータを転送しなければなりません。データ転送が失敗した場合には、ドラッグ・アイコンはスナップバックし、転送先アプリケーションは失敗したことをユーザに通知し、ドロップが失敗した理由を示さなければなりません。

ドラッグ & ドロップの転送元 (ソース)

ドラッグ & ドロップの転送元の動作が理解できるように、表 5-2 に、選択されたテキスト、ファイル、およびバッファのドラッグ・ソースにできる主なデスクトップ・コンポーネントを示します。

表 5-2 ドラッグ・ソースにできるデスクトップ・コンポーネント

ドラッグ・ソース 

選択されたテキスト 

ファイル 

バッファ 

テキスト・フィールド (Motif)* 

選択されたテキスト 

N/A 

N/A 

テキスト・エディタ: メイン・ウィンドウ 

選択されたテキスト 

N/A 

N/A 

端末エミュレータ: メイン・ウィンドウ 

選択されたテキスト 

N/A 

N/A 

ファイル・マネージャ: フォルダ・ウィンドウ 

N/A 

ファイル 

N/A 

ファイル・マネージャ: ごみ箱ウィンドウ 

N/A 

ファイル 

N/A 

メール: メッセージ・リスト 

N/A 

N/A 

メールメッセージ形式のメッセージ 

メール: アタッチメント・リスト 

N/A 

N/A 

アタッチメント形式のアタッチメント 

カレンダ: アポイントエディタ 

N/A 

N/A 

アポイント形式のアポイント 

* Motif テキスト・フィールドの転送元が選択されたアプリケーションは、テキストをドラッグします。

ドラッグ & ドロップの転送先

次のデスクトップ・コンポーネントは、ドロップ先になります。

各コンポーネントは、選択されたテキスト、ファイル、およびバッファのドロップを受け入れます。テキスト・ドロップの転送先のほとんどは、Motif ライブラリによって自動的に提供されます。ファイルまたはバッファ・データのドロップ先がドロップを受け入れるためには、プログラムを追加しなければなりません。

ユーザがファイルからデータをドロップして、そのファイルが何らかの方法で変更されたときには、ファイルの元の保持者へ変更を書き戻すことができます。この動作をセーブバックといいます。ただし、データがバッファからドロップされたときには、データは元のファイルに関する情報を持ちません。つまり、データの元の保持者がないので、バッファからのデータに加えられた変更を書き戻すことはできません。この動作をセーブバックなしといいます。

たとえば、メール・プログラムは、ドラッグ & ドロップを使用して、メール・アタッチメントをエディタにエクスポートできます。アタッチメントがバッファとしてエクスポートされた (セーブバックがない) 場合、エディタでメール・プログラム内の元のアタッチメントを変更する手段はありません。したがって、エディタは、アタッチメントの変更済みの版を新しいファイルに保存するしかありません。

メール・アタッチメントは、すでに別のファイルではない (メール・フォルダ・ファイルに埋め込まれている) ので、バッファとしてエクスポートされるだけで、他のエディタによって保存できません。

アタッチメントがファイルとしてエクスポートされた (セーブバックがある) 場合には、エディタは変更済みのものを同じファイルに保存します。

表 5-3 は、テキスト・エディタ、アイコン・エディタ、カレンダ、メール・プログラムなどのエディタ型コンポーネントへ、選択されたテキスト、ファイル、およびバッファをドロップする場合を示します。

表 5-3 エディタのドロップ先

ドロップ先 

選択されたテキスト 

ファイル 

バッファ 

テキスト・エディタ: メイン・ウィンドウ 

挿入 

挿入 

挿入 

端末エミュレータ: メイン・ウィンドウ 

挿入 

N/A 

N/A 

アイコン・エディタ: メイン・ウィンドウ 

N/A 

読み込み (ファイルがアイコン形式の場合)。セーブバックあり 

読み専用で読み込み (データがアイコン形式の場合)。セーブバックなし 

メール・プログラム: メッセージ・リスト 

N/A 

追加 (ファイルがメール形式の場合) 

追加 (データがメール形式の場合) 

メール・プログラム: メール作成 

挿入 

挿入 

挿入 

メール・プログラム: アタッチメント・リスト 

挿入 

挿入 

挿入 

カレンダ: メイン・ウィンドウ 

N/A 

アポイントをスケジュール (ファイルがアポイント形式の場合) 

アポイントをスケジュール (データがアポイント形式の場合) 

カレンダ: アポイントエディタ 

テキスト・フィールドへ挿入 

アポイント・フィールドに記入 (ファイルがアポイント形式の場合) 

アポイント・フィールドに記入 (データがアポイント形式の場合) 

アプリケーション・ビルダ 

N/A 

読み込み (ファイルが BIX または BIL 形式の場合)。セーブバックあり 

読み専用で読み込み (データが BIP 形式の場合)。セーブバックなし 

表 5-4 は、ファイル・マネージャ内のファイルとフォルダ・アイコンへ、選択されたテキスト、ファイル、およびバッファをドロップする場合を示します。

表 5-4 ファイル・マネージャのドロップ先

ドロップ先 

選択されたテキスト 

ファイル 

バッファ 

ファイル・アイコン 

ターゲット・ファイルとドロップされたテキストに対してドロップ・アクションを呼び出す (ファイルがテキストのドロップを受け入れ、ドロップされたテキストが適切な形式の場合)。セーブバックなし/コピーなし 

ターゲット・ファイルとドロップされたファイルに対してドロップ・アクションを呼び出す (ファイルがファイルのドロップを受け入れ、ドロップされたファイルが適切な形式の場合)。セーブバックあり 

ターゲット・ファイルとドロップされたデータに対してドロップ・アクションを呼び出す (ファイルがデータのドロップを受け入れ、ドロップされたデータが適切な形式の場合)。セーブバックなし/コピーなし 

フォルダ・アイコン 

テキストをフォルダ内の新しいファイルに「タイトルなし」という名前で挿入する 

ファイルをフォルダにコピー/移動する 

データをフォルダ内の新しいファイルに指定された名前 (指定された場合) で挿入する。名前が指定されなかった場合には、「タイトルなし」という名前で挿入する 

アクション・アイコン 

テキストに対してアクションを呼び出す (適切な形式であり、テキストのドロップを受け入れる場合)。セーブバックなし 

ファイルに対してアクションを呼び出す (適切な形式であり、ファイルのドロップを受け入れる場合)。セーブバックあり 

データに対してアクションを呼び出す (適切な形式であり、データのドロップを受け入れる場合)。セーブバックなし 

メール・コンテナ・アイコン 

メールボックスに追加する (テキストがメール形式の場合) 

メールボックスに追加する (ファイルがメール形式の場合) 

メールボックスに追加する (データがメール形式の場合) 

表 5-5 は、フロントパネルのアクション・アイコンへ、選択されたテキスト、ファイル、およびバッファをドロップする場合を示します。

表 5-5 フロントパネルのドロップ先

ドロップ先 

選択されたテキスト 

ファイル 

バッファ 

テキスト・エディタ 

読み専用で読み込む。セーブバックなし 

読み込む。セーブバックあり 

読み込み専用で読み込む。セーブバックなし 

カレンダ 

アポイントをスケジュールする (テキストがアポイント形式の場合) 

アポイントをスケジュールする (ファイルがアポイント形式の場合) 

アポイントをスケジュールする (データがアポイント形式の場合) 

メール 

テキストを接続してメッセージを作成する 

ファイルを接続してメッセージを作成する 

データを接続してメッセージを作成する 

プリンタ 

テキストを印刷する (印刷方法がテキストに対して有効な場合) 

ファイルの内容を印刷する (印刷方法がファイル形式に対して有効な場合) 

データを印刷する (印刷方法がデータの形式に対して有効な場合) 

ごみ箱 

N/A 

ファイルをごみ箱へ移動する 

N/A 

サブパネル: アイコンのインストール 

N/A 

アイコンをインストールする 

N/A 

サブパネル: アクション 

ファイル・マネージャと同じ 

ファイル・マネージャと同じ 

ファイル・マネージャと同じ 

サブパネル:実行形式 

ファイル・マネージャと同じ 

ファイル・マネージャと同じ 

ファイル・マネージャと同じ 

ユーザに対するドラッグ & ドロップの表示方法とガイドラインの詳細は、『共通デスクトップ環境 スタイル・ガイド』を参照してください。