Ações de Soltar

org.eclipse.ui.dropActions

Esse ponto de extensão é utilizado para inclusão de comportamento de soltar em visualizações definidas por outros plug-ins.

Devido à disposição da UI em camadas imposta pelo mecanismo de plug-in, as exibições são freqüentemente não cientes do conteúdo e da natureza de outras exibições. Isso pode tornar difícil as operações de arrastar e soltar entre plug-ins. Por exemplo, alguém pode querer fornecer suporte de recriação Java onde o usuário arrasta um método do editor de conteúdo externo Java para outro arquivo Java no navegador de recursos. Como o navegador de recursos não conhece o conteúdo Java, ele não saberá como se comportar quando os métodos Java forem soltos nele. De forma semelhante, um ISV pode querer soltar seu conteúdo em um das exibições Java.

O ponto de extensão org.eclipse.ui.dropActions é fornecido pela Plataforma para lidar com essas situações. Esse mecanismo delega o comportamento de soltar de volta ao originador da operação de arrastar. Esse comportamento está incluído em uma ação que deve implementar org.eclipse.ui.part.IDropActionDelegate. A exibição que é a origem da operação de arrastar deve suportar o tipo de transferência org.eclipse.ui.part.PluginTransfer e colocar um objeto PluginTransferData no evento arrastar. Consulte org.eclipse.jface.viewers.StructuredViewer#addDragSupport para obter informações sobre como incluir o suporte de operações de arrastar em uma exibição.

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


A seguir um exemplo de uma extensão da ação de soltar:

    

<extension point=

"org.eclipse.ui.dropActions"

>

<action id=

"my_drop_action"

class=

"com.xyz.eclipse.TestDropAction"

>

</action>

</extension>

Aqui está um exemplo de um ouvinte de arrastar que utiliza a ação de soltar definida acima.

 
class MyDragListener extends DragSourceAdapter { 
    public void dragSetData(DragSourceEvent event) { 
        if (PluginTransfer.getInstance().isSupportedType(event.dataType)) { 
            byte[] dataToSend = ...//enter the data to be sent. 
            event.data = new PluginTransferData( 
                "my_drop_action", dataToSend);
        } 
    } 
} 

Para obter um exemplo mais completo, consulte o exemplo do leia-me da Plataforma. Nesse exemplo, uma ação de soltar é definida em ReadmeDropActionDelegate e é utilizada por ReadmeContentOutlineDragListener.

O valor do atributo class deve ser um nome completo de uma classe Java que implementa org.eclipse.ui.part.IDropActionDelegate. Essa classe é carregada o mais tarde possível para evitar o carregamento de todo o plug-in antes que isso seja realmente necessário

O workbench não fornece uma implementação para esse ponto de extensão. Os Plug-ins podem contribuir para esse ponto de extensão para incluir comportamentos de soltar para exibições por outros plug-ins.