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]TreeViewer getExpandedState ?


Sujet :

Eclipse Platform

  1. #1
    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 [RCP]TreeViewer getExpandedState ?
    Bonjour à tous,

    Je teste un peu RCP en implémentant un TreeViewer.
    J'ai mis en place un filtre, un tri et un drag & drop.
    Mais je bloque sur la modification des icônes des éléments du TreeViewer selon leur état.
    Je cherche simplement à définir un icône pour un dossier ouvert et un pour un dossier fermé.

    J'ai commencé par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    treeViewer.addTreeListener(new ITreeViewerListener(){
    				public void treeCollapsed(TreeExpansionEvent event) {
    					((TreeViewer)event.getSource()).update(event.getElement(), null);
    				}
     
    				public void treeExpanded(TreeExpansionEvent event) {
    					((TreeViewer)event.getSource()).update(event.getElement(), null);
    				}
    		});
    puis j'ai ajouté dans la méthode getImage de ma classe dérivée de LabelProvider :
    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
     
    public Image getImage(Object element) {
    		Noeud noeud = (Noeud)element;
    		ImageDescriptor aDescriptor = null;
    		if(noeud.hasEnfants()){
    			if(treeViewer.getExpandedState(element)){
    				aDescriptor = Activator.getImageDescriptor("/icons/folder_red.png");
    			}
    			else{
    				aDescriptor = Activator.getImageDescriptor("/icons/folder.png");
    			}
    		}
    		else{
    			aDescriptor = Activator.getImageDescriptor("/icons/kuser.png");
    		}
    		Image aImage = aDescriptor.createImage();
    		return aImage;
    	}
    Evidemment, ça ne fonctionne pas.
    Quelqu'un a déjà rencontré ce souci ?

    Merci d'avance.

  2. #2
    Membre habitué
    Inscrit en
    Octobre 2002
    Messages
    164
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 164
    Points : 190
    Points
    190
    Par défaut
    Cela marche très bien (Eclipse 3.2), sauf un pb du 1er expand/collapse

    Je n'ai bien sûr pas ton code exact, typiquement j'utilise directement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    	  public void treeCollapsed(TreeExpansionEvent event) {
    	    Object obj = event.getElement();
    	    if (obj instanceof TreeParent) {
    	      event.getTreeViewer().update(obj, null);
                }
              }
    et pas le getSource() mais tiens peut être au fait de l'API ?

    As tu débogger pour voir si getImage est bien appellé et si l'état des noeuds est correctement géré ?

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2006
    Messages : 101
    Points : 127
    Points
    127
    Par défaut
    j'ai eu le même souci et pour le résoudre je fais directement un setImage dans le treeCollapsed et treeExpanded
    pas très propre, mais j'avais des soucis sinon

  4. #4
    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
    Mon arbre au démarrage est totalement fermé.
    Lors du debug, le getExpandedState() me donne false.
    Lorsque j'ouvre le premier noeud, il me donne encore false pour le premier noeud et false pour l'unique noeud enfant.
    Si je referme le premier noeud, j'obtiens true.

    On peut en conclure que l'on a true pour fermé et false pour ouvert mais ça ne fonctionne pas au démarrage.

Discussions similaires

  1. [RCP] Updating Treeviewer
    Par orochimaru13 dans le forum Eclipse Platform
    Réponses: 3
    Dernier message: 19/02/2009, 09h36
  2. [RCP] TreeViewer et refresh des éléments et garder l'expansion
    Par Fabien[ALT] dans le forum Eclipse Platform
    Réponses: 1
    Dernier message: 20/01/2009, 18h43
  3. [RCP] Problème de refresh TreeViewer
    Par Nikk0 dans le forum Eclipse Platform
    Réponses: 10
    Dernier message: 19/03/2007, 15h11
  4. [RCP] Treeviewer non thread-safe ?
    Par Guildux dans le forum Eclipse Platform
    Réponses: 4
    Dernier message: 09/01/2007, 13h00
  5. [RCP]IAdapterFactory pour peuplé treeviewer
    Par david06600 dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 09/01/2006, 13h23

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