Pudotustoiminnot

org.eclipse.ui.dropActions

Tämän laajennuspisteen avulla voidaan lisätä pudotustoimintoja muissa lisäosissa määritettyihin näkymiin.

Lisäosamekanismin edellyttämän käyttöliittymän kerrosrakenteen takia näkymä ei ole selvillä muiden näkymien sisällöstä ja luonteista. Tämän takia lisäosien välinen vetäminen ja pudottaminen voi olla hankalaa. Oletetaan esimerkiksi, että halutaan lisätä koodinparannustuki, jonka avulla käyttäjä voi vetää metodin Java-muokkausohjelman sisällön hahmotelmanäkymästä resurssien navigaattorinäkymässä olevaan toiseen Java-tiedostoon. Koska resurssien navigaattorinäkymässä ei ole tietoja tästä Java-sisällöstä, näkymä ei osaa käsitellä siihen pudotettuja Java-metodeja. Tilanne on sama, jos sovelluskehittäjä haluaa pudottaa itse luomaansa sisältöä johonkin Java-katseluohjelmaan.

Käyttöympäristön org.eclipse.ui.dropActions-laajennuspiste on tarkoitettu tällaisia tilanteita varten. Tämä mekanismi siirtää pudotustoimien käsittelyn takaisin pudotustoiminnon lähteelle. Käsittelymääritys tehdään toiminnolla, jonka on toteutettava org.eclipse.ui.part.IDropActionDelegate-liittymä. Pudotustoiminnon lähteenä olevan katseluohjelman on tuettava org.eclipse.ui.part.PluginTransfer-siirtolajia ja sijoitettava PluginTransferData-objekti pudotustapahtumaan. Lisätietoja pudotustuen lisäämisestä katseluohjelmaan on org.eclipse.jface.viewers.StructuredViewer#addDragSupport-ohjeessa.

<!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>


Seuraavassa on esimerkki pudotustoimintolaajennuksesta:

    

<extension point=

"org.eclipse.ui.dropActions"

>

<action id=

"my_drop_action"

class=

"com.xyz.eclipse.TestDropAction"

>

</action>

</extension>

Seuraavassa on esimerkki pudotuksen kuuntelutoiminnosta, joka käyttää edellä määritetty pudotustoimintoa.

 
class MyDragListener extends DragSourceAdapter { 
    public void dragSetData(DragSourceEvent event) { 
        if (PluginTransfer.getInstance().isSupportedType(event.dataType)) { 
            byte[] dataToSend = ...//anna lähetettävät tiedot. 
            event.data = new PluginTransferData( 
                "my_drop_action", dataToSend); 
        } 
    } 
} 

Ympäristön readme-tiedostossa on kuvattu näitä laajempi esimerkkitapaus. Siinä pudotustoiminto on määritetty ReadmeDropActionDelegate-laajennukseen ja pudotustoimintoa käyttää ReadmeContentOutlineDragListener-kuuntelutoiminto.

Class-määritteen arvon on oltava sen Java-luokan tarkka nimi, joka toteuttaa org.eclipse.ui.part.IDropActionDelegate-liittymän. Tämä luokka ladataan mahdollisimman myöhäisessä vaiheessa, jotta koko lisäosaa ei tarvitse ladata ennen kuin se on tarpeen.

Työympäristö ei sisällä tämän laajennuspisteen toteutusta. Pudotustoimintoja voi lisätä muissa lisäosissa määritettyihin näkymiin lisäämällä tämä laajennuspiste lisäosiin.