2009-06-17 9 views
1

Le code est:Y a-t-il une différence dans la définition de DropTarget dans View et dans Editor?

DropTarget target = new DropTarget(sqlViewer.getTextWidget(), 
    DND.DROP_DEFAULT | DND.DROP_COPY | DND.DROP_MOVE | DND.DROP_LINK); 
    Transfer[] types = new Transfer[] {TreeLeafListTransfer.getInstance(), 
    TextTransfer.getInstance(), FileTransfer.getInstance()}; 
    target.setTransfer(types); 
    target.addDropListener(new DropTreeLeafAdapter(sqlViewer)); 

Et cela fonctionne normalement pour une vue, mais échoue dans un éditeur. Quelle est la différence?
upd: Ce qui est le plus étrange - si je l'entoure d'un bloc try/catch, il échoue toujours sans exception.
éditer: Le problème est plus grand que juste DnD ne fonctionne pas. L'éditeur entier ne parvient pas à instancier à cause de ce bloc. Juste une fenêtre vide apparaît.

+0

le code affiché est "catcher" partie qui ruine éditeur – Imaskar

Répondre

0

fonctionne normalement pour une vue, mais échoue dans un éditeur. Quelle est la différence?

La différence doit être dans le transfert type:

Pour récapituler, les types de transfert permettent des sources de glisser pour spécifier quels types d'objets qu'ils permettent d'être traîné hors de leur widget et ils permettent une baisse cibles pour spécifier quels types d'objets ils sont prêts à recevoir. Pour chaque type de transfert, il existe une sous-classe de org.eclipse.swt.dnd.Transfer. Ces sous-classes implémentent le comportement de marshaling qui convertit entre les objets et les octets, permettant des transferts par glisser-déposer entre applications.

Peut-être que la liste des types de transferts que vous utilisez n'est pas tout à fait compatible avec la cible (un éditeur)? Voir this thread pour plus de test autour de cela. Un autre élément à considérer est la configuration correcte d'un TransferDropTargetListener (comme dans this thread). Comme je n'ai pas encore testé complètement eclipse DnD, je ne peux pas vous donner beaucoup plus de détails sur ce sujet, mais j'espère que cela vous donnera quelque chose pour commencer votre propre analyse.

+0

voir modifier. le code échoue à l'éditeur entier. – Imaskar