Bonjour !
Petit souci dans le développement de mon appli avec Eclipse RCP.
J'ai donc une vue à gauche contenant mon arborescence, et mon éditeur à droite.
J'ai implémenté le glisser déposer à l'intérieur de l'arborescence, et un double clic sur un élément feuille de mon arbre ouvre l'éditeur voulu.
Maintenant, la prochaine étape que je veux mettre en place est la possibilité de faire glisser un élément de l'arbre vers la zone d'éditeur pour qu'un éditeur s'ouvre lorsqu'un drop est fait au dessus de la zone (comme les fichiers dans Eclipse quoi)
Seulement, là, quand je passe sur la zone des éditeurs, le curseur devient un panneau d'interdiction, j'imagine qu'il faut activer le drop sur la zone d'éditeur quelque part, mais où...
Pour le drag voici mon code actuel :Merci d'avance !
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
48
49
50
51
52 private void addDrag() { int ops = DND.DROP_MOVE; final LocalSelectionTransfer transfert = LocalSelectionTransfer.getTransfer(); this.treeViewer.addDragSupport(ops, new Transfer[] {transfert}, new DragSourceListener() { @Override public void dragStart(DragSourceEvent event) { try{ ISelection selection = ViewRaccourci.this.treeViewer.getSelection(); if (selection == null){ event.doit = false; System.out.println("Le drag ne peut pas se faire car la sélection est nulle"); }else{ ElementArborescence elementArborescence = (ElementArborescence)((IStructuredSelection)selection).getFirstElement(); Menu parent = elementArborescence.getParent(); if(parent.getParent() == null){ event.doit = false; System.out.println("Impossible de faire un drag sur la racine"); }else{ ViewRaccourci.this.draggedElement = elementArborescence; System.out.println("Début du drag sur "+elementArborescence.getClass().getSimpleName()+" : "+elementArborescence.getLibelle()); } } }catch(RuntimeException e){ e.printStackTrace(); throw e; } } @Override public void dragSetData(DragSourceEvent event) { try{ ISelection selection = ViewRaccourci.this.treeViewer.getSelection(); Object object = ((IStructuredSelection)selection).getFirstElement(); event.data = object; System.out.println("dragSetData : l'objet du drag est "+object); LocalSelectionTransfer.getTransfer().setSelection(selection); }catch(RuntimeException e){ e.printStackTrace(); throw e; } } @Override public void dragFinished(DragSourceEvent event) { // rien à faire } }); }
Partager