]> source.dussan.org Git - vaadin-framework.git/commitdiff
added a thinner complementary interface for HasFocus so it will be much easier to...
authorMatti Tahvonen <matti.tahvonen@itmill.com>
Thu, 15 May 2008 16:19:17 +0000 (16:19 +0000)
committerMatti Tahvonen <matti.tahvonen@itmill.com>
Thu, 15 May 2008 16:19:17 +0000 (16:19 +0000)
svn changeset:4514/svn branch:trunk

src/com/itmill/toolkit/terminal/gwt/client/ApplicationConnection.java
src/com/itmill/toolkit/terminal/gwt/client/Focusable.java [new file with mode: 0644]
src/com/itmill/toolkit/terminal/gwt/client/ui/ITextualDate.java

index 8aed987c81b7b200951d50a81738952dab61f9ce..bb15ae1a5e197bd31cdf944d8213fd98f2c13bf8 100755 (executable)
@@ -463,7 +463,12 @@ public class ApplicationConnection {
                 if (toBeFocused instanceof HasFocus) {
                     final HasFocus toBeFocusedWidget = (HasFocus) toBeFocused;
                     toBeFocusedWidget.setFocus(true);
+                } else if (toBeFocused instanceof Focusable) {
+                    ((Focusable) toBeFocused).focus();
+                } else {
+                    getConsole().log("Could not focus component");
                 }
+
             }
             if (meta.containsKey("appError")) {
                 JSONObject error = meta.get("appError").isObject();
diff --git a/src/com/itmill/toolkit/terminal/gwt/client/Focusable.java b/src/com/itmill/toolkit/terminal/gwt/client/Focusable.java
new file mode 100644 (file)
index 0000000..43d07a3
--- /dev/null
@@ -0,0 +1,16 @@
+package com.itmill.toolkit.terminal.gwt.client;
+
+/**
+ * GWT's HasFocus is way too overkill for just receiving focus in simple
+ * components. Toolkit uses this interface in addition to GWT's HasFocus to pass
+ * focus requests from server to actual ui widgets in browsers.
+ * 
+ * So in to make your server side focusable component receive focus on client
+ * side it must either implement this or HasFocus interface.
+ */
+public interface Focusable {
+    /**
+     * Sets focus to this widget.
+     */
+    public void focus();
+}
index 22a52d5af25d079ba5911e129abe9ffb9c295d99..560e02f822b1f08cdc5d2e04844ad0640f2b5abf 100644 (file)
@@ -9,6 +9,7 @@ import com.google.gwt.user.client.ui.ChangeListener;
 import com.google.gwt.user.client.ui.Widget;\r
 import com.itmill.toolkit.terminal.gwt.client.ApplicationConnection;\r
 import com.itmill.toolkit.terminal.gwt.client.ContainerResizedListener;\r
+import com.itmill.toolkit.terminal.gwt.client.Focusable;\r
 import com.itmill.toolkit.terminal.gwt.client.LocaleNotLoadedException;\r
 import com.itmill.toolkit.terminal.gwt.client.LocaleService;\r
 import com.itmill.toolkit.terminal.gwt.client.Paintable;\r
@@ -16,7 +17,7 @@ import com.itmill.toolkit.terminal.gwt.client.UIDL;
 import com.itmill.toolkit.terminal.gwt.client.Util;\r
 \r
 public class ITextualDate extends IDateField implements Paintable,\r
-        ChangeListener, ContainerResizedListener {\r
+        ChangeListener, ContainerResizedListener, Focusable {\r
 \r
     private final ITextField text;\r
 \r
@@ -252,4 +253,8 @@ public class ITextualDate extends IDateField implements Paintable,
             text.setWidth((getOffsetWidth() - getFieldExtraWidth()) + "px");\r
         }\r
     }\r
+\r
+    public void focus() {\r
+        text.setFocus(true);\r
+    }\r
 }\r