Descrizione: questo punto di estensione viene utilizzato per aggiungere funzioni di rilascio alle visualizzazioni definite da altri plug-in.
A causa della suddivisione in layer dell'interfaccia utente imposta dal meccanismo di plug-in, le visualizzazioni spesso non rilevano il contenuto o la natura delle altre visualizzazioni. Questo può rendere le operazioni di trascinamento e rilascio tra plug-in 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, nel navigator delle risorse. Poiché il navigator delle risorse non conosce il contenuto Java, non sa come comportarsi quando metodi Java vengono rilasciati al suo interno. Ugualmente, si potrebbe desiderare di rilasciare parte del contenuto di un ISV 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 org.eclipse.ui.part.PluginTransferData nell'evento trascinamento. Per apprendere come aggiungere un supporto di trascinamento ad un visualizzatore, consultare org.eclipse.jface.viewers.StructuredViewer#addDragSupport.
Tag di configurazione:
<!ELEMENT dropContribution (action)*>
<!ELEMENT action*>
<!ATTLIST action
id
CDATA #REQUIRED
class CDATA #REQUIRED
>
Esempi:
di seguito viene riportato un esempio 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 in cui l'azione di rilascio è definita in ReadmeDropActionDelegate ed è utilizzata da ReadmeContentOutlineDragListener.
Informazione API: il valore dell'attributo class deve costituire 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 plug-in prima del necessario.
Implementazione fornita: il workbench non fornisce implementazione per questo punto di estensione. I plug-in possono contribuire a questo punto di estensione per aggiungere funzioni di rilascio alle visualizzazioni definite da altri plug-in.