java - How to override/remove default handler in GWT widget? -


i change behavior of suggestbox in gwt. want submit value pressing enter. suggestbox have keyhandler, catches enter key , sets new selection. looking solution remove/overide handler.

this method called constructor in suggestbox

private void addeventstotextbox() { class textboxevents extends handlesallkeyevents implements     valuechangehandler<string> {    public void onkeydown(keydownevent event) {     switch (event.getnativekeycode()) {       case keycodes.key_down:         display.moveselectiondown();         break;       case keycodes.key_up:         display.moveselectionup();         break;       case keycodes.key_enter:       case keycodes.key_tab:         suggestion suggestion = display.getcurrentselection();         if (suggestion == null) {           display.hidesuggestions();         } else {           setnewselection(suggestion);         }         break;     }     delegateevent(suggestbox.this, event);   }    public void onkeypress(keypressevent event) {     delegateevent(suggestbox.this, event);   }    public void onkeyup(keyupevent event) {     // after every user key input, refresh popup's suggestions.     refreshsuggestions();     delegateevent(suggestbox.this, event);   }    public void onvaluechange(valuechangeevent<string> event) {     delegateevent(suggestbox.this, event);   } }  textboxevents events = new textboxevents(); events.addkeyhandlersto(box); box.addvaluechangehandler(events); 

}

is possible remove handler box using handlerregistration? there nice solution extending class , overriding private method?

unfortunately method private, unless copy source directly , change method way won't able override method. think best option create instance of suggestbox , passing custom implementation of textboxbase can override event/handler behaviours. notice addeventstotextbox() hooks inner class box member variable set in constructor prior call addeventstotextbox().

something similar following:

public class mytextbox extends textbox{ ... // override handlers/events ... } 

and use instance of suggestbox:

mytextbox mybox = new mytextbox(...); suggestbox sbox = new suggestbox(oracle, mybox); 

depending on specific situation might not ideal solution in case helpful see code snippets showing use of it.

edit:

i should mention want extend subclass of textboxbase such textbox or textarea , not textboxbase directly don't have re-implement basic text input functionality of widgets.


Comments

Popular posts from this blog

apache - Add omitted ? to URLs -

redirect - bbPress Forum - rewrite to wwww.mysite prohibits login -

php - How can I stop spam on my custom forum/blog? -