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>
Aqui está um exemplo de um ouvinte de arrastar que utiliza a ação de soltar definida acima.<extension point=
"org.eclipse.ui.dropActions"
>
<action id=
"my_drop_action"
class=
"com.xyz.eclipse.TestDropAction"
>
</action>
</extension>
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.
Direitos Autorais (c) 2002, 2004 IBM Corporation e outros.
Todos os direitos reservados.
Este programa e os materiais que o acompanham são disponibilizados
sob os termos da Eclipse Public License v1.0 que acompanha esta
distribuição e estão disponíveis no endereço http://www.eclipse.org/legal/epl-v10.html