IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Eclipse Platform Discussion :

Drag and Drop de classes perso avec eclipse RCP


Sujet :

Eclipse Platform

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 187
    Points : 110
    Points
    110
    Par défaut 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 : 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;
    			}} 
     
     
    		);
    }
    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 !

  2. #2
    Membre expert
    Avatar de Gueritarish
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2007
    Messages
    1 800
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 800
    Points : 3 919
    Points
    3 919
    Par défaut
    Salut,

    Alors pour ma part, j'ai utilisé la méthode avec des listeners sur un Viewer pour implémenter le Drag & Drop.
    Donc, cette méthode ne marchera peut-être pas pour toi, mais le seul truc que j'ai ajouté (par rapport à toi), c'est dans la méthode:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    @Override
    public void dragSetData(DragSourceEvent event) {
        ISelection selection = ViewRaccourci.this.treeViewer.getSelection();
        Object object = ((IStructuredSelection)selection).getFirstElement();
        event.data = object; 
        LocalSelectionTransfer.getTransfer().setSelection(selection);
        System.out.println("drag "+object);
    }
    Ensuite, au pire tu peux récupérer la sélection dans ton performDrop de la même manière mais normalement, tout se passe bien comme ça.

    Voilà, à+
    Gueritarish
    Pas de questions technique par MP, les forums sont là pour ça.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 187
    Points : 110
    Points
    110
    Par défaut
    Merci beaucoup ça marche et je récupère ma treeSelection dans le drop !
    Par contre du coup je comprend pas trop à quoi sert la ligne

    Vu que l'objet n'est jamais récupéré au final...
    Enfin en tout cas ça marche !

  4. #4
    Futur Membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 4
    Points : 8
    Points
    8
    Par défaut
    Citation Envoyé par legentil Voir le message
    Merci beaucoup ça marche et je récupère ma treeSelection dans le drop !
    Par contre du coup je comprend pas trop à quoi sert la ligne

    Vu que l'objet n'est jamais récupéré au final...
    Enfin en tout cas ça marche !
    event.data contiendra l'information dans la méthode drop et performDrop

    "In SWT, the transfer of data from the source to the target is done lazily when the drop is initiated. So, as the user is dragging, the destination has no way of finding out what source object is being dragged until the drop is performed" (http://www.eclipse.org/articles/Arti...drag_drop.html)

    Gueritarish, merci beaucoup, j'avais un problème similaire.

    Alexandra.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [script.aculo.us] Drag and drop dans une div avec un scroll horizontal
    Par ridan dans le forum Bibliothèques & Frameworks
    Réponses: 7
    Dernier message: 21/07/2009, 19h14
  2. Drag and Drop dans un grid avec groupements
    Par Erwan62 dans le forum Ext JS / Sencha
    Réponses: 0
    Dernier message: 27/05/2009, 17h26
  3. Drag and Drop sur une image avec coordonnées générées
    Par psgman113 dans le forum ActionScript 3
    Réponses: 2
    Dernier message: 28/04/2009, 21h58
  4. Drag and drop d'une structure avec virtualtreeview
    Par laudur dans le forum Composants VCL
    Réponses: 1
    Dernier message: 03/05/2006, 16h14
  5. "Drag and drop" avec directinput
    Par batosai dans le forum DirectX
    Réponses: 1
    Dernier message: 16/06/2004, 16h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo