From 751196e9310ec278cac92ce5b5ff5d5607f184eb Mon Sep 17 00:00:00 2001 From: John Alhroos Date: Mon, 28 Jun 2010 11:43:08 +0000 Subject: [PATCH] Fix for #4567 svn changeset:13940/svn branch:6.4 --- .../terminal/gwt/client/ui/VFormLayout.java | 25 ++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/src/com/vaadin/terminal/gwt/client/ui/VFormLayout.java b/src/com/vaadin/terminal/gwt/client/ui/VFormLayout.java index a1a6dd6f2f..4b0907a52b 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/VFormLayout.java +++ b/src/com/vaadin/terminal/gwt/client/ui/VFormLayout.java @@ -8,6 +8,8 @@ import java.util.HashMap; import java.util.Iterator; import java.util.Set; +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; @@ -17,6 +19,7 @@ import com.google.gwt.user.client.ui.SimplePanel; import com.google.gwt.user.client.ui.Widget; import com.vaadin.terminal.gwt.client.ApplicationConnection; import com.vaadin.terminal.gwt.client.Container; +import com.vaadin.terminal.gwt.client.Focusable; import com.vaadin.terminal.gwt.client.Paintable; import com.vaadin.terminal.gwt.client.RenderSpace; import com.vaadin.terminal.gwt.client.StyleConstants; @@ -46,7 +49,7 @@ public class VFormLayout extends SimplePanel implements Container { setWidget(table); } - public class VFormLayoutTable extends FlexTable { + public class VFormLayoutTable extends FlexTable implements ClickHandler { private static final int COLUMN_CAPTION = 0; private static final int COLUMN_ERRORFLAG = 1; @@ -86,6 +89,7 @@ public class VFormLayout extends SimplePanel implements Container { Caption caption = componentToCaption.get(p); if (caption == null) { caption = new Caption(p, client); + caption.addClickHandler(this); componentToCaption.put(p, caption); } ErrorFlag error = componentToError.get(p); @@ -166,6 +170,7 @@ public class VFormLayout extends SimplePanel implements Container { if (oldComponent == candidate) { final Caption newCap = new Caption( (Paintable) newComponent, client); + newCap.addClickHandler(this); componentToCaption.put((Paintable) newComponent, newCap); ErrorFlag error = componentToError.get(newComponent); if (error == null) { @@ -213,6 +218,24 @@ public class VFormLayout extends SimplePanel implements Container { return width; } + /* + * (non-Javadoc) + * + * @see + * com.google.gwt.event.dom.client.ClickHandler#onClick(com.google.gwt + * .event.dom.client.ClickEvent) + */ + public void onClick(ClickEvent event) { + Caption caption = (Caption) event.getSource(); + if (caption.getOwner() != null) { + if (caption.getOwner() instanceof Focusable) { + ((Focusable) caption.getOwner()).focus(); + } else if (caption.getOwner() instanceof com.google.gwt.user.client.ui.Focusable) { + ((com.google.gwt.user.client.ui.Focusable) caption + .getOwner()).setFocus(true); + } + } + } } public void updateFromUIDL(UIDL uidl, ApplicationConnection client) { -- 2.39.5