summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMatti Tahvonen <matti.tahvonen@itmill.com>2008-05-15 16:19:17 +0000
committerMatti Tahvonen <matti.tahvonen@itmill.com>2008-05-15 16:19:17 +0000
commitc25413a275688fe695cc2f1669563200ec8f9142 (patch)
tree4d128236e86d55fdacd71620f31f143efe216d31 /src
parentee4013ff918754d0e3f60092d251f6db65bb7dea (diff)
downloadvaadin-framework-c25413a275688fe695cc2f1669563200ec8f9142.tar.gz
vaadin-framework-c25413a275688fe695cc2f1669563200ec8f9142.zip
added a thinner complementary interface for HasFocus so it will be much easier to implement focusable component on client side. DateField can now be focused.
svn changeset:4514/svn branch:trunk
Diffstat (limited to 'src')
-rwxr-xr-xsrc/com/itmill/toolkit/terminal/gwt/client/ApplicationConnection.java5
-rw-r--r--src/com/itmill/toolkit/terminal/gwt/client/Focusable.java16
-rw-r--r--src/com/itmill/toolkit/terminal/gwt/client/ui/ITextualDate.java7
3 files changed, 27 insertions, 1 deletions
diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ApplicationConnection.java b/src/com/itmill/toolkit/terminal/gwt/client/ApplicationConnection.java
index 8aed987c81..bb15ae1a5e 100755
--- a/src/com/itmill/toolkit/terminal/gwt/client/ApplicationConnection.java
+++ b/src/com/itmill/toolkit/terminal/gwt/client/ApplicationConnection.java
@@ -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
index 0000000000..43d07a3ea3
--- /dev/null
+++ b/src/com/itmill/toolkit/terminal/gwt/client/Focusable.java
@@ -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();
+}
diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/ITextualDate.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/ITextualDate.java
index 22a52d5af2..560e02f822 100644
--- a/src/com/itmill/toolkit/terminal/gwt/client/ui/ITextualDate.java
+++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/ITextualDate.java
@@ -9,6 +9,7 @@ import com.google.gwt.user.client.ui.ChangeListener;
import com.google.gwt.user.client.ui.Widget;
import com.itmill.toolkit.terminal.gwt.client.ApplicationConnection;
import com.itmill.toolkit.terminal.gwt.client.ContainerResizedListener;
+import com.itmill.toolkit.terminal.gwt.client.Focusable;
import com.itmill.toolkit.terminal.gwt.client.LocaleNotLoadedException;
import com.itmill.toolkit.terminal.gwt.client.LocaleService;
import com.itmill.toolkit.terminal.gwt.client.Paintable;
@@ -16,7 +17,7 @@ import com.itmill.toolkit.terminal.gwt.client.UIDL;
import com.itmill.toolkit.terminal.gwt.client.Util;
public class ITextualDate extends IDateField implements Paintable,
- ChangeListener, ContainerResizedListener {
+ ChangeListener, ContainerResizedListener, Focusable {
private final ITextField text;
@@ -252,4 +253,8 @@ public class ITextualDate extends IDateField implements Paintable,
text.setWidth((getOffsetWidth() - getFieldExtraWidth()) + "px");
}
}
+
+ public void focus() {
+ text.setFocus(true);
+ }
}