private void rememberFocus(Event event) {
        final String eventType = event.getType();
        final EventTarget eventTarget = event.getEventTarget();
        final Element target = Element.as(eventTarget);
        if (BrowserEvents.FOCUS.equals(eventType)) {
            // Remember the focus state.
            isFocused = allowFocus(target);
        } else if (BrowserEvents.BLUR.equals(eventType)) {
            // Remember the blur state.
            isFocused = false;
        } else if (BrowserEvents.KEYDOWN.equals(eventType)) {
            // A key event indicates that we already have focus.
            isFocused = allowFocus(target);
        } else if (BrowserEvents.MOUSEDOWN.equals(eventType)
                && CellBasedWidgetImpl.get().isFocusable(Element.as(target))) {
            // If a natively focusable element was just clicked, then we must have
            // focus.
            isFocused = allowFocus(target);
        }
    }
Handle browser events. Subclasses should override
{@link #onBrowserEvent2(Event)} if they want to extend browser event
handling.

@see #onBrowserEvent2(Event)
stroom-core-client-widget/src/main/java/com/google/gwt/user/cellview/client/AbstractHasData.java