Drag and Drop de classes perso avec eclipse RCP
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:
Code:
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;
}}
);
} |
Quand je fais un drag and drop ,dans la méthode performDrop, data est égal à null...
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 !