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

GWT et Vaadin Java Discussion :

Créer un widget et propager les évènements


Sujet :

GWT et Vaadin Java

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Août 2011
    Messages : 22
    Par défaut Créer un widget et propager les évènements
    Bonjour j'ai fait un widget à partir de composite.
    Ce widget contient un bouton et j'aimerais que le clique sur ce bouton soit re transmis par mon widget.
    Pouvez vous m'aider ? ou m'orienter vers la bonne doc ?
    Merci bcp.

  2. #2
    Membre éclairé
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2011
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2011
    Messages : 51
    Par défaut
    Bonsoir,

    Peut être trouveras tu ton bonheur ici : http://courses.coreservlets.com/Cour...GWT-Events.pdf

    Maxime

  3. #3
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2011
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2011
    Messages : 41
    Par défaut
    Bonjour,
    Tu peux faire des listeners comme pour les applications desktop:
    Tous d'abord, dans ton code client, crée l'interface:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public interface CustomWidgetOkListener {
     
    	void okClicked(ClickEvent event);
     
    }
    Ensuite Modifie ta classe composite comme cela:

    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
    import com.google.gwt.event.dom.client.ClickEvent;
    import com.google.gwt.event.dom.client.ClickHandler;
     
    public class CustomWidget extends Composite {
     
    	private final Collection<CustomWidgetOkListener> okListeners = new ArrayList<CustomWidgetOkListener>();
     
    	public CustomWidget(){
    		PushButton bttOk = new PushButton("ok");
    		bttOk.addClickHandler(new ClickHandler(){
    			@Override
    			public void onClick(ClickEvent event) {
    				fireOkListener(event);
    			}
    		});
    	}
     
    	public void adOkListener(CustomWidgetOkListener l){
    		this.okListeners.add(l);		
    	}
     
    	public void removeOkListener(CustomWidgetOkListener l){
    		okListeners.remove(l);		
    	}
    	protected void fireOkListener(ClickEvent event){
    		for(CustomWidgetOkListener listener : okListeners) {
    			listener.okClicked(event);
    		}
    	}
    }
    Puis Dans le panel qui contient ton custom widget, ajoute le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CustomWidget widget = new CustomWidget();
    widget.adOkListener(new CustomWidgetOkListener(){
    	@Override
    	public void okClicked(ClickEvent event) {
    		//action
    	}
    });
    J'espère que ca t'aidera.

  4. #4
    Membre averti
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Août 2011
    Messages : 22
    Par défaut
    Merci JFmil53_2, ca ressemble beaucoup à ce que je veux faire.

    Et merci pour la doc, je la garde dans mes favoris.

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Août 2011
    Messages : 22
    Par défaut
    Il ne faut pas que ma class implement une interface particuliere ?

    [QUOTE=JFmil53_2;6456571]...
    Ensuite Modifie ta classe composite comme cela:

    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
    import com.google.gwt.event.dom.client.ClickEvent;
    import com.google.gwt.event.dom.client.ClickHandler;
     
    public class CustomWidget extends Composite {
     
    	private final Collection<CustomWidgetOkListener> okListeners = new ArrayList<CustomWidgetOkListener>();
     
    	public CustomWidget(){
    		PushButton bttOk = new PushButton("ok");
    		bttOk.addClickHandler(new ClickHandler(){
    			@Override
    			public void onClick(ClickEvent event) {
    				fireOkListener(event);
    			}
    		});
    	}
     
    	public void adOkListener(CustomWidgetOkListener l){
    		this.okListeners.add(l);		
    	}
     
    	public void removeOkListener(CustomWidgetOkListener l){
    		okListeners.remove(l);		
    	}
    	protected void fireOkListener(ClickEvent event){
    		for(CustomWidgetOkListener listener : okListeners) {
    			listener.okClicked(event);
    		}
    	}
    }

  6. #6
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2011
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2011
    Messages : 41
    Par défaut
    Non pas besoin, regarde ici:

    http://rom.developpez.com/java-listeners/

  7. #7
    Membre averti
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Août 2011
    Messages : 22
    Par défaut
    Merci, c'est bon.

  8. #8
    Membre confirmé Avatar de docr1
    Profil pro
    Inscrit en
    Février 2007
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Février 2007
    Messages : 74
    Par défaut
    GWT a un gestionnaire d’événement pour se charger de ce genre de chose.


    Il suffit de créer une interface ( gestionnaire de l’événement) et une classe l’événement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    package com.test.client;
     
    import com.google.gwt.event.shared.EventHandler;
     
    public interface TestHandler extends EventHandler {
     
    	public void doMyTest(String param);
     
    }
    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
     
    package com.test.client;
     
    import com.google.gwt.event.shared.GwtEvent;
     
    public class TestEvent extends GwtEvent<TestHandler> {
     
    	private static final Type<TestHandler> TYPE = new Type<TestHandler>();
     
    	private String param;
     
    	public TestEvent(String param) {
    		this.param = param;
    	}
     
    	public static GwtEvent.Type<TestHandler> getType() {
    		return TYPE;
    	}
     
    	@Override
    	public GwtEvent.Type<TestHandler> getAssociatedType() {
    		return TYPE;
    	}
     
    	@Override
    	protected void dispatch(TestHandler handler) {
    		handler.doMyTest(param);
     
    	}
    }
    Extrait de mon widget :
    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
     
    	@UiHandler("button")
    	void onClick(ClickEvent e) {
    		// lance l'evenevenement 
    		fireEvent(new TestEvent("toto"));
    	}
     
    	/**
             * Inscription a l'evenement
             * @param handler
             * @return
             */
    	public HandlerRegistration addTestHandler(TestHandler handler) {
    		return addHandler(handler, TestEvent.getType());
    	}
    Il suffit ensuite de s'inscrire sur le widget avec la méthode addTestHandler pour être prévenu de l’événement

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

Discussions similaires

  1. Réponses: 13
    Dernier message: 30/05/2012, 10h42

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