Descripción: Este punto de extensión se utiliza para añadir conductas de soltar a las vistas definidas por otros plugins.
Debido al comportamiento en capas del UI impuesto por el mecanismo de conexión, las vistas a menudo no son conscientes del contenido y naturaleza de otras vistas. Esto puede llegar a dificultar las operaciones de arrastrar y soltar entre plugins. Por ejemplo, puede quererse proporcionar soporte de refacturación Java, por lo que el usuario arrastra un método desde el perfil de contenidos del editor Java hacia otro archivo Java en el navegador de recursos. Como el navegador de recursos no tiene conocimiento del contenido Java, no sabe cómo comportarse en cuanto los métodos de Java le son soltados. De modo similar, puede que un ISV quiera soltar parte de su contenido en uno de los visores de Java.
Para solucionar estas situaciones, la plataforma proporciona el punto de extensión org.eclipse.ui.dropActions. Este mecanismo devuelve el comportamiento al origen de la operación de arrastre. Este comportamiento está contenido en una acción que debe implementar org.eclipse.ui.part.IDropActionDelegate. El visor que constituye la fuente de la operación de arrastre debe dar soporte al tipo de transferencia org.eclipse.ui.part.PluginTransfer, y situar un objeto org.eclipse.ui.part.PluginTransferData en el suceso de arrastre. Consulte org.eclipse.jface.viewers.StructuredViewer#addDragSupport para aprender cómo añadir soporte para arrastre en un visor.
Señalamiento de configuración:
<!ELEMENT dropContribution (action)*>
<!ELEMENT action*>
<!ATTLIST action
id
CDATA #REQUIRED
class CDATA #REQUIRED
>
Ejemplos:
A continuación podemos observar un ejemplo de extensión de 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 receptor de arrastre que hace uso de la acción de soltar anteriormente definida.
La clase MyDragListener amplía DragSourceAdapter {
public void dragSetData(suceso DragSourceEvent)
{
if (PluginTransfer.getInstance().isSupportedType(event.dataType))
{
byte[] dataToSend = ...//introduzca los datos a enviar.
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 es utilizada por ReadmeContentOutlineDragListener.
Información del API: El valor del atributo class debe ser un nombre totalmente calificado de una clase de Java que implemente org.eclipse.ui.part.IDropActionDelegate. Esta clase se cargará lo más tarde posible a fin de evitar cargar el plug-in en su totalidad antes de que sea verdaderamente necesario.
Implementación suministrada: El entorno de trabajo no proporciona ninguna implementación para este punto de extensión. Los plug-ins pueden contribuir en este punto de extensión a añadir conductas de eliminación en las vistas definidas por otros plugins.