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 :

Les pages de Wizard


Sujet :

Eclipse Platform

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 90
    Par défaut Les pages de Wizard
    Bonjour,

    Pour mon plugin eclipse, j'ai ajouter un Wizard perso pour la création de projet s C.
    J'ai donc une classe qui étend CDTCommonProjectWizard (qui étend lui meme Wizard).

    D'autre part, j'ai une classe qui étend WizardPage. Cette page (MyPage) contient une methode create() qui doit être appelé lors du PerformFinish du wizard.

    De ce fait, la methode performFinish() de MyWizard contient ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public boolean performFinish() {
    ...
    page = (MyPage)getPage(MyPage.NAME);
    ...
    }
    Mais quoi qu'il arrive 'page' est toujours 'null'...
    la methode getPage ne renvoi rien quelque soit la chaine fournie...

    J'ai bien essayer de visualiser les noms de toutes les pages du wizard en faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    for(IWizardPage p : getPages()
         System.out.println(p.getName());
    Mais cela ne me renvoi qu'une seule page qui n'est pas la mienne...

    J'ai fini par trouver une solution "batarde" qui me satisfait que dans la mesure ou elle fonctionne... mais qui me parait très peu robuste/propre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    page = (MyPage)getPages()[0].getNextPage().getNextPage();
    Auriez-vous une idée de la Bonne methode à utiliser ?

    Merci

  2. #2
    Membre chevronné

    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Juin 2004
    Messages
    332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en technologies

    Informations forums :
    Inscription : Juin 2004
    Messages : 332
    Par défaut
    As-tu bien ajouté ta/tes page(s) au wizard (org.eclipse.jface.wizard.Wizard.addPage(IWizardPage)) ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 90
    Par défaut
    Merci, Effectivement je n'ai pas appelé cette methode.

    J'ai fait une autre erreur en fait :
    J'ai ajouter ma page à TOUTE les pages de wizard du CDT... et ce par un point d'extension. donc pas besoin (?!) de addPage().. mais pas moyen de la retrouver dans la liste des getPages().

    Or ce que je voulais, c'est ajouter cette page qu'à mon MyWizard.

    J'ai donc corrigé en supprimant mon extension et en ajoutant dans le constructeur de MyWizard le addPage dont tu parles.

    Mais où appeler cette méthode ?!
    Pour donner un ordre aux pages, j'ai lu qu'il fallait les ajouter dans l'ordre dans lequel on voulait les voir apparaitre...
    dans le constructeur : la page apparait trop top (meme avant qu'on puisse nommer le projet)
    dans le addPages() : la page n'apparait pas...
    Il faut que ma page soit la dernière...

    Merci de ton aide

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 90
    Par défaut
    J'ai résolu mon second problème.

    Lors de l'execution du wizard, le bouton Next ne deviens accessible que si la methode getNextPage() de la page courante ne renvoi pas null.
    Or si cette page courant n'est pas la votre, mais une d'un wizard que vous voulez compléter, sa methode getNextPage renverra probablement null.
    Et même si vous réussissez à avoir une référence sur cette page, il n'existe pas de méthode setNextPage().

    Donc si vous voulez compléter un wizard, il faut non seulement le surcharger mais en plus surcharger sa dernière page.

    En surchageant le wizard, on doit surcharger la methode addPages() pour rajouter sa propre page à la suite de celle qui existe déjà. mais cela ne suffit pas.
    il faut en plus s'assurer que la dernière page de l'anvien wizard renvoi une référence vers votre page, celle que vous voulez ajouter. Et pour cela il faut
    la remplacer par la meme .. mais qui renvoi pas null.
    Regardez plutot :

    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
     
    class MonWizard extend WizardInitial{
    ...
            @Override
    	public void addPages() {
    		//super.addPages(); ne pas utiliser sinon il ajoute pas votre 
                    //version, surcharger de sa dernière page...
     
                    //on créé notre page à ajouter
    		MaPageDeWizard p = new MaPageDeWizard ();
     
                    //on doit créé notre version surcharger de dernière page
                    //Et la faire référencer par la variable parente (en protected)
    		super.fMainPage = new MaVersionDeLaDernièrePage(p);
     
                    //on ajoute les pages dans l'orde d'apparition
                    addPage(fMainPage);
    		addPage(p);
    	}
    ...
    }
    Et pour ce qui est de la version modifié de la dernière page :

    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
     
    class MaVersionDeLaDernièrePage extends WizardPageInitialement{
     
    	IWizardPage newPage;
     
    	public CDTWizardPage(String pageName,IWizardPage nextPage) {
    		super(pageName);
    		this.newPage = nextPage;
    	}
     
    	@Override
    	public IWizardPage getNextPage() {
    		return newPage;
    	}
    }

    Merci à kartben !

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

Discussions similaires

  1. Personnaliser les pages sun wizard sous eclipse
    Par caro_caro dans le forum SWT/JFace
    Réponses: 1
    Dernier message: 04/03/2009, 15h07
  2. [CR.NET] affichage de toute les pages de l'état
    Par HULK dans le forum SAP Crystal Reports
    Réponses: 4
    Dernier message: 19/01/2005, 17h34
  3. Les pages de man
    Par gege2061 dans le forum Administration système
    Réponses: 7
    Dernier message: 14/01/2005, 17h18
  4. [HVMenu] problème dans les pages ASPX (urgent svp)
    Par hatembr dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 13/01/2005, 09h37
  5. Personnaliser les pages d'erreurs
    Par Jeweller dans le forum XMLRAD
    Réponses: 3
    Dernier message: 03/06/2004, 12h26

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