Azioni di rilascio

org.eclipse.ui.dropActions

Questo punto di estensione viene utilizzato per aggiungere funzioni di rilascio alle viste definite da altri plugin.

A causa della suddivisione in layer dell'interfaccia utente imposta dal meccanismo di plugin, le viste spesso non rilevano il contenuto o la natura delle altre viste. Questo può rendere le operazioni di trascinamento e rilascio tra plugin piuttosto complesse. Ad esempio, si potrebbe desiderare di fornire un supporto di refactoring Java, che consenta di trascinare un metodo da una funzione di struttura del contenuto dell'editor Java in un altro file Java, nella selezione risorse. Poiché la selezione risorse non conosce il contenuto Java, non sa come comportarsi quando metodi Java vengono rilasciati al suo interno. Ugualmente, un ISV potrebbe rilasciare parte del contenuto in uno dei visualizzatori Java.

Il punto di estensione org.eclipse.ui.dropActions viene fornito dalla piattaforma per risolvere queste situazioni. Questo meccanismo delega la funzione di rilascio all'elemento che ha originato l'operazione di trascinamento. La funzione è contenuta in un'azione che deve implementare org.eclipse.ui.part.IDropActionDelegate. Il visualizzatore che costituisce l'origine dell'operazione di trascinamento deve supportare il tipo di trasferimento org.eclipse.ui.part.PluginTransfer, e posizionare un oggetto PluginTransferData nell'evento trascinamento. Per apprendere come aggiungere un supporto di trascinamento ad un visualizzatore, consultare org.eclipse.jface.viewers.StructuredViewer#addDragSupport.

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


Di seguito è riportato un esempio di un punto di estensione dell'azione di rilascio:

    

<extension point=

"org.eclipse.ui.dropActions"

>

<action id=

"my_drop_action"

class=

"com.xyz.eclipse.TestDropAction"

>

</action>

</extension>

Segue un esempio di un listener di trascinamento che utilizza l'azione di rilascio sopra riportata.

 
class MyDragListener extends DragSourceAdapter { 
    public void dragSetData(DragSourceEvent event) { 
        if (PluginTransfer.getInstance().isSupportedType(event.dataType)) { 
            byte[] dataToSend = ...//immettere i dati da inviare. 
            event.data = new PluginTransferData( 
                "my_drop_action", dataToSend); 
        } 
    } 
} 

Per un esempio più esaustivo, consultare l'esempio readme della piattaforma. Nell'esempio, l'azione di rilascio è definita in ReadmeDropActionDelegate, ed è utilizzata da ReadmeContentOutlineDragListener.

il valore dell'attributo class deve essere un nome completo di una classe Java che implementa org.eclipse.ui.part.IDropActionDelegate. Questa classe viene caricata per ultima, in modo da evitare il caricamento dell'intero plugin prima del necessario.

Il workbench non fornisce implementazione per questo punto di estensione. I plugin possono contribuire a questo punto di estensione per aggiungere funzioni di rilascio alle viste definite da altri plugin.