--- /dev/null
+package com.vaadin.terminal.gwt.client.ui;\r
+\r
+import com.google.gwt.event.dom.client.BlurEvent;\r
+import com.google.gwt.event.dom.client.BlurHandler;\r
+import com.google.gwt.event.dom.client.FocusEvent;\r
+import com.google.gwt.event.dom.client.FocusHandler;\r
+import com.google.gwt.event.dom.client.HasBlurHandlers;\r
+import com.google.gwt.event.dom.client.HasFocusHandlers;\r
+import com.google.gwt.event.dom.client.HasKeyDownHandlers;\r
+import com.google.gwt.event.dom.client.HasKeyPressHandlers;\r
+import com.google.gwt.event.dom.client.KeyDownEvent;\r
+import com.google.gwt.event.dom.client.KeyDownHandler;\r
+import com.google.gwt.event.dom.client.KeyPressEvent;\r
+import com.google.gwt.event.dom.client.KeyPressHandler;\r
+import com.google.gwt.event.shared.HandlerRegistration;\r
+import com.google.gwt.user.client.ui.FlowPanel;\r
+import com.google.gwt.user.client.ui.impl.FocusImpl;\r
+import com.vaadin.terminal.gwt.client.Focusable;\r
+\r
+public class FocusableFlowPanel extends FlowPanel implements HasFocusHandlers,\r
+ HasBlurHandlers, HasKeyDownHandlers, HasKeyPressHandlers, Focusable {\r
+\r
+ /**\r
+ * Constructor\r
+ */\r
+ public FocusableFlowPanel() {\r
+ // make focusable, as we don't need access key magic we don't need to\r
+ // use FocusImpl.createFocusable\r
+ getElement().setTabIndex(0);\r
+ }\r
+\r
+ /*\r
+ * (non-Javadoc)\r
+ * \r
+ * @see\r
+ * com.google.gwt.event.dom.client.HasFocusHandlers#addFocusHandler(com.\r
+ * google.gwt.event.dom.client.FocusHandler)\r
+ */\r
+ public HandlerRegistration addFocusHandler(FocusHandler handler) {\r
+ return addDomHandler(handler, FocusEvent.getType());\r
+ }\r
+\r
+ /*\r
+ * (non-Javadoc)\r
+ * \r
+ * @see\r
+ * com.google.gwt.event.dom.client.HasBlurHandlers#addBlurHandler(com.google\r
+ * .gwt.event.dom.client.BlurHandler)\r
+ */\r
+ public HandlerRegistration addBlurHandler(BlurHandler handler) {\r
+ return addDomHandler(handler, BlurEvent.getType());\r
+ }\r
+\r
+ /*\r
+ * (non-Javadoc)\r
+ * \r
+ * @see\r
+ * com.google.gwt.event.dom.client.HasKeyDownHandlers#addKeyDownHandler(\r
+ * com.google.gwt.event.dom.client.KeyDownHandler)\r
+ */\r
+ public HandlerRegistration addKeyDownHandler(KeyDownHandler handler) {\r
+ return addDomHandler(handler, KeyDownEvent.getType());\r
+ }\r
+\r
+ /*\r
+ * (non-Javadoc)\r
+ * \r
+ * @see\r
+ * com.google.gwt.event.dom.client.HasKeyPressHandlers#addKeyPressHandler\r
+ * (com.google.gwt.event.dom.client.KeyPressHandler)\r
+ */\r
+ public HandlerRegistration addKeyPressHandler(KeyPressHandler handler) {\r
+ return addDomHandler(handler, KeyPressEvent.getType());\r
+ }\r
+\r
+ /**\r
+ * Sets/Removes the keyboard focus to the panel.\r
+ * \r
+ * @param focus\r
+ * If set to true then the focus is moved to the panel, if set to\r
+ * false the focus is removed\r
+ */\r
+ public void setFocus(boolean focus) {\r
+ if (focus) {\r
+ FocusImpl.getFocusImplForPanel().focus(getElement());\r
+ } else {\r
+ FocusImpl.getFocusImplForPanel().blur(getElement());\r
+ }\r
+ }\r
+\r
+ /**\r
+ * Focus the panel\r
+ */\r
+ public void focus() {\r
+ setFocus(true);\r
+ }\r
+}
\ No newline at end of file