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

ドロップ領域としてのオブジェクトの登録

アプリケーションがデータ型を定義する場合は、次の手順に従ってプログラマが意図したドラッグ & ドロップ動作のすべてが提供されているか確認してください。

  1. アプリケーションの中で、データ型を定義する必要があるかどうかを指定します。

  2. 定義する各データ型について、関連するオブジェクトをドロップ領域にするかどうかを指定します。

  3. ドロップ領域として登録する各オブジェクトについて、どの操作 (移動、コピー、またはリンク) を定義するかを指定します。

  4. 各オブジェクトに対して有効なドロップ操作について、適切なドロップ・アクションを定義します (MOVE_TO_ACTIONCOPY_TO_ACTION、および LINK_TO_ACTION 属性を設定してください)。

アプリケーションがデータ・オブジェクトのアイコンを表示する場合、それらのアイコンをドロップ領域としてサポートしなければならないこともあります。その場合、MOVE_TO_ACTIONCOPY_TO_ACTION、または LINK_TO_ACTION 属性を問い合わせて、それらのデータ・オブジェクトのドロップ動作を指定する必要があります。対応する属性値が NULL でない場合だけ、オブジェクトはドロップ操作をサポートしなければなりません。3 つの属性すべてが NULL の値を持つ場合、オブジェクトはドロップ領域として登録されません。データ型が定義されているオブジェクトの属性を最低 1 つでも設定すると、アプリケーションはそのオブジェクトをドロップ領域として登録できます。

ユーザがオブジェクトをドロップ領域にドラッグすると、アプリケーションはドロップを行うためにどのジェスチャ (すなわち、どのドラッグ操作) が使用されたかを判断します。ドラッグ操作とドロップ領域のデータ型に基づいて、アプリケーションはデータ型データベースからドロップ属性を検索します。次に、DtActionInvoke を呼び出して、次の 2 つの規則によってパラメータを判断します。

  1. ユーザがオブジェクト A と B をオブジェクト C 上にドロップした場合は、C、A、B を args として DtActionInvoke を呼び出します。action は、C の MOVE_TO_ACTIONCOPY_TO_ACTIONLINK_TO_ACTION のいずれかの値です。オブジェクト C がアクションの場合、args リストは C を含みません。また、action は C です。

ファイル・マネージャとそのディレクトリおよびフォルダ・オブジェクトは、デスクトップが移動、コピー、およびリンクされたドロップ属性を使用する方法を示す例となります。ユーザは、オブジェクト (ファイル) をディレクトリ・フォルダへドラッグ & ドロップできます。ファイル・マネージャは、フォルダ・オブジェクトに対して、MOVE_TO_ACTIONCOPY_TO_ACTION、および LINK_TO_ACTION アクションを定義します。これらのアクションは、適切なファイル・システムの移動、コピー、およびリンクのためのシステム関数を実行します。

MOVE_TO_ACTIONCOPY_TO_ACTION、および LINK_TO_ACTION 属性の定義の例については、/usr/dt/appconfig/types/C/dtfile.dt を参照してください。ドラッグ & ドロップの使用方法の詳細は、第 5 章「ドラッグ & ドロップとの統合」を参照してください。