diff options
author | Matti Tahvonen <matti.tahvonen@itmill.com> | 2008-05-15 16:19:17 +0000 |
---|---|---|
committer | Matti Tahvonen <matti.tahvonen@itmill.com> | 2008-05-15 16:19:17 +0000 |
commit | c25413a275688fe695cc2f1669563200ec8f9142 (patch) | |
tree | 4d128236e86d55fdacd71620f31f143efe216d31 /src | |
parent | ee4013ff918754d0e3f60092d251f6db65bb7dea (diff) | |
download | vaadin-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')
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);
+ }
}
|