Reputation: 20313
I would like to find out, in GWT, which element currently has focus. Basically i was working on virtual keyboard in our application. All keys are working fine except tab key. If i get focused element then i can work out the tab key code.
In javascript and jquery we can get this using document.activeElement
. Hope some body will put me in right way to achieve this.
Help would be appreciated.
Upvotes: 6
Views: 8900
Reputation: 21
We can now use the Elemental library to accomplish this.
http://www.gwtproject.org/articles/elemental.html
the exact function would be
elemental.client.Browser.getDocument().getActiveElement()
Upvotes: 0
Reputation: 11
Short template:
public class IntBox extends com.google.gwt.user.client.ui.IntegerBox {
private boolean focused=false;
public IntBox(){
addFocusHandler(new FocusHandler() {
@Override
public void onFocus(FocusEvent event) {
focused=true;
}
});
addBlurHandler(new BlurHandler() {
@Override
public void onBlur(BlurEvent event) {
focused=false;
}
});
}
public boolean isFocused() {
return focused;
}
}
Upvotes: 1
Reputation: 508
The fact that it's not supported in "all browsers" is only important if your app is targeting all browsers. activeElement is currently supported by quite a few browsers Why is there no isFocused() in GWT?.
I needed something similar, I needed to know from inside a widget if it had focus. I did the following
protected native boolean hasFocus(Element element) /*-{
return element.ownerDocument.activeElement == element;
}-*/;
I needed to pass in the current element to get the proper document, just calling
document.activeElement;
did not give me the document I needed. You could likely do the same but pass in the a different element (RootPanel element maybe?) and return the in focus Element rather than a bool.
protected native Element elementInFocus(Element element) /*-{
return element.ownerDocument.activeElement;
}-*/;
Upvotes: 7
Reputation: 12420
document.activeElement
doesn't work in all browsers so there's no support for that in GWT. You could maybe use focus&blur handlers to keep track which element has it.
Upvotes: 1