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 :

[Wizard] Passage de paramètre entre WizardPage


Sujet :

Eclipse Platform

  1. #1
    Membre habitué Avatar de NeraOne
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2007
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 218
    Points : 128
    Points
    128
    Par défaut [Wizard] Passage de paramètre entre WizardPage
    Bonjour à tous,

    Je développe un plug-in qui créer un Wizard qui contient un grand nombre de pages. Ces pages sont toutes des classes indépendantes (dans des fichiers différents) et pour des raisons de généricité je ne souhaite pas qu'elles puissent communiquer entre elle (typiquement s'échanger des paramètres). Je souhaite donc que tout passe par ma classe qui hérite de Wizard et qui déclare toutes ces pages.

    Par exemple, dans une page A l'utilisateur défini un nom de fichier, dans la page B suivante je me sers de ce fichier. Vu que j'ajoute toutes mes pages en même temps et au même moment (addPages() je ne peux pas à ce moment la passer ce fichier en paramètre de la page B.

    J'imagine un genre d’évènement où un retour à la classe Wizard pour dire la page A est finie, on peut passer le paramètre à la page B. Je précise que je m'autorise la création de méthodes (typiquement getter et setter dans mes pages) pour passer ces paramètres puisque selon le principes mes pages auront déjà étaient toutes créées.

    Comment puis-je faire cela ?

    Merci de votre lecture et votre aide !

    Antoine
    "Je ne suis pas d'accord avec ce que vous dites, mais je me battrai jusqu'à la mort pour que vous ayez le droit de le dire." Voltaire

  2. #2
    Membre expert
    Avatar de Gueritarish
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2007
    Messages
    1 800
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 800
    Points : 3 919
    Points
    3 919
    Par défaut
    Salut,

    Typiquement, dans ce genre de cas, je fais les affectations à partir de la méthode getNextPage() de mon IWizard. Je ne sais pas si c'est la meilleure méthode, mais elle marche et elle a le mérite de garder la généricité des pages de mon wizard.
    Pour être un peu plus précis, je garde dans mon wizard les instances des pages créées lors de l'appel à addPages() et ensuite, je vérifie quelle est la page suivante qui va être appelé dans la méthode getNextPage(). Il suffit ensuite d'appeler les bons getters et setters sur mes pages et c'est gagné.

    Voilà, à+
    Gueritarish
    Pas de questions technique par MP, les forums sont là pour ça.

  3. #3
    Membre habitué Avatar de NeraOne
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2007
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 218
    Points : 128
    Points
    128
    Par défaut
    Merci de ta réponse Gueritarish !

    Ta méthode ma paraît bonne mais je dois t'avouer que je n'ai pas bien compris...
    - Garder les instances des pages créé : OK
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    MyWizardPageA myPage_A = new MyWizardPageA("Hello");
    addPage(myPage_A);
    MyWizardPageB myPage_B = new MyWizardPageB("Hello");
    addPage(myPage_B);
    Il me semble que tu parles de cela

    - Mais ensuite getNextPage(myPage_A) te retourne myPage_B... mais rien de plus, ou alors cette méthode est appelée entre chaque changement de page ?

    Merci de tes lumières !!!

    Antoine
    "Je ne suis pas d'accord avec ce que vous dites, mais je me battrai jusqu'à la mort pour que vous ayez le droit de le dire." Voltaire

  4. #4
    Membre habitué Avatar de NeraOne
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2007
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 218
    Points : 128
    Points
    128
    Par défaut
    Re

    J'ai trouvé une astuce, je sais pas si c'est de ça dont tu parlais, dans mon wizard, je surcharge getNextPage() :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    	@Override
    	public IWizardPage getNextPage(IWizardPage page){
    		if (super.getNextPage(page) == myPage_B){
    			myPage_B.setParam(myPage_A.getParam());
    		}
    		return super.getNextPage(page);
    	}
    C'est ta façon de faire ?! Ça me semble pas mal ! Sinon dis-moi comment tu procèdes !

    Merci beaucoup !

    Antoine
    "Je ne suis pas d'accord avec ce que vous dites, mais je me battrai jusqu'à la mort pour que vous ayez le droit de le dire." Voltaire

  5. #5
    Membre expert
    Avatar de Gueritarish
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2007
    Messages
    1 800
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 800
    Points : 3 919
    Points
    3 919
    Par défaut
    Plutôt qu'un long discours, une implémentation:
    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
    40
    41
    42
    43
    44
    /**
     * <p>
     * The test Wizard.
     * </p>
     */
    public class MyWizard extends Wizard {
     
        // Wizard pages.
        /**
         * The A page.
         */
        private MyWizardPageA pageA;
     
        /**
         * The B page.
         */
        private MyWizardPageB pageB;
     
        /**
         * {@inheritDoc}
         */
        @Override
        public IWizardPage getNextPage(final IWizardPage page) {
            IWizardPage nextPage = null;
            if (page == pageA) {
                File selectedFile = pageA.getSelectedFile();
                pageB.setSelectedFile(selectedFile);
                nextPage = pageB;
            }
            return nextPage;
        }
     
        /**
         * {@inheritDoc}
         */
        public void addPages() {
            pageA = new MyWizardPageA("Hello");
     
            pageB = new MyWizardPageB("Hello");
     
            addPage(pageA);
            addPage(pageB);
        }
    }
    Je parlais de garder une instance de tes pages comme attributs de ton Wizard. Mais c'était peut-être pas assez explicite.
    J'espère avoir été plus clair comme cela.

    Bien sur les getSelectedFile() et setSelectedFile() sont là pour les besoins de l'exemple. À toi de mettre tes propres méthodes...

    Voilà, à+
    Gueritarish
    Pas de questions technique par MP, les forums sont là pour ça.

  6. #6
    Membre habitué Avatar de NeraOne
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2007
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 218
    Points : 128
    Points
    128
    Par défaut
    Ok je vois !!

    Bon c'est ça que j'avais intuité avec tes premières explications !

    Merci beaucoup pour ton aide Gueritarish !

    Antoine
    "Je ne suis pas d'accord avec ce que vous dites, mais je me battrai jusqu'à la mort pour que vous ayez le droit de le dire." Voltaire

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

Discussions similaires

  1. [Forms 6i] Passage de paramètres entre forms
    Par tmcgrady dans le forum Forms
    Réponses: 8
    Dernier message: 18/03/2006, 03h04
  2. Passage de paramètres entre page
    Par philou8 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 10/01/2006, 18h54
  3. passage de paramètre entre formulaire et état
    Par thufir hawat dans le forum IHM
    Réponses: 13
    Dernier message: 21/12/2005, 22h32
  4. [jsp][servlet]passage de paramètre entre deux frames
    Par alexandra_ape dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 29/06/2004, 11h14
  5. [Forms]Passage de paramètre entre Forms et Reports
    Par jack554 dans le forum Reports
    Réponses: 4
    Dernier message: 30/03/2004, 13h58

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