aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/com/vaadin/terminal/gwt/client/ui/VCheckBox.java35
1 files changed, 35 insertions, 0 deletions
diff --git a/src/com/vaadin/terminal/gwt/client/ui/VCheckBox.java b/src/com/vaadin/terminal/gwt/client/ui/VCheckBox.java
index 3bd6f656f2..389c2210d3 100644
--- a/src/com/vaadin/terminal/gwt/client/ui/VCheckBox.java
+++ b/src/com/vaadin/terminal/gwt/client/ui/VCheckBox.java
@@ -4,12 +4,17 @@
package com.vaadin.terminal.gwt.client.ui;
+import com.google.gwt.dom.client.InputElement;
+import com.google.gwt.dom.client.LabelElement;
+import com.google.gwt.dom.client.Node;
+import com.google.gwt.dom.client.NodeList;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.Element;
import com.google.gwt.user.client.Event;
import com.vaadin.terminal.gwt.client.ApplicationConnection;
+import com.vaadin.terminal.gwt.client.BrowserInfo;
import com.vaadin.terminal.gwt.client.Paintable;
import com.vaadin.terminal.gwt.client.UIDL;
import com.vaadin.terminal.gwt.client.Util;
@@ -102,6 +107,36 @@ public class VCheckBox extends com.google.gwt.user.client.ui.CheckBox implements
}
@Override
+ public void setText(String text) {
+ super.setText(text);
+ if (BrowserInfo.get().isIE() && BrowserInfo.get().getIEVersion() < 8) {
+
+ boolean breakLink = text == null || "".equals(text);
+
+ // break or create link between label element and checkbox, to
+ // enable native focus outline around checkbox element itself, if
+ // caption is not present
+ NodeList<Node> childNodes = getElement().getChildNodes();
+ String id = null;
+ for (int i = 0; i < childNodes.getLength(); i++) {
+ Node item = childNodes.getItem(i);
+ if (item.getNodeName().toLowerCase().equals("input")) {
+ InputElement input = (InputElement) item;
+ id = input.getId();
+ }
+ if (item.getNodeName().toLowerCase().equals("label")) {
+ LabelElement label = (LabelElement) item;
+ if (breakLink) {
+ label.setHtmlFor("");
+ } else {
+ label.setHtmlFor(id);
+ }
+ }
+ }
+ }
+ }
+
+ @Override
public void onBrowserEvent(Event event) {
if (icon != null && (event.getTypeInt() == Event.ONCLICK)
&& (DOM.eventGetTarget(event) == icon.getElement())) {