Acties Neerzetten

org.eclipse.ui.dropActions

Dit extensiepunt wordt gebruikt om gedragspatronen voor Neerzetten toe te voegen aan views die zijn gedefinieerd door andere plugins.

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>


Dit is een voorbeeld van de extensie dropActions:

    

<extension point=

"org.eclipse.ui.dropActions"

>

<action id=

"my_drop_action"

class=

"com.xyz.eclipse.TestDropAction"

>

</action>

</extension>

Een voorbeeld van een Listener voor Slepen, die gebruikmaakt van de actie Neerzetten die hierboven is gedefinieerd.

 
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.

De waarde van het kenmerk class moet de volledig gekwalificeerde naam zijn van de Java-klasse die org.eclipse.ui.part.IDropActionDelegate implementeert. Deze klasse wordt zo laat mogelijk geladen om te voorkomen dat de gehele plugin wordt geladen voordat het nodig is.

De workbench levert geen implementatie voor dit extensiepunt. Plugins kunnen bijdragen aan dit extensiepunt, om een gedrag voor Neerzetten toe te voegen aan de views die door andere plugins zijn gedefinieerd.