import com.google.gwt.user.client.WindowCloseListener;
import com.google.gwt.user.client.impl.HTTPRequestImpl;
import com.google.gwt.user.client.ui.FocusWidget;
-import com.google.gwt.user.client.ui.HasFocus;
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.Widget;
import com.itmill.toolkit.terminal.gwt.client.ui.Field;
/** List of pending variable change bursts that must be submitted in order */
private final Vector pendingVariableBursts = new Vector();
-
+
/** Timer for automatic refirect to SessionExpiredURL */
- private Timer redirectTimer;
-
- /** redirectTimer scheduling interval in seconds */
- private int sessionExpirationInterval;
+ private Timer redirectTimer;
+
+ /** redirectTimer scheduling interval in seconds */
+ private int sessionExpirationInterval;
public ApplicationConnection(WidgetSet widgetSet,
ApplicationConfiguration cnf) {
paintableToId.clear();
}
if (meta.containsKey("timedRedirect")) {
- final JSONObject timedRedirect = meta.get("timedRedirect").isObject();
- redirectTimer = new Timer() {
- public void run() {
- redirect(timedRedirect.get("url").isString().stringValue());
+ final JSONObject timedRedirect = meta.get("timedRedirect")
+ .isObject();
+ redirectTimer = new Timer() {
+ public void run() {
+ redirect(timedRedirect.get("url").isString()
+ .stringValue());
}
- };
- sessionExpirationInterval = Integer.parseInt(timedRedirect.get("interval").toString());
+ };
+ sessionExpirationInterval = Integer.parseInt(timedRedirect.get(
+ "interval").toString());
}
}
if (redirectTimer != null) {
Util.componentSizeUpdated(sizeUpdatedWidgets);
if (meta != null) {
- if (meta.containsKey("focus")) {
- final String focusPid = meta.get("focus").isString()
- .stringValue();
- final Paintable toBeFocused = getPaintable(focusPid);
- 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();
JSONValue val = error.get("caption");
import java.util.HashSet;
import java.util.Iterator;
+import com.google.gwt.user.client.Command;
import com.google.gwt.user.client.DOM;
+import com.google.gwt.user.client.DeferredCommand;
import com.google.gwt.user.client.Element;
import com.google.gwt.user.client.Event;
import com.google.gwt.user.client.Timer;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.WindowCloseListener;
import com.google.gwt.user.client.WindowResizeListener;
+import com.google.gwt.user.client.ui.HasFocus;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.SimplePanel;
import com.google.gwt.user.client.ui.Widget;
import com.itmill.toolkit.terminal.gwt.client.ApplicationConnection;
import com.itmill.toolkit.terminal.gwt.client.BrowserInfo;
+import com.itmill.toolkit.terminal.gwt.client.Focusable;
import com.itmill.toolkit.terminal.gwt.client.Paintable;
import com.itmill.toolkit.terminal.gwt.client.UIDL;
import com.itmill.toolkit.terminal.gwt.client.Util;
w.hide();
}
+ if (uidl.hasAttribute("focused")) {
+ final String focusPid = uidl.getStringAttribute("focused");
+ // set focused component when render phase is finished
+ DeferredCommand.addCommand(new Command() {
+ public void execute() {
+ final Paintable toBeFocused = connection
+ .getPaintable(focusPid);
+
+ /*
+ * Two types of Widgets can be focused, either implementing
+ * GWT HasFocus of a thinner Toolkit specific Focusable
+ * interface.
+ */
+ if (toBeFocused instanceof HasFocus) {
+ final HasFocus toBeFocusedWidget = (HasFocus) toBeFocused;
+ toBeFocusedWidget.setFocus(true);
+ } else if (toBeFocused instanceof Focusable) {
+ ((Focusable) toBeFocused).focus();
+ } else {
+ ApplicationConnection.getConsole().log(
+ "Could not focus component");
+ }
+ }
+ });
+ }
+
// Add window listeners on first paint, to prevent premature
// variablechanges
if (firstPaint) {
connection.sendPendingVariableChangesSync();
}
- private static native void focusElement(Element e)
+ private static native void focusElement(Element e)
/*-{
e.focus();
}-*/;