Acções de Largar

org.eclipse.ui.dropActions

Este ponto de extensão é utilizado para adicionar um comportamento de largar a vistas definidas por outros plugins.

Devido à esquematização em níveis da UI, imposta pelo mecanismo de plugins, as vistas frequentemente não estão a par do conteúdo e natureza de outras vistas. Isto pode dificultar as operações de arrastar e largar entre plugins. Por exemplo, caso pretenda facultar suporte de refactorização Java, em que o utilizador arrasta um método do esquematizador de conteúdo do editor Java para outro ficheiro java no navegador de recursos. Dado que o navegador de recursos não possui qualquer conhecimento sobre o conteúdo Java, não sabe qual o comportamento a adoptar quando nele são largados métodos java. De forma semelhante, um ISV poderá pretender largar parte do seu conteúdo num dos visualizadores Java.

O ponto de extensão org.eclipse.ui.dropActions é facultado pela Plataforma para dar resposta a estas situações. Este mecanismo delega o comportamento de largar para o originador da operação de largar. Este comportamento está contido numa acção que tem de implementar org.eclipse.ui.part.IDropActionDelegate. O visualizador origem da operação de largar tem de suportar o tipo de transferência the org.eclipse.ui.part.PluginTransfer e colocar um objecto PluginTransferData no evento de arrastar. Consulte org.eclipse.jface.viewers.StructuredViewer#addDragSupport para saber como arrastar suporte para um visualizador.

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


De seguida é apresentado um exemplo de uma extensão de acção de largar:

    

<extension point=

"org.eclipse.ui.dropActions"

>

<action id=

"my_drop_action"

class=

"com.xyz.eclipse.TestDropAction"

>

</action>

</extension>

De seguida é apresentado um exemplo de um ouvinte de arrastar que utiliza a acção de largar acima defina.

 
class MyDragListener extends DragSourceAdapter { 
    public void dragSetData(DragSourceEvent event) { 
        if (PluginTransfer.getInstance().isSupportedType(event.dataType)) { 
            byte[] dataToSend = ...//introduzir os dados a enviar.
            event.data = new PluginTransferData( 
                "my_drop_action", dataToSend); 
        } 
    } 
} 

Para obter um exemplo mais completo, consulte o exemplo do ficheiro readme da plataforma. Nesse exemplo, é definida uma acção de largar em ReadmeDropActionDelegate e é utilizada por ReadmeContentOutlineDragListener.

O valor do atributo class tem de ser um nome totalmente qualificado de uma classe Java que implementeorg.eclipse.ui.part.IDropActionDelegate. Esta classe é carregada o mais tarde possível, para evitar carregar todo o plug-in antes que seja realmente necessário.

A área de trabalho não faculta uma implementação para este ponto de extensão. Os plug-ins podem contribuir para este ponto de extensão para adicionar um comportamento de largar a vistas definidas por outros plugins.