2009-12-14 3 views
1

J'ai fait un widget wrap qui implémente l'interface HasChangeHandlersComment faire agir addValueChangeHandler comme addChangeHandler

Mais je ne peux pas les événements d'ajustement à l'autre.

public HandlerRegistration addChangeHandler(final ChangeHandler handler) { 
    HandlerRegistration registration1 = dateFrom.addValueChangeHandler(handler);// Compile error 

    HandlerRegistration registration2 = dateTo.addValueChangeHandler(new ValueChangeHandler<Date>() { 
     @Override 
     public void onValueChange(ValueChangeEvent<Date> dateValueChangeEvent) { 
       //have to fire handler ?? 
     } 
    }); 

    return null; // what i should return here? 
} 

Merci d'avance!

Répondre

1

Vous renvoyez le gestionnaire de l'objet membre auquel vous voulez associer l'événement. Par exemple, j'ai une zone de texte + widget label et je ne pourrais pas créer un événement @UiHandler sur de quelque part parce que ce n'est pas standard si ce que je faisais était:

public class TextBoxAndLabel implements HasKeyUpHandlers { 

private TextBox myTextBox; 
private Label myLabel; 


    @Override 
    public HandlerRegistration addKeyUpHandler(KeyUpHandler keyUpHandler) { 
     return myTextBox.addKeyUpHandler(keyUpHandler); 
    } 

} 

et maintenant je peux mettre en œuvre

@UiHandler("myClassObject") 
1

Un ChangeHandler n'est pas un ValueChangeHandler. Vous devez créer une autre classe wrapper qui implémente ValueChangeHandler et prend un ChangeHandler en tant que variable d'instance. Vous pouvez alors écrire ...

HandlerRegistration registration1 = dateFrom.addValueChangeHandler(new ChangeHandlerWrapper(handler));

Où ChangeHandlerWrapper est une classe qui implémente ValueChangeHandler. Par exemple,

class ChangeHandlerWrapper<T> implements ValueChangeHandler<Date> 
{ 
    private ChangeHandler handler; 

    public void onValueChange(ValueChangeEvent<T> changeEvent) { 
     handler.onChange(null); 
    } 
} 

Bien sûr, cela suppose que vous n'avez pas besoin de l'événement lui-même dans votre gestionnaire. Si vous le faites, les choses deviendront plus compliquées.

+0

ok . et ce qui devrait être dans la méthode onValueChange? –

Questions connexes