Use callbacks and async processing in the demo scripts; this is important as otherwise things can get tangled up very easily.

git-svn-id: https://svn.apache.org/repos/asf/wookie/trunk@1584014 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/wookie-server/src/main/webapp/demo/wookie-connector.js b/wookie-server/src/main/webapp/demo/wookie-connector.js
index fdc06cd..9f0e62c 100644
--- a/wookie-server/src/main/webapp/demo/wookie-connector.js
+++ b/wookie-server/src/main/webapp/demo/wookie-connector.js
@@ -117,7 +117,7 @@
         });
     },
 
-    getOrCreateInstance: function(id) {
+    getOrCreateInstance: function(id, callback, element) {
     
         //
         // Use default connection if not set
@@ -130,7 +130,7 @@
         // Use default user if not set
         //
         if (Wookie.currentUser === null){
-            Wookie.setCurrentUser("test","test user",null);
+            Wookie.setCurrentUser("test","test user",null,null);
         }
         
         var key = id + ":" + Wookie.currentUser.loginName;
@@ -176,10 +176,16 @@
                     instance.height = height;
                     instance.width = width;
                     Wookie.instances[key]=instance;
+                    
+                    Wookie.setParticipant(id, callback, instance, element);
                 },
                 async: false
             });
-            
+        }
+        return Wookie.instances[key];
+    },
+    
+    setParticipant: function(id, callback, instance, element){
             var postdata = "api_key=";
             postdata = postdata + encodeURI(Wookie.connection.apiKey);
             postdata = postdata + "&nonce="+Math.random();
@@ -212,11 +218,10 @@
                     "Authorization":signature
                 },
                 success: function(data) {
+                   callback(instance, element);
                 },
                 async: false
             });
-        }
-        return Wookie.instances[key];
     },
     
     getSignature: function(method, uri, query){
diff --git a/wookie-server/src/main/webapp/demo/wookie.js b/wookie-server/src/main/webapp/demo/wookie.js
index 8d88509..45de0cb 100644
--- a/wookie-server/src/main/webapp/demo/wookie.js
+++ b/wookie-server/src/main/webapp/demo/wookie.js
@@ -87,20 +87,24 @@
 
 function showWidget(id){
     Wookie.setCurrentUser("alice","alice","/wookie/demo/alice.png", "host");
-    var widgetInstance = Wookie.getOrCreateInstance(id);
-    $('#preview_info').html('<br/>' + widgetInstance.title + '<br/>' + id);
-    $("#preview_alice_widget").html('');
-    $("#preview_alice_widget").append("<iframe src='"+widgetInstance.url+"' height='"+widgetInstance.height+"' width='"+widgetInstance.width+"'></iframe>");
-    $("#preview_alice_tile").html('');
-    $("#preview_alice_tile").append("<iframe src='"+widgetInstance.url+"' height='150' width='310'></iframe>");
-    $("#alice_url").html("<a href='" + widgetInstance.url + "' target='_blank'>Full Screen</a>");
+    
+    var title = "No title";
+    for (i in Wookie.widgets){
+       if (Wookie.widgets[i].id==id) title = Wookie.widgets[i].name;
+    }
+    
+    $('#preview_info').html('<br/>' +name + '<br/>' + id);
+    
+    Wookie.getOrCreateInstance(id, renderWidget, "#preview_alice_widget");
+    Wookie.getOrCreateInstance(id, renderWidget, "#preview_alice_tile");
     Wookie.setPreference(id, "conference-manager","true");
     
     Wookie.setCurrentUser("bob","bob","/wookie/demo/bob.png");
-    var widgetInstance = Wookie.getOrCreateInstance(id);
-    $("#preview_bob_widget").html('');
-    $("#preview_bob_widget").append("<iframe src='"+widgetInstance.url+"' height='"+widgetInstance.height+"' width='"+widgetInstance.width+"'></iframe>");
-    $("#preview_bob_tile").html('');
-    $("#preview_bob_tile").append("<iframe src='"+widgetInstance.url+"' height='150' width='310'></iframe>");
-    $("#bob_url").html("<a href='" + widgetInstance.url + "' target='_blank'>Full Screen</a>");
+    Wookie.getOrCreateInstance(id, renderWidget, "#preview_bob_widget");
+    Wookie.getOrCreateInstance(id, renderWidget, "#preview_bob_tile");
+}
+
+function renderWidget(widgetInstance, element){
+    $(element).html('');
+    $(element).append("<iframe src='"+widgetInstance.url+"' height='"+widgetInstance.height+"' width='"+widgetInstance.width+"'></iframe>");
 }