9.1.2 ドラッグ&ドロップ
ドラッグ&ドロップ機能を使用すると,入力操作しないでクライアントサイドでのポートレット間データ通信ができます。
ドラッグ&ドロップ機能を実現するための前提条件を次に示します。
- データ転送先のポートレットには,「ペーストイベントハンドラ」が定義されている必要があります。ペーストイベントハンドラとは,データ転送先にデータを貼り付けるJavaScriptイベントハンドラのことです。ペーストイベントハンドラは,ドロップ時に呼ばれます。
- データ転送元には,「コピーイベントハンドラ」が定義されている必要があります。コピーイベントハンドラとは,HTML上に格納されているシリアライズされたJavaオブジェクトである文字列を取得し,ポータルクリップボードウィンドウにその文字列をコピーするJavaScriptイベントハンドラのことです。コピーイベントハンドラは,ドラッグ時に呼ばれます。
- ドラッグ&ドロップは,アイコンを使用して実現します。ポートレット開発者は,任意のアイコンを使用できます。アイコンの指定方法については,「14.11.3(3) csdc:dragicon」を参照してください。アイコンをドラッグする際に,マウスカーソルがドロップするフォーム領域に入っていない場合,またはデータ転送先とデータ転送元のdatatypeが異なる場合は,ドロップ抑止機能が働きます。
なお,ドラッグ&ドロップする際のデータの保管場所には,クライアントPCのuserData領域,またはポータルクリップボードウィンドウを使用します。userData領域およびポータルクリップボードウィンドウの詳細は,「9.1.5 データ保管領域」を参照してください。
ドラッグ&ドロップ機能の概要を次の図に示します。
図9-1 ドラッグ&ドロップ機能の概要
![[図データ]](figure/zu090100.gif)
- 図の説明
- 画面表示
Javaオブジェクトがシリアライズされ,HTMLに格納されます。
ポータルクリップボードウィンドウだけを使用する方式の場合,ポータルクリップボードウィンドウを開きます。
- 項目を選択
ドラッグ対象項目を選択します。ドラッグする項目を選択していない場合は,ドラッグできません。
- ドラッグ&ドロップ
ドラッグ処理
2.で選択した項目に対応するシリアライズされた文字列を「コピーイベントハンドラ」でデシリアライズし,userData領域またはポータルクリップボードウィンドウにコピーします。
userData領域に格納するデータを再シリアライズします。シリアライズ後のデータが,PortalResources.propertiesファイルのjp.co.hitachi.soft.portal.csdc.datasize.threshold項目に指定されている値を超えているかどうかによって次のようになります。PortalResources.propertiesファイルの詳細は,マニュアル「uCosminexus Portal Framework システム管理者ガイド」の「PortalResources.propertiesの詳細」の説明を参照してください。
<指定値以内の場合>
userData領域にデータを格納します。
<指定値を超えている場合>
ポータルクリップボードウィンドウを開き,ポータルクリップボードウィンドウにデータを格納します。
ドロップ処理
userData領域またはポータルクリップウィンドウから取得したデータを「ペーストイベントハンドラ」で入力フォームに反映します。
ポータルクリップボードウィンドウが開かれている場合,ポータルクリップボードウィンドウを閉じます。