Du fait des différents niveaux d'interface utilisateur imposés par le mécanisme des plug-ins, les vues ne sont souvent pas conscientes du contenu et de la nature des autres vues. Ceci peut rendre difficile les opérations de déplacement par glissement entre plug-in. Par exemple, vous pouvez souhaiter fournir un support de propagation des modifications Java, dans lequel l'utilisateur fait glisser une méthode du décomposeur de contenu de l'éditeur Java dans un autre fichier Java du navigateur de ressources. Comme ce dernier ne connaît pas le contenu Java, il ne sait pas comment se comporter lorsque les méthodes Java sont supprimées. De même, un ISV (fournisseur indépendant de logiciels) peut souhaiter supprimer une partie du contenu dans l'un des afficheurs Java.
Le point d'extension org.eclipse.ui.dropActions est fourni par la plateforme pour répondre à ces situations. Ce mécanisme délègue le comportement de suppression à l'auteur de l'opération de glissement. Ce comportement est contenu dans une action qui doit implémenter org.eclipse.ui.part.IDropActionDelegate. L'afficheur qui est la source de l'opération de glissement doit supporter le type de transfert org.eclipse.ui.part.PluginTransfer et placer un objet PluginTransferData dans l'événement de glissement. Pour savoir comment ajouter un support de glissement à un afficheur, reportez-vous org.eclipse.jface.viewers.StructuredViewer#addDragSupport.
<!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>
L'exemple suivant est celui d'un écouteur de glissement qui utilise l'action de suppression définie ci-dessus :<extension point=
"org.eclipse.ui.dropActions"
>
<action id=
"mon_action_de_suppression"
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); } } }Pour un exemple plus complet, reportez-vous à l'exemple du readme de la plateforme dans lequel l'action de suppression est définie dans ReadmeDropActionDelegate et est utilisée par l'écouteur ReadmeContentOutlineDragListener.
Copyright (c) 2002, 2004 IBM Corporation and others.
All rights reserved. Ce programme et les produits associés sont
distribués sous licence v1.0 et disponibles à
l'adresse suivante :
http://www.eclipse.org/legal/epl-v10.html