Monday, July 27, 2009

GWT 1.6: "removeClickHandler" solution

GWT 1.6 changed all Listeners to Handlers and in the process setup a few different practices. One possibility with GWT before 1.6 was to add a ClickListener to a FocusPanel and then remove it by calling the method removeClickListener(ClickListener listener). But, in 1.6 this is not an option with Handlers. There is no removeClickHandler(). Instead, when you add a handler to a widget, it returns an instance of HandlerRegistration. This can then be used to remove that handler. Here is an example of a handler being adding then removed:

FocusPanel focus = new FocusPanel();

HandlerRegistration registration = focus.addClickHandler(new ClickHandler()

{

public void onClick(ClickEvent event)

{

// Panel has been clicked

}

});

registration.removeHandler();