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.
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.
Bonsoir,
Peut être trouveras tu ton bonheur ici : http://courses.coreservlets.com/Cour...GWT-Events.pdf
Maxime
Bonjour,
Tu peux faire des listeners comme pour les applications desktop:
Tous d'abord, dans ton code client, crée l'interface:
Ensuite Modifie ta classe composite comme cela:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 public interface CustomWidgetOkListener { void okClicked(ClickEvent 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
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); } } }
J'espère que ca t'aidera.
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 } });
Merci JFmil53_2, ca ressemble beaucoup à ce que je veux faire.
Et merci pour la doc, je la garde dans mes favoris.
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); } } }
Non pas besoin, regarde ici:
http://rom.developpez.com/java-listeners/
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); }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
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); } }
Il suffit ensuite de s'inscrire sur le widget avec la méthode addTestHandler pour être prévenu de l’événement
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()); }
Partager