Descripción: este punto de extensión se utiliza para añadir un comportamiento de soltar a las vistas definidas por otros conectores.
Debido a la disposición en capas de la UI, impuesta por el mecanismo de los conectores, sucede a menudo que las vistas no conocen el contenido y la naturaleza de otras vistas. Esto puede llegar a dificultar las operaciones de arrastrar y soltar entre conectores. Por ejemplo, supongamos que se quiere proporcionar soporte de propagación Java, mediante el que el usuario arrastra un método desde el esquematizador de contenido del editor Java hasta otro archivo Java situado en el navegador de recursos. Como el navegador de recursos no tiene conocimiento del contenido Java, no sabe cómo comportarse cuando los métodos Java se sueltan en él. De modo similar, puede suceder que un ISV quiera soltar parte de su contenido en uno de los visores Java.
Para solucionar estas situaciones, la plataforma proporciona el punto de extensión org.eclipse.ui.dropActions. Este mecanismo delega el comportamiento de la operación de soltar en el originador de la operación de arrastrar. Este comportamiento está contenido en una acción que debe implementar org.eclipse.ui.part.IDropActionDelegate. El visor que funciona como origen de la operación de arrastrar debe dar soporte al tipo de transferencia org.eclipse.ui.part.PluginTransfer, y colocar un objeto org.eclipse.ui.part.PluginTransferData en el evento de arrastrar. Consulte org.eclipse.jface.viewers.StructuredViewer#addDragSupport para aprender cómo añadir soporte de arrastrar a un visor.
Códigos XML de configuración:
<!ELEMENT dropContribution (action)*>
<!ELEMENT action*>
<!ATTLIST action
id
CDATA #REQUIRED
class CDATA #REQUIRED
>
Ejemplos:
A continuación figura un ejemplo de extensión de la acción de soltar:
<extension point="org.eclipse.ui.dropActions">
<action>
id="my_drop_action"
class="com.xyz.eclipse.TestDropAction"
</action>
</extension>
Aquí tenemos un ejemplo de un escuchador de arrastrar que hace uso de la acción de soltar anteriormente definida.
La clase MyDragListener amplía DragSourceAdapter {
public void dragSetData(DragSourceEvent event)
{
if (PluginTransfer.getInstance().isSupportedType(event.dataType))
{
byte[] dataToSend = ...//entre los datos que deben enviarse.
event.data = new PluginTransferData(
"my_drop_action", dataToSend);
}
}
}
Para obtener un ejemplo más completo, consulte el ejemplo del archivo readme de la plataforma, donde la acción de soltar está definida en ReadmeDropActionDelegate, y la utiliza el escuchador ReadmeContentOutlineDragListener.
Información sobre las API: el valor del atributo class debe ser un nombre totalmente calificado de una clase Java que implemente org.eclipse.ui.part.IDropActionDelegate. Esta clase se cargará lo más tarde posible para evitar que se cargue todo el conector antes de que sea realmente necesario.
Implementación suministrada: el entorno de trabajo no proporciona ninguna implementación para este punto de extensión. Los conectores pueden contribuir en este punto de extensión añadiendo comportamientos de soltar a las vistas definidas por otros conectores.