Plugin Eclipse - onglets dans un onglet

Résolu
Messages postés
694
Date d'inscription
lundi 5 décembre 2005
Statut
Membre
Dernière intervention
8 janvier 2014
-
Messages postés
694
Date d'inscription
lundi 5 décembre 2005
Statut
Membre
Dernière intervention
8 janvier 2014
-
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.

1 réponse

Messages postés
694
Date d'inscription
lundi 5 décembre 2005
Statut
Membre
Dernière intervention
8 janvier 2014
18
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 !