På grund av användargränssnittets lager, som satts av mekanism i insticksprogrammet, är vyer ofta inte medvetna om andra vyers innehåll och natur. Detta kan ge problem vid dra och släpp-åtgärder mellan olika insticksprogram. Man kan t.ex. vilja ge Java:s omfaktoriseringssupport, där användaren drar en metod från Java-redigerarens innehållsdisposition till en annan Java-fil i resursnavigatorn. Eftersom resursnavigatorn inte vet något om Java-innehåll vet den inte hur den ska fungera när java-metoder släpps på den. På liknande sätt kan ISV vilja släppa en viss del av sitt innehåll i en av Java-visningarna.
Utökningspunkten org.eclipse.ui.dropActions tillhandahålls av plattformen för att ta hand om dessa situationer. Mekanismen delegerar släpp-funktionen till den ursprungliga släpp-åtgärden. Funktionen finns med i en åtgärd som måste implementera org.eclipse.ui.part.IDropActionDelegate. Visningen, som är dragåtgärdens källa, måste kunna hantera överföringstypen org.eclipse.ui.part.PluginTransfer och placera ett PluginTransferData-objekt i draghändelsen. I org.eclipse.jface.viewers.StructuredViewer#addDragSupport finns information om hur du lägger till dragsupport i en visning.
<!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>
Följande är ett exempel på en draglyssnare som använder den släppåtgärd som definierats ovan.<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 = ...// ange vilka data som ska skickas event.data = new PluginTransferData( "my_drop_action", dataToSend); } } }Ett mer fullständigt exempel finns i plattformens readme-exempel. I det exemplet definieras en släppåtgärd i ReadmeDropActionDelegate, och används av ReadmeContentOutlineDragListener.
Copyright (c) 2002, 2004 IBM Corporation and others.
All Rights Reserved. Detta program och medföljande material tillhandahålls under villkoren för Eclipse Public License v1.0 som medföljer denna distribution och finns tillgänglig på
http://www.eclipse.org/legal/epl-v10.html