Bonjour !
Une fois de plus, me voilà bloqué dans mon application RCP...
J'ai un TreeViewer dans une vue, ( qui contient des "répertoires" et des raccourcis, qui dérivent d'une classe commune ElementArborescence).
Je voudrai pourvoir faire des glisser déposer de raccourcis/répertoires dans les répertoires ( de la même vue donc), le problème, c'est que j'arrive pas à faire des glisser déposer de classes à moi, j'ai vu que les Transferts permettaient de transférer des données genre File, String facilement, mais je trouve rien concernant les classes persos.
J'ai déjà regardé ici :
http://www.developpez.net/forums/d33...-drop-eclipse/
Pour le moment j'ai écrit ça dans ma ViewPart:
Quand je fais un drag and drop ,dans la méthode performDrop, data est égal à null...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 private void addDrag() { int ops = DND.DROP_COPY | DND.DROP_MOVE; final LocalSelectionTransfer transfert = LocalSelectionTransfer.getTransfer(); this.treeViewer.addDragSupport(ops, new Transfer[] {transfert}, new DragSourceListener() { @Override public void dragStart(DragSourceEvent event) { ISelection selection = ViewRaccourci.this.treeViewer.getSelection(); if (selection == null){ event.doit = false; } } @Override public void dragSetData(DragSourceEvent event) { ISelection selection = ViewRaccourci.this.treeViewer.getSelection(); Object object = ((IStructuredSelection)selection).getFirstElement(); event.data = object; System.out.println("drag "+object); } @Override public void dragFinished(DragSourceEvent event) { // rien à faire } }); } private void addDrop(){ int ops = DND.DROP_COPY | DND.DROP_MOVE; final LocalSelectionTransfer transfert = LocalSelectionTransfer.getTransfer(); this.treeViewer.addDropSupport(ops, new Transfer[]{transfert}, new ViewerDropAdapter(this.treeViewer){ @Override public boolean performDrop(Object data) { System.out.println("drop "+data); return true; } @Override public boolean validateDrop(Object target, int operation, TransferData transferType) { return true; }} ); }
Je pense qu'il y a un gros truc à côté duquel je suis passé, quelqu'un pourrai il me dire comment faire ce que je veux??
merci !
Partager