aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLeif Åstrand <leif@vaadin.com>2011-11-28 12:59:34 +0200
committerLeif Åstrand <leif@vaadin.com>2011-11-28 12:59:34 +0200
commitcb5f080e5337c081f22eea86c0cf170ef88a2257 (patch)
treea80548e5b83d0128e7a7d8cee2669f87b0bd0a9a /src
parent55948aefe8ead5054a83ec84d2e3624ffc1e7427 (diff)
downloadvaadin-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.java50
-rw-r--r--src/com/vaadin/terminal/gwt/client/ApplicationConnection.java5
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();
}
}