r19141: add a reasonable subset of the qooxdoo runtime environment, and example appli...
[jra/samba/.git] / swat / apps / qooxdoo-examples / test / RPC_5.html
1 <html>
2 <head>
3   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
4   <title>qooxdoo &raquo; Demo</title>
5   <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
6   <!--[if IE]>
7   <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
8   <![endif]-->
9   <script type="text/javascript" src="../../script/qx.js"></script>
10   <script type="text/javascript" src=".qxrpc"></script>
11   <!-- With the above script, the service URL for a J2EE application can be
12        automatically determined, no matter on what path it's deployed. -->
13 </head>
14 <body>
15   <script type="text/javascript" src="../../script/layout.js"></script>
16
17   <div id="demoDescription">
18     <p>Test for RPC functionality.</p>
19     <p>
20       This test calls remote function getParams(), passing a defined field in
21       an object, and an undefined field in an object.  Depending on the
22       setting of qx.core.Settings.jsonEncodeUndefined, the undefined field
23       should or should not be sent.  We also send some (ignored) server data
24       in this test, if requested.
25     </p>
26   </div>
27
28   <script type="text/javascript">
29 //    qx.Settings.setCustomOfClass("qx.io.remote.RemoteExchange", "enableDebug", true);
30     qx.Settings.setCustomOfClass("qx.io.Json", "enableDebug", true);
31
32     qx.core.Init.getInstance().defineMain(function() {
33       var layout1 = new qx.ui.layout.VerticalBoxLayout();
34       layout1.setTop(40);
35       layout1.setLeft(20);
36       layout1.setSpacing(4);
37
38       var encodeUndefined = new qx.ui.form.CheckBox("Encode 'undefined' as null");
39       layout1.add(encodeUndefined);
40
41       var sendServerData = new qx.ui.form.CheckBox("Send server data");
42       layout1.add(sendServerData);
43
44       layout1.add(new qx.ui.basic.Label("URL:"));
45       var defaultURL = qx.io.remote.Rpc.makeServerURL();
46       if (defaultURL == null) {
47         defaultURL = "/services/";
48       }
49       var url = new qx.ui.form.TextField(defaultURL);
50       layout1.add(url);
51
52       layout1.add(new qx.ui.basic.Label("Service:"));
53       var service = new qx.ui.form.TextField("qooxdoo.test");
54       layout1.add(service);
55
56       var start = new qx.ui.form.Button("Start test");
57       layout1.add(start);
58
59       // We'll be setting url and service upon execute; no need to do it now.
60       var rpc = new qx.io.remote.Rpc();
61       rpc.setTimeout(10000);
62       var mycall = null;
63
64       start.addEventListener("execute", function() {
65         // Allow the user to reset the URL and Service on each call
66         rpc.setUrl(url.getValue());
67         rpc.setServiceName(service.getValue());
68         rpc.setCrossDomain(false);
69
70         if (sendServerData.isChecked()) {
71           rpc.setServerData(new Date());
72         } else {
73           rpc.setServerData(undefined);
74         }
75
76         qx.Settings.setCustomOfClass("qx.io.Json", "encodeUndefined",
77                                      encodeUndefined.isChecked());
78
79         try {
80           obj = new Object();
81           obj.def = "defined";
82           var result = rpc.callSync("getParams", obj.undef, obj.def);
83           alert("Sync result: " + result);
84         } catch (ex) {
85           alert("Sync exception: " + ex);
86         }
87       });
88
89       var d = qx.ui.core.ClientDocument.getInstance();
90       d.add(layout1);
91     });
92   </script>
93 </body>
94 </html>