Släpp-åtgärder

org.eclipse.ui.dropActions

Den här utökningspunkten används för att lägga till ensläpp-funktion i vyer som definierats med andra insticksprogram.

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 utökning av en dragåtgärd:

    

<extension point=

"org.eclipse.ui.dropActions"

>

<action id=

"my_drop_action"

class=

"com.xyz.eclipse.TestDropAction"

>

</action>

</extension>

Följande är ett exempel på en draglyssnare som använder den släppåtgärd som definierats ovan.

 
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.

Värdet på klassattributet måste vara ett fullständigt kvalificerat namn på en Java-klass som implementerar org.eclipse.ui.part.IDropActionDelegate. Den här klassen har lästs in så sent som möjligt för att undvika inläsning av hela insticksprogrammet, innan det verkligen behövs.

Arbetsmiljön tillhandahåller inte någon implementation för den här utökningspunkten. Ett insticksprogram kan tillhandahålla den här utökningspunkten för att lägga till en släppfunktion i vyer som definierats med andra insticksprogram.