Я создал свои собственные виджеты gwt, которые состоят из TextLabel и изображения. Мне нужно, чтобы этот виджет был настраиваемым. Я расширяю этот виджет от интерфейса hasFocusHandler, focusable и blurhandler. Ничего не работает. Я не получаю ни фокуса, ни размытия, когда я нажимаю на или вне виджета. Что мне делать?Как создать фокусируемый виджет
Мой код:
public class MyWidget extends ComplexPanel implements HasFocusHandlers, HasBlurHandlers, HasClickHandlers, Focusable{
private Icon icon = new Icon();
private TextNode text = new TextNode("");
private static final FocusImpl impl = FocusImpl.getFocusImplForWidget();
protected static FocusImpl getFocusImpl() {
return impl;
}
public HandlerRegistration addClickHandler(ClickHandler handler) {
return addDomHandler(handler, ClickEvent.getType());
}
@Override
public HandlerRegistration addBlurHandler(BlurHandler handler) {
return addDomHandler(handler,BlurEvent.getType());
}
@Override
public HandlerRegistration addFocusHandler(FocusHandler handler) {
return addDomHandler(handler, FocusEvent.getType());
}
@Override
public void onBrowserEvent(Event event) {
switch (DOM.eventGetType(event)) {
case Event.ONCLICK:
if (isEnabled()) {
super.onBrowserEvent(event);
}
break;
default:
super.onBrowserEvent(event);
break;
}
}
public int getTabIndex() {
return impl.getTabIndex(getElement());
}
@Override
public void setAccessKey(char key) {
DOM.setElementProperty(getElement(), "accessKey", "" + key);
}
@Override
public void setFocus(boolean focused) {
if (focused) {
impl.focus(getElement());
} else {
impl.blur(getElement());
}
}
@Override
public void setTabIndex(int index) {
impl.setTabIndex(getElement(), index);
}
@Override
protected void onAttach() {
super.onAttach();
int tabIndex = getTabIndex();
if (-1 == tabIndex) {
setTabIndex(0);
}
}
}
Моя реализация не работает (я не получаю вызов OnFocus, когда я нажимаю на MyWidget)
mywidget.addFocusHandler(new FocusHandler()
{
@Override
public void onFocus(FocusEvent event) {
//DO SOMETHING
}
});