På grunn av UI-lagene som plugin-mekanismen bruker, er andre visninger ofte ikke klar over innholdet og naturen til andre visninger. Dette kan gjøre dra og slipp-operasjoner mellom plugin-moduler vanskelig. Du kan for eksempel ønske å oppgi Java-refaktoriseringsstøtte der brukeren drar en metode fra Java-redigeringsprogrammets innholdsdisposisjon inn i en annen Java-fil i ressursnavigatoren. Fordi ressursnavigatoren ikke vet noe om Java-innhold, vet den ikke hvordan den skal oppføre seg når Java-metoder blir sluppet i den. På samme måte ønsker kanskje en ISV å slippe noe av innholdet i en av Java-visningene.
Utvidelsespunktet org.eclipse.ui.dropActions oppgis av plattformen for å håndtere disse situasjonene. Denne mekanismen delegerer slippevirkemåten tilbake til kilden for draoperasjonen. Denne virkemåten ligger i en handling som må implementere org.eclipse.ui.part.IDropActionDelegate. Visningsprogrammet som er kilden for draoperasjonen, må støtte overføringstypen org.eclipse.ui.part.PluginTransfer, og plassere et PluginTransferData-objekt i drahendelsen. Se org.eclipse.jface.viewers.StructuredViewer#addDragSupport for å lære hvordan du legger til drastøtte i et visningsprogram.
<!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>
Her er et eksempel på en dralytter som bruker slippehandlingene definert ovenfor.<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 = ...//legg inn dataene som skal sendes. event.data = new PluginTransferData( "my_drop_action", dataToSend); } } }Du finner et mer fullstendig eksempel i plattformens readme-eksempel. I det eksempelet er en slippehandling definert i ReadmeDropActionDelegate, og den brukes av ReadmeContentOutlineDragListener.
Copyright (c) 2002, 2004 IBM Corporation and others.
All rights reserved. This program and the accompanying materials are made
available under the terms of the Eclipse Public License v1.0 which accompanies
this distribution, and is available at http://www.eclipse.org/legal/epl-v10.html