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

SWT/JFace Java Discussion :

Initialiser une arborescence CheckboxTreeViewer


Sujet :

SWT/JFace Java

  1. #1
    Membre du Club
    Homme Profil pro
    ITESCIA
    Inscrit en
    Janvier 2013
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : ITESCIA
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2013
    Messages : 101
    Points : 55
    Points
    55
    Par défaut Initialiser une arborescence CheckboxTreeViewer
    Bonjour,

    J'essaie de créer un arbre ayant des checkbox intégrées, c'est pourquoi j'utilise la classe CheckboxTreeViewer.

    Mais j'ai quelques difficultés avec les données que je lui donne en entrée.

    Je ne lui donne en entrée qu'un Element contenant une liste de sous-Element. Et j'aimerais dans l'arbre final avoir :
    Element
    |Sous-Element
    |Sous-Element
    |Sous-Element
    ...
    Or j'obtiens quelque chose comme :
    Element
    |Element
    |Element
    ....
    En modifiant légèrement la méthode getElements du ContentProvider associé j'obtiens :
    Sous-Element
    Sous-Element
    Sous-Element
    Voici le code dans la première version :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        @Override
        public Object[] getElements(Object inputElement) {
            if (inputElement instanceof DimComp)
                return new DimComp[] {(DimComp) inputElement};
     
            return EMPTY_ARRAY;
        }
    Ainsi que le code de la seconde version:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        @Override
        public Object[] getElements(Object inputElement) {
            if (inputElement instanceof DimComp)
                return ((DimComp)inputElement).getElements().toArray();
     
            return EMPTY_ARRAY;
        }
    Quelqu'un saurait-il m'indiquer commencer procéder ?

    Merci d'avance pour votre aide.

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Le content provider doit implémenter ITreeContentProvider :
    • La méthode getElements(Object) doit retourné la liste des élements racines (obtenu à partir de la source passé en argument de la méthode setInput, qui est passé en argument de getElements() ;
    • La méthode getChildren(Object) retourne la liste des fils de l'élément passé en argument ;
    • La méthode hasChildren(Object) retourne true si l'élément passé en argument a des fils, false sinon ;
    • La méthode getParent(Object) retourne le parent de l'élément passé en argument (si tu ne peux pas le déterminer, retourne null, mais il vaut mieux retourner le bon parent, pour un fonctionnement complet du TreeViewer (l'ouverture (expand) de branches ne fonctionne pas sinon).


    Par exemple, pour t'inspirer, tu peux regarder (ou utiliser si tu veux) l'implémentation concrète org.eclipse.jface.viewers.TreeNodeContentProvider qui se fonde sur la classe org.eclipse.jface.viewers.TreeNode (très similaire fonctionnellement à l'interface javax.swing.tree.TreeNode) :

    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
    public class TreeNodeContentProvider implements ITreeContentProvider {
     
    	@Override
    	public void dispose() {
    		// Do nothing
    	}
     
    	@Override
    	public Object[] getChildren(final Object parentElement) {
    		final TreeNode node = (TreeNode) parentElement;
    		return node.getChildren();
    	}
     
    	@Override
    	public Object[] getElements(final Object inputElement) {
    		if (inputElement instanceof TreeNode[]) {
    			return (TreeNode[]) inputElement;
    		}
    		return new Object[0];
    	}
     
    	@Override
    	public Object getParent(final Object element) {
    		final TreeNode node = (TreeNode) element;
    		return node.getParent();
    	}
     
    	@Override
    	public boolean hasChildren(final Object element) {
    		final TreeNode node = (TreeNode) element;
    		return node.hasChildren();
    	}
     
    	@Override
    	public void inputChanged(final Viewer viewer, final Object oldInput,
    			final Object newInput) {
    		// Do nothing
    	}
    }

Discussions similaires

  1. Suppression d'item dans une arborescence
    Par jonzuzu dans le forum MFC
    Réponses: 2
    Dernier message: 24/02/2004, 18h45
  2. Réponses: 3
    Dernier message: 17/12/2003, 12h26
  3. Remonter une arborescence
    Par Gwipi dans le forum Requêtes
    Réponses: 4
    Dernier message: 26/11/2003, 19h04
  4. [VB6] parcourir une arborescence de repertoire
    Par pecheur dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 30/04/2003, 18h33
  5. créer une arborescence windows sous forme d'arbre java
    Par chupachoc dans le forum Composants
    Réponses: 3
    Dernier message: 01/10/2002, 17h48

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