3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
4 <title>qooxdoo » Demo » Sample</title>
5 <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
7 <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
9 <script type="text/javascript" src="../../script/sample.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. -->
15 <script type="text/javascript" src="../../script/layout.js"></script>
17 <div id="demoDescription">
18 <p><strong>Only works together with a RPC backend!</strong></p>
19 <p>Test for RPC functionality.</p>
21 This test calls a simple echo-style service on the server. The server
22 method accepts a string and sends back a string that says
23 "Client said: [input string]".
27 <script type="text/javascript">
28 // qx.Settings.setCustomOfClass("qx.io.remote.Exchange", "enableDebug", true);
29 qx.Settings.setCustomOfClass("qx.io.Json", "enableDebug", true);
31 qx.core.Init.getInstance().defineMain(function() {
32 var layout1 = new qx.ui.layout.VerticalBoxLayout();
35 layout1.setSpacing(4);
37 var async = new qx.ui.form.CheckBox("Asynchronous (must be checked if cross-domain is selected)");
40 var crossDomain = new qx.ui.form.CheckBox("Cross Domain");
41 layout1.add(crossDomain);
43 layout1.add(new qx.ui.basic.Label("URL:"));
44 var defaultURL = qx.io.remote.Rpc.makeServerURL();
45 if (defaultURL == null) {
46 defaultURL = "/services/";
48 var url = new qx.ui.form.TextField(defaultURL);
51 layout1.add(new qx.ui.basic.Label("Service:"));
52 var service = new qx.ui.form.TextField("qooxdoo.test");
55 layout1.add(new qx.ui.basic.Label("Method:"));
56 var method = new qx.ui.form.TextField("echo");
59 var layout2 = new qx.ui.layout.HorizontalBoxLayout();
60 layout2.setHeight("auto");
61 layout2.setVerticalChildrenAlign("middle");
62 layout2.setSpacing(4);
63 var message = new qx.ui.form.TextField("Hello");
64 message.setWidth(200);
66 var send = new qx.ui.form.Button("Send to server");
68 var abort = new qx.ui.form.Button("Abort");
69 abort.setEnabled(false);
73 // We'll be setting url and service upon execute; no need to do it now.
74 var rpc = new qx.io.remote.Rpc();
75 rpc.setTimeout(10000);
78 send.addEventListener("execute", function() {
79 // Allow the user to reset the URL and Service on each call
80 rpc.setUrl(url.getValue());
81 rpc.setServiceName(service.getValue());
82 rpc.setCrossDomain(crossDomain.isChecked());
84 if (async.isChecked()) {
85 send.setEnabled(false);
86 abort.setEnabled(true);
87 mycall = rpc.callAsync(function(result, ex, id) {
90 alert("Async(" + id + ") result: " + result);
92 alert("Async(" + id + ") exception: " + ex);
94 send.setEnabled(true);
95 abort.setEnabled(false);
96 }, method.getValue(), message.getValue());
99 var result = rpc.callSync(method.getValue(), message.getValue());
100 alert("Sync result: " + result);
102 alert("Sync exception: " + ex);
107 abort.addEventListener("execute", function() {
111 var d = qx.ui.core.ClientDocument.getInstance();