Vanwege de laagsgewijze gebruikersinterface die is opgelegd door het pluginmechanisme, is vanaf de ene view vaak niet zichtbaar wat de inhoud en het karakter van de andere views is. Dit kan de bewerking Slepen en Neerzetten tussen de verschillende plugins ingewikkeld maken. U wilt bijvoorbeeld ondersteuning leveren voor Java-herstructurering, waarbij de gebruiker een methode vanaf het inhoudsoverzicht van de Java-editor naar een ander Java-bestand in de resourcenavigator sleept. Omdat aan de resourcenavigator niets bekend is gemaakt over de Java-content, is onbekend hoe het gedrag moet zijn wanneer de Java-methoden worden neergezet in de navigator. Ook door ISV kan geprobeerd worden een deel van de inhoud in een van de Java-viewers neer te zetten.
Het extensiepunt org.eclipse.ui.dropActions wordt door het platform geleverd om met deze situaties om te gaan. Dit mechanisme delegeert het gedrag Neerzetten terug naar de afzender van de neerzet-bewerking. Dit gedrag bevindt zich in een actie die org.eclipse.ui.part.IDropActionDelegate moet implementeren. De viewer die de bron is van de Neerzet-bewerking moet het overdrachttype the org.eclipse.ui.part.PluginTransfer ondersteunen, en een PluginTransferData-object plaatsen in de event Neerzetten. Zie org.eclipse.jface.viewers.StructuredViewer#addDragSupport voor meer details over het aan de viewer toevoegen van ondersteuning voor Slepen.
<!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>
Een voorbeeld van een Listener voor Slepen, die gebruikmaakt van de actie Neerzetten die hierboven is gedefinieerd.<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 = ... // te verzenden gegevens hier invoeren. event.data = new PluginTransferData( "my_drop_action", dataToSend); } } }Zie het voorbeeld in Platform readme voor een meer volledig voorbeeld. In dit voorbeeld is een neerzet-actie gedefinieerd in ReadmeDropActionDelegate, en wordt deze gebruikt door de ReadmeContentOutlineDragListener.
Copyright (c) 2002, 2004 IBM Corporation en anderen.
Alle rechten voorbehouden. Dit programma en het begeleidende materiaal zijn beschikbaar gesteld onder de voorwaarden van de Eclipse Public License v1.0 die bij deze distributie is geleverd en beschikbaar is op http://www.eclipse.org/legal/epl-v10.html.