Plugin Eclipse - onglets dans un onglet [Résolu]

Messages postés
719
Date d'inscription
lundi 5 décembre 2005
Dernière intervention
8 janvier 2014
- - Dernière réponse : cs_AlexN
Messages postés
719
Date d'inscription
lundi 5 décembre 2005
Dernière intervention
8 janvier 2014
- 26 févr. 2008 à 12:21
Bonjour,

J'essaye de créer une série d'onglets dans un onglet avec les widgets PDE. Ils se créent apparement sans erreur, mais ne sont pas visibles.

La ViewPart :

public class myView extends ViewPart {

    private TabItem ongletConteneur;

    @Override
    public void createPartControl(Composite parent) {
      
        // Définition du layout (FormLayout)
        parent.setLayout(new FillLayout());
       
        // Définition du TabFolder
        TabFolder tabFolder = new TabFolder(parent, SWT.NONE );
        tabFolder.setLayoutData(parent.getLayout());

        // Définition de l'onglet conteneur (TabItem)
        this.ongletConteneur =  new TabItem(tabFolder, SWT.BORDER);
        this.ongletConteneur.setText("Conteneur");
        this.ongletConteneur.setControl(this.tab = new CompositeTab(tabFolder,SWT.NONE));
    }  
}

Le composant qui contient les onglets :

public class CompositeTab extends Composite {

    private TabItem onglet1;
    private TabItem onglet2;

    public CompositeTab (final Composite parent, final int style) {
        
        super(parent, style);
        
        // Définition du layout (FormLayout)
        this.setLayout(new FormLayout());

        // Définition du TabFolder
        TabFolder tabFolder = new TabFolder(parent, SWT.NONE );
        tabFolder.setLayoutData(parent.getLayout());

        FormData formData = new FormData();
   
        this.onglet1 =  new TabItem(tabFolder, SWT.BORDER);
        this.onglet1.setText("onglet1");
        this.onglet1.setControl(new OngletContenu(tabFolder,SWT.NONE));
       
        this.onglet2 =  new TabItem(tabFolder, SWT.BORDER);
        this.onglet2.setText("onglet2");
        this.onglet2.setControl(new OngletContenu(tabFolder,SWT.NONE));
    }
}

Les onglets contenus :

public class OngletContenu extends Composite {
   
    /**
     * @param parent
     * @param style
     */
    public OngletContenu (final Composite parent, final int style) {
       
        super(parent, style);
       
        // Définition du layout (FormLayout)
        this.setLayout(new FormLayout());

        FormData formData = new FormData();       
    }
}

Qu'est-ce que j'ai bien pu oublié ou raté ?

Merci.
Afficher la suite 

Votre réponse

1 réponse

Meilleure réponse
Messages postés
719
Date d'inscription
lundi 5 décembre 2005
Dernière intervention
8 janvier 2014
3
Merci
Trouvé :o) :

Pas besoin de la dernière classe. Il fallait créer un TabFolder comme contrôle du TabFolder parent.

La ViewPart :

public class myView extends ViewPart {

    private TabItem ongletConteneur;

    @Override
    public void createPartControl(Composite parent) {
      
        // Définition du layout (FormLayout)
        parent.setLayout(new FillLayout());
       
        // Définition du TabFolder
        TabFolder tabFolder = new TabFolder(parent, SWT.NONE );
        tabFolder.setLayoutData(parent.getLayout());

        // Définition de l'onglet conteneur (TabItem)
        this.ongletConteneur =  new TabItem(tabFolder, SWT.BORDER);
        this.ongletConteneur.setText("Conteneur");
        this.ongletConteneur.setControl(new CompositeTab(tabFolder,SWT.NONE));

        // Définition du conteneur d'onglets contenus ;o)
        TabFolder tabFolderContenus = new TabFolder(tabFolder, SWT.NONE );
        tabFolderContenus.setLayoutData(parent.getLayout());
        
        TabItem onglet1 = new TabItem(tabFolderContenus, SWT.BORDER);
        onglet1.setText("onglet1");
        onglet1.setControl(new CompositeTab (tabFolderContenus,SWT.NONE));
        TabItem onglet2 = new TabItem(tabFolderContenus, SWT.BORDER);
        onglet2.setText("onglet2");
        onglet2.setControl(new CompositeTab (tabFolderContenus,SWT.NONE));
        
        // Defintion du contrôle de l'onglet conteneur
        this.ongletConteneur.setControl(tabFolderContenus);
     
    }  
}

Les onglets contenus :

public class CompositeTab extends Composite {

    public CompositeTab (final Composite parent, final int style) {
        
        super(parent, style);
        
        // Définition du layout (FormLayout)
        this.setLayout(new FormLayout());

    }
}

fiouuuu !

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 106 internautes ce mois-ci

Commenter la réponse de cs_AlexN

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.