--- /dev/null
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" style="width:100%;height:100%;border:0;margin:0;">
+<head>
+<title>IT Mill Toolkit 5</title>
+<script type="text/javascript">
+ var itmill = {
+ toolkitConfigurations: {
+ 'fb' :{
+ appUri:'/FeatureBrowser',
+ pathInfo: '/',
+ themeUri: '/ITMILL/themes/example',
+ versionInfo : {toolkitVersion:"5.9.9-INTERNAL-NONVERSIONED-DEBUG-BUILD",applicationVersion:"NONVERSIONED"}
+ },
+ 'calc' :{
+ appUri:'/Calc',
+ pathInfo: '/',
+ themeUri: '/ITMILL/themes/example',
+ versionInfo : {toolkitVersion:"5.9.9-INTERNAL-NONVERSIONED-DEBUG-BUILD",applicationVersion:"NONVERSIONED"}
+ },
+ 'hello' :{
+ appUri:'/HelloWorld',
+ pathInfo: '/',
+ themeUri: '/ITMILL/themes/example',
+ versionInfo : {toolkitVersion:"5.9.9-INTERNAL-NONVERSIONED-DEBUG-BUILD",applicationVersion:"NONVERSIONED"}
+ }
+
+
+ }};
+</script>
+<script language='javascript' src='/ITMILL/widgetsets/com.itmill.toolkit.terminal.gwt.DefaultWidgetSet/com.itmill.toolkit.terminal.gwt.DefaultWidgetSet.nocache.js'></script>
+<link REL="stylesheet" TYPE="text/css" HREF="/ITMILL/themes/example/styles.css">
+</head>
+<body class="i-generated-body">
+ <iframe id="__gwt_historyFrame" style="width:0;height:0;border:0;overflow:hidden" src="javascript:false"></iframe>
+
+ <p>Multiple toolkits per html file test page</p>
+
+ <div id="fb" style="height:400px;border:2px solid red;margin:0"></div>
+ <div id="calc" style="border:2px solid green;margin:0"></div>
+ <div id="hello" style="border:2px solid blue;margin:0"></div>
+ </body>
+</html>
\ No newline at end of file
--- /dev/null
+package com.itmill.toolkit.terminal.gwt.client;
+
+import java.util.ArrayList;
+
+import com.google.gwt.core.client.JavaScriptObject;
+
+public class ApplicationConfiguration {
+
+ private String id;
+ private String themeUri;
+ private String pathInfo;
+ private String appUri;
+ private JavaScriptObject versionInfo;
+
+ public String getRootPanelId() {
+ return id;
+ }
+
+ public String getApplicationUri() {
+ return appUri;
+ }
+
+ public String getPathInfo() {
+ return pathInfo;
+ }
+
+ public String getThemeUri() {
+ return themeUri;
+ }
+
+ public void setAppId(String appId) {
+ id = appId;
+ }
+
+ private native void loadFromDOM()
+ /*-{
+
+ var id = this.@com.itmill.toolkit.terminal.gwt.client.ApplicationConfiguration::id;
+ if($wnd.itmill.toolkitConfigurations && $wnd.itmill.toolkitConfigurations[id]) {
+ var jsobj = $wnd.itmill.toolkitConfigurations[id];
+ var uri = jsobj.appUri;
+ if(uri[uri.lenght -1] != "/") {
+ uri = uri + "/";
+ }
+ this.@com.itmill.toolkit.terminal.gwt.client.ApplicationConfiguration::appUri = uri;
+ this.@com.itmill.toolkit.terminal.gwt.client.ApplicationConfiguration::pathInfo = jsobj.pathInfo;
+ this.@com.itmill.toolkit.terminal.gwt.client.ApplicationConfiguration::themeUri = jsobj.themeUri;
+ if(jsobj.versionInfo) {
+ this.@com.itmill.toolkit.terminal.gwt.client.ApplicationConfiguration::versionInfo = jsobj.versionInfo;
+ }
+
+ } else {
+ $wnd.alert("Toolkit app failed to initialize: " + this.id);
+ }
+
+ }-*/;
+
+ public native static void loadAppIdListFromDOM(ArrayList list)
+ /*-{
+
+ var j;
+ for(j in $wnd.itmill.toolkitConfigurations) {
+ list.@java.util.Collection::add(Ljava/lang/Object;)(j);
+ }
+ }-*/;
+
+ public static ApplicationConfiguration getConfigFromDOM(String appId) {
+ ApplicationConfiguration conf = new ApplicationConfiguration();
+ conf.setAppId(appId);
+ conf.loadFromDOM();
+ return conf;
+ }
+
+}
public static final String VAR_FIELD_SEPARATOR = "\u001f";
- private final String appUri;
-
private final HashMap resourcesMap = new HashMap();
private static Console console;
private int activeRequests = 0;
- public ApplicationConnection(WidgetSet widgetSet) {
+ private String applicationUri;
+
+ private ApplicationConfiguration configuration;
+
+ public ApplicationConnection(WidgetSet widgetSet,
+ ApplicationConfiguration cnf) {
this.widgetSet = widgetSet;
- String tmp = getAppUri();
- if (!tmp.endsWith("/")) {
- appUri = tmp + "/";
- } else {
- appUri = tmp;
- }
+ configuration = cnf;
if (isDebugMode()) {
console = new DebugConsole(this);
initializeClientHooks();
// TODO remove hard coded id name
- view = new IView("itmill-ajax-window");
+ view = new IView(cnf.getRootPanelId());
makeUidlRequest("repaintAll=1");
applicationRunning = true;
* <li><code>itmill.forceSync()</code> sends pending variable changes, in
* effect synchronizing the server and client state.</li>
* </ul>
+ *
+ * TODO make this multi-app aware
*/
private native void initializeClientHooks()
/*-{
return re.test(uri);
}-*/;
- public native String getAppUri()
- /*-{
- var u = $wnd.itmill.appUri;
- if (u.indexOf("/") != 0 && u.indexOf("http") != 0) {
- var b = $wnd.location.href;
- var i = b.length-1;
- while (b.charAt(i) != "/" && i>0) i--;
- b = b.substring(0,i+1);
- u = b + u;
- }
- return u;
- }-*/;
+ public String getAppUri() {
+ return configuration.getApplicationUri();
+ };
public boolean hasActiveRequest() {
return uidlRequest.isPending();
}
- private native String getPathInfo()
- /*-{
- return $wnd.itmill.pathInfo;
- }-*/;
-
- private native String getThemeUri()
- /*-{
- return $wnd.itmill.themeUri;
- }-*/;
-
private void makeUidlRequest(String requestData) {
startRequest();
console.log("Making UIDL Request with params: " + requestData);
- final String uri = appUri + "UIDL" + getPathInfo();
+ final String uri = getAppUri() + "UIDL" + configuration.getPathInfo();
final RequestBuilder rb = new RequestBuilder(RequestBuilder.POST, uri);
rb.setHeader("Content-Type",
"application/x-www-form-urlencoded; charset=utf-8");
return null;
}
if (toolkitUri.startsWith("theme://")) {
- final String themeUri = getThemeUri();
+ final String themeUri = configuration.getThemeUri();
if (themeUri == null) {
console
.error("Theme not set: ThemeResource will not be found. ("
package com.itmill.toolkit.terminal.gwt.client;
+import java.util.ArrayList;
+import java.util.Iterator;
+
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.ui.Widget;
import com.itmill.toolkit.terminal.gwt.client.ui.IAccordion;
public class DefaultWidgetSet implements WidgetSet {
- protected ApplicationConnection appConn;
-
/**
* This is the entry point method.
*/
public void onModuleLoad() {
- appConn = new ApplicationConnection(this);
+ ArrayList appIds = new ArrayList();
+ ApplicationConfiguration.loadAppIdListFromDOM(appIds);
+ for (Iterator iterator = appIds.iterator(); iterator.hasNext();) {
+ String appId = (String) iterator.next();
+ ApplicationConfiguration appConf = ApplicationConfiguration
+ .getConfigFromDOM(appId);
+ new ApplicationConnection(this, appConf);
+ }
}
public Widget createWidget(UIDL uidl) {
+ title
+ "</title>\n"
+ "<script type=\"text/javascript\">\n"
- + " var itmill = {\n" + " appUri:'");
+ + " var itmill = {toolkitConfigurations: {'itmill-ajax-window' :{\n"
+ + " appUri:'");
final String[] urls = getAppAndWidgetUrl(request);
final String appUrl = urls[0];
page.write("\"}");
}
- page.write("\n};\n</script>\n");
+ page.write("\n}}};\n</script>\n");
boolean testingWindow = testingToolsActive
&& request.getParameter("TT") != null;