説明: この拡張ポイントは、 他のプラグインにより定義されるビューにドロップ動作を追加するために使用します。
プラグインのメカニズムによる UI 階層化の影響で、ビューが他のビューのコンテンツおよび特性を認識しないことがあります。 したがって、プラグイン間でのドラッグ・アンド・ドロップ操作が困難になる場合があります。 例えば、ユーザーが Java エディターのコンテンツ・アウトライナーからリソース・ナビゲーターの他の Java ファイルにメソッドをドラッグ・アンド・ドロップすることにより、Java リファクタリング・サポートを提供したいものとします。 リソース・ナビゲーターには Java コンテンツがわからないため、Java メソッドがドロップされても、どのような動作をしてよいのかわかりません。 同様に、ISV は、それらのコンテンツの一部を Java ビューアーにドロップしたい場合があります。
これらの状況に対処するために、org.eclipse.ui.dropActions 拡張ポイントがプラットフォームによって提供されています。 このメカニズムにより、ドラッグ動作をその操作の発生元にさかのぼって代行します。 この動作は、org.eclipse.ui.part.IDropActionDelegate をインプリメントしなければならないアクションの中に含まれています。 ドラッグ操作の発生元であるビューアーは、the org.eclipse.ui.part.PluginTransfer 転送タイプをサポートし、 PluginTransferData オブジェクトをドラッグ・イベント内に配置しなければなりません。 ドラッグ・サポートをビューアーに追加する方法については、org.eclipse.jface.viewers.StructuredViewer#addDragSupport を参照してください。
構成マークアップ:
<!ELEMENT extension (action*)>
<!ATTLIST extension
point CDATA #REQUIRED
id CDATA #IMPLIED
name CDATA #IMPLIED
>
<!ELEMENT action EMPTY>
<!ATTLIST action
id CDATA #REQUIRED
class CDATA #REQUIRED
>
<extension point="org.eclipse.ui.dropActions"> <action id="my_drop_action" class="com.xyz.eclipse.TestDropAction"> </action> </extension>次に、上記で定義されたドロップ・アクションを使用するドラッグ・リスナーの例を示します。
class MyDragListener extends DragSourceAdapter { public void dragSetData(DragSourceEvent event) { if (PluginTransfer.getInstance().isSupportedType(event.dataType)) { byte[] dataToSend = ...//enter the data to be sent. event.data = new PluginTransferData( my_drop_action, dataToSend); } } }詳細な例は、プラットフォームの README にある例を参照してください。その例では、ドロップ・アクションが ReadmeDropActionDelegate に定義され、ReadmeContentOutlineDragListener によって使用されます。
API 情報: class 属性の値は、org.eclipse.ui.part.IDropActionDelegate をインプリメントする Java クラスの完全修飾名である必要があります。このクラスは、プラグイン全体が実際に必要となる前に全体がロードされてしまうことがないよう、できる限り後からロードされます。
提供されるインプリメンテーション: ワークベンチでは、この拡張ポイントに対するインプリメンテーションは提供しません。プラグインにより拡張ポイントを使用して、他のプラグインにより定義されるビューにドロップ動作を追加することができます。
Copyright (c) 2002 IBM Corporation and others.
All rights reserved.
This program and the accompanying materials are made available under the terms of the Common Public License v1.0 which accompanies this distribution, and is available at http://www.eclipse.org/legal/cpl-v10.html