diff options
author | Leif Åstrand <leif@vaadin.com> | 2011-11-28 12:59:34 +0200 |
---|---|---|
committer | Leif Åstrand <leif@vaadin.com> | 2011-11-28 12:59:34 +0200 |
commit | cb5f080e5337c081f22eea86c0cf170ef88a2257 (patch) | |
tree | a80548e5b83d0128e7a7d8cee2669f87b0bd0a9a /src | |
parent | 55948aefe8ead5054a83ec84d2e3624ffc1e7427 (diff) | |
download | vaadin-framework-cb5f080e5337c081f22eea86c0cf170ef88a2257.tar.gz vaadin-framework-cb5f080e5337c081f22eea86c0cf170ef88a2257.zip |
Rework bootstrap to support loading widgetset without application
Diffstat (limited to 'src')
-rw-r--r-- | src/com/vaadin/terminal/gwt/client/ApplicationConfiguration.java | 50 | ||||
-rw-r--r-- | src/com/vaadin/terminal/gwt/client/ApplicationConnection.java | 5 |
2 files changed, 21 insertions, 34 deletions
diff --git a/src/com/vaadin/terminal/gwt/client/ApplicationConfiguration.java b/src/com/vaadin/terminal/gwt/client/ApplicationConfiguration.java index 854deb6e84..75866ce646 100644 --- a/src/com/vaadin/terminal/gwt/client/ApplicationConfiguration.java +++ b/src/com/vaadin/terminal/gwt/client/ApplicationConfiguration.java @@ -13,6 +13,8 @@ import com.google.gwt.core.client.GWT; import com.google.gwt.core.client.GWT.UncaughtExceptionHandler; import com.google.gwt.core.client.JavaScriptObject; import com.google.gwt.core.client.JsArrayString; +import com.google.gwt.core.client.Scheduler; +import com.google.gwt.core.client.Scheduler.ScheduledCommand; import com.google.gwt.user.client.Command; import com.google.gwt.user.client.Timer; import com.vaadin.terminal.gwt.client.ui.VUnknownComponent; @@ -217,40 +219,23 @@ public class ApplicationConfiguration implements EntryPoint { } - /** - * Starts the next unstarted application. The WidgetSet should call this - * once to start the first application; after that, each application should - * call this once it has started. This ensures that the applications are - * started synchronously, which is neccessary to avoid session-id problems. - * - * @return true if an unstarted application was found - */ - public static boolean startNextApplication() { - String applicationId = getNextUnstartedApplicationId(GWT - .getModuleName()); - if (applicationId != null) { - ApplicationConfiguration appConf = getConfigFromDOM(applicationId); - ApplicationConnection a = GWT.create(ApplicationConnection.class); - a.init(widgetSet, appConf); - a.start(); - runningApplications.add(a); - return true; - } else { - deferredWidgetLoader = new DeferredWidgetLoader(); - return false; - } + public static void startApplication(final String applicationId) { + Scheduler.get().scheduleDeferred(new ScheduledCommand() { + public void execute() { + ApplicationConfiguration appConf = getConfigFromDOM(applicationId); + ApplicationConnection a = GWT + .create(ApplicationConnection.class); + a.init(widgetSet, appConf); + a.start(); + runningApplications.add(a); + } + }); } public static List<ApplicationConnection> getRunningApplications() { return runningApplications; } - private native static String getNextUnstartedApplicationId( - String widgetsetName) - /*-{ - return $wnd.vaadin.popWidgetsetApp(widgetsetName); - }-*/; - private native static JsoConfiguration getJsoConfiguration(String appId) /*-{ return $wnd.vaadin.getApp(appId); @@ -447,9 +432,16 @@ public class ApplicationConfiguration implements EntryPoint { } }); - startNextApplication(); + registerCallback(GWT.getModuleName()); + deferredWidgetLoader = new DeferredWidgetLoader(); } + public native static void registerCallback(String widgetsetName) + /*-{ + var callbackHandler = @com.vaadin.terminal.gwt.client.ApplicationConfiguration::startApplication(Ljava/lang/String;); + $wnd.vaadin.registerWidgetset(widgetsetName, callbackHandler); + }-*/; + /** * Checks if client side is in debug mode. Practically this is invoked by * adding ?debug parameter to URI. diff --git a/src/com/vaadin/terminal/gwt/client/ApplicationConnection.java b/src/com/vaadin/terminal/gwt/client/ApplicationConnection.java index 8f745bba80..09b3c075df 100644 --- a/src/com/vaadin/terminal/gwt/client/ApplicationConnection.java +++ b/src/com/vaadin/terminal/gwt/client/ApplicationConnection.java @@ -459,10 +459,6 @@ public class ApplicationConnection { public void onError(Request request, Throwable exception) { showCommunicationError(exception.getMessage()); endRequest(); - if (!applicationRunning) { - // start failed, let's try to start the next app - ApplicationConfiguration.startNextApplication(); - } } public void onResponseReceived(Request request, @@ -535,7 +531,6 @@ public class ApplicationConnection { } else { applicationRunning = true; handleWhenCSSLoaded(jsonText, json); - ApplicationConfiguration.startNextApplication(); } } |