Slippehandlinger

org.eclipse.ui.dropActions

Dette utvidelsespunktet blir brukt til å legge til slippevirkemåte til visninger definert av andre plugin-moduler.

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>


Nedenfor finner du et eksempel på en slippehandlingsutvidelse.

    

<extension point=

"org.eclipse.ui.dropActions"

>

<action id=

"my_drop_action"

class=

"com.xyz.eclipse.TestDropAction"

>

</action>

</extension>

Her er et eksempel på en dralytter som bruker slippehandlingene definert ovenfor.

 
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.

Verdien på klasseattributtet må være et fullt kvalifisert navn på en Java-klasse som implementerer org.eclipse.ui.part.IDropActionDelegate. Denne klassen blir lastet inn så sent som mulig for å unngå at hele plugin-modulen lastes inn før det er helt nødvendig.

Arbeidsbenken har ingen implementering for dette utvidelsespunktet. Plugin-moduler kan bidra til dette utvidelsespunktet for å legge til slippevirkemåte i visninger som er definert av andre plugin-moduler.