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 :

[RCP] Problème de refresh TreeViewer


Sujet :

Eclipse Platform

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    122
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2007
    Messages : 122
    Points : 126
    Points
    126
    Par défaut [RCP] Problème de refresh TreeViewer
    Bonjour !

    En fait j'ai un soucis avec mon TreeViewer ..
    En effet, lors d'une modification je voudrais que celui-ci se mette à jour, je pensais faire appel à la fonction refresh() mais elle ne fait rien ..
    La seule solution que j'ai trouvé, c'est de faire :
    monTreeViewer.setInput(new monInput)
    Mais dans ce cas, impossible de retrouver les noeuds qui étaient ouverts .. pourtant je les récupère avec getExpandedTreePath ou getExpandedElements mais lorsque je les réinserts dans mon TreeViewer, ca n'a aucun effet ..

    Si quelqu'un a une solution, je suis preneur parce que la, j'ai a peu pres tout essayé
    Java, c'est pas de la menthe à l'eau.. !!

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    122
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2007
    Messages : 122
    Points : 126
    Points
    126
    Par défaut
    Bon la je pense que c'est impossible de remettre l'arbre à jour ..

    Vu que je réinsert de nouvelles données, je pense qu'on ne peut pas reprendre l'arborescence d'un "ancien" arbre et la remettre après le setInput() ..


    Je n'en suis pas sûr mais ça me parait cohérent en y réflechissant ..
    Si quelqu'un peut, toutefois, soit me le confirmer ou bien me prouver le contraire je suis preneur !!
    Java, c'est pas de la menthe à l'eau.. !!

  3. #3
    Membre habitué Avatar de Tazmanian Devil
    Profil pro
    Inscrit en
    Février 2007
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 119
    Points : 149
    Points
    149
    Par défaut
    Forcément, si ton arbre change, ce sera impossible de réappliquer la même arborescence. D'autant plus que normallement lors du setInput, tu lui réinsere de nouveaux objets donc à mon avis même pas moyen de boucler et de retrouver les noeuds qui étaient ouverts en les comparant... Sinon, je ne vois que ca, boucler sur la liste des anciens noeuds ouvert, trouver le moyen de comparer avec les nouveaux objets que tu vient d'inserer et si ils correspondent, tu déplis. Mais je n'y crois guère, surtout si ton arborescence est complexe ...

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    122
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2007
    Messages : 122
    Points : 126
    Points
    126
    Par défaut
    Mon arborescence n'est pas trop complexe .. Elle ne comporte que 3 niveaux :
    - une racine invisible
    - un constructeur
    - un matériel
    Je n'avais pas pensé à le faire comme ca .. mais c'est vrai que si je peux récupérer si le noeud est ouvert ou non pour l'arbre je peux ensuite le réappliquer ..

    Encore merci !
    Java, c'est pas de la menthe à l'eau.. !!

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    122
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2007
    Messages : 122
    Points : 126
    Points
    126
    Par défaut
    Après toute un matinée à prendre le problème dans tous les sens j'abandonne ..

    Voilà ou j'en suis actuellement ..

    Je peux récupérer sans problèmes les noeuds ouverts, récupérer leurs noms afin de les comparer aux nouveaux noeuds de mon arbre .. mais le problème est que je n'arrive pas à récupérer les nouveaux noeuds .. donc impossible de réafficher l'arborescence telle qu'elle était avant le setInput() ..

    J'ai tout essayé ou presque ..



    Malgrès tout, si quelqu'un à une solution .. je suis toujours preneur ^^
    Merci !
    Java, c'est pas de la menthe à l'eau.. !!

  6. #6
    Membre régulier
    Inscrit en
    Octobre 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Octobre 2005
    Messages : 103
    Points : 81
    Points
    81
    Par défaut
    Bonjour,

    As-tu crée ton TreeViewer avec le modèle MVC (ContentProvider, LabelProvider, Listener) ?

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    122
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2007
    Messages : 122
    Points : 126
    Points
    126
    Par défaut
    oui oui il est créé sur ce type de modèle !
    Java, c'est pas de la menthe à l'eau.. !!

  8. #8
    Membre régulier
    Inscrit en
    Octobre 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Octobre 2005
    Messages : 103
    Points : 81
    Points
    81
    Par défaut
    Logiquement, tu ne dois faire qu'une fois le setInput sur le TreeViewer.
    Ensuite, c'est en agissant sur ton objet métier que tu mets à jour ton interface.
    Tu as essayé la méthode TreeViewer.update(tonObjet, null) ?

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    122
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2007
    Messages : 122
    Points : 126
    Points
    126
    Par défaut
    Je viens de faire le test..
    toujours le même problème .. l'arbre ne se met pas à jour ..

    Mais j'ai peut etre une autre solution ..
    Je récupère une collection avec tous les objets "matériel" correspondant à un constructeur et je modifie cette collection pour la remettre dans l'arbre .. j'ai vu qu'on pouvait le faire avec un TreeViewer.add(obj1, obj2)


    Exemple pour imager :

    -Constructeur1
    ---materiel1
    ---materiel2
    ---materiel3

    -Constructeur2
    ---materiel4
    ---materiel5

    Je souhaite modifier materiel4, je sors la collection materiel4,materiel5 .. je supprime materiel4 et je fais TreeViewer(monArbre,nouvelleCollection)


    Le tout est maintenant de voir comment manipuler la collection ..
    Java, c'est pas de la menthe à l'eau.. !!

  10. #10
    Membre régulier
    Inscrit en
    Octobre 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Octobre 2005
    Messages : 103
    Points : 81
    Points
    81
    Par défaut
    ça m'a l'air bien compliqué, je ne comprends pas pourquoi la mise à jour ne fonctionne pas.
    Pourtant, j'ai appris à utiliser les TreeViewers avec ce tuto :
    http://www.eclipse.org/articles/Arti...werArticle.htm

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    122
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2007
    Messages : 122
    Points : 126
    Points
    126
    Par défaut
    Merci pour le tuto

    Je viens de trouver la solution ..
    En fait, je n'ai même pas besoin de faire TreeViewer.remove(monObjet) .. il y avait une fonction dans la classe qui initialise l'arbre que je n'avais pas vu (ce n'est pas moi qui a fait cette partie du code) elle permet de supprmier un élément ..
    Il ne restait plus qu'à récupérer l'objet, le supprimer grâce à la fonction et enfin faire un TreeViewer.refresh() ..

    En effet, à mon goût aussi, le code est compliqué .. mais ce n'est pas moi qui ait géré cette partie, c'est mon tuteur en entreprise .. donc à moi de m'adapter

    En tout cas, merci pour toutes les contributions apportées !
    Bonne continuation à tous ..
    Java, c'est pas de la menthe à l'eau.. !!

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

Discussions similaires

  1. Problème de refresh
    Par squallJ dans le forum Oracle
    Réponses: 2
    Dernier message: 17/01/2006, 16h28
  2. [RCP]IAdapterFactory pour peuplé treeviewer
    Par david06600 dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 09/01/2006, 13h23
  3. problème de refresh sur une DBGrid
    Par lidouka dans le forum Bases de données
    Réponses: 4
    Dernier message: 20/12/2005, 17h12
  4. [TColorBox] : problème de refresh
    Par PpPool dans le forum Composants VCL
    Réponses: 4
    Dernier message: 12/08/2005, 11h09
  5. Problème avec Virtual Treeview
    Par bisounoursbleu dans le forum Composants VCL
    Réponses: 6
    Dernier message: 06/12/2004, 15h37

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