8fe45ed4a0f4d1b8317c1182379a6cc5f4791094
[ira/wip.git] / swat / desktop / index.esp
1 <% 
2 /*** Reg stuff ***/
3 libinclude("base.js");
4 libinclude("winreg.js");
5 libinclude("server_call.js");
6
7 /* 
8    server side call to return a listing of elements in a winreg path
9 */
10 function enum_path(binding, path) {
11         printf("enum_path(%s, %s)\n", binding, path);
12         var reg = winreg_init();
13         security_init(reg);
14
15         reg.credentials = session.authinfo.credentials;
16
17         var status = reg.connect(binding);
18         if (status.is_ok != true) {
19                 printVars(status);
20                 return undefined;
21         }
22         var list = winreg_enum_path(reg, path);
23         return list;
24 }
25
26 /* register a call for clients to make */
27 var call = servCallObj();
28 call.add('enum_path', enum_path);
29
30 /* run the function that was asked for */
31 call.run();
32 /** endReg stuff *****/
33
34         page_header("desktop", "Virtual Desktop Design Test", "desktop");
35 %>
36
37 <script type="text/javascript" src="/scripting/client/encoder.js"></script>
38 <script type="text/javascript" src="/scripting/client/call.js"></script>
39
40 <script type="text/javascript">
41
42 function folder_list(fParent, list) {
43         var i;
44         fParent.populated = true;
45         fParent.removeAll();
46         for (i=0;i<list.length;i++) {
47                 var fChild;
48                 fChild = new QxTreeFolder(list[i]);
49                 fParent.add(fChild);
50                 fChild.binding = fParent.binding;
51                 if (fParent.reg_path == '\\\\') {
52                         fChild.reg_path = list[i];
53                 } else {
54                         fChild.reg_path = fParent.reg_path + '\\\\' + list[i];
55                 }
56                 fChild.add(new QxTreeFolder('Working ...'));
57                 fChild.addEventListener("click", function() { 
58                         var el = this; folder_click(el); 
59                 });
60                 fParent.setOpen(1);
61         }
62 }
63
64 function folder_click(node) {
65         if (!node.populated) {
66                 server_call_url("@@request.REQUEST_URI", 'enum_path', 
67                             function(list) { folder_list(node, list); }, 
68                             node.binding, node.reg_path);
69         }
70 }
71
72 /* return a registry tree for the given server */
73 function registry_tree(binding) {
74       var tree = new QxTree("registry: " + binding);
75       tree.binding = binding;
76       tree.reg_path = "\\\\";
77       tree.populated = false;
78       with(tree)
79       {
80         setBackgroundColor(255);
81         setBorder(QxBorder.presets.inset);
82         setOverflow("scroll");
83         setStyleProperty("padding", "2px");
84         setWidth(400);
85         setHeight(400);
86         setTop(20);
87       }
88       tree.addEventListener("click", function() { 
89               var el = this; folder_click(el); 
90       });
91       return tree;
92 }
93
94 /*** init the page for qooxdoo ***/
95 window.application.main = function()
96 {
97   // Don't declare local with var
98   doc = this.getClientWindow().getClientDocument();
99 }
100
101 function showReg()
102 {
103     var inlineWidget = new QxInline;
104     var fieldSet = new QxFieldSet("Registry");
105     var binding = "ncalrpc:";
106
107     with(fieldSet)
108     {
109             setWidth("40%");
110             setMinHeight(500);
111             setBottom(48);
112             setMinWidth(500);
113                 setBackgroundColor("#FFF");
114     };
115
116     var gl = new QxGridLayout("auto,auto,auto,auto,auto", "100%");
117     gl.setEdge(0);
118     gl.setCellPaddingTop(3);
119     gl.setCellPaddingBottom(3);
120
121         inlineWidget.add(fieldSet);
122
123     var t = registry_tree(binding);
124
125     function change_binding(e) {
126             binding = e.getNewValue();
127             srv_printf("changed binding to %s\\n", binding);
128             gl.remove(t);
129             t = registry_tree(binding);
130             gl.add(t, { row : 2, col : 1 });
131     }
132
133     var b = new QxTextField(binding);
134     b.addEventListener("changeText", change_binding);
135
136     gl.add(b, { row : 1, col : 1 });
137     gl.add(t, { row : 2, col : 1 });
138
139     fieldSet.add(gl);
140     inlineWidget.add(fieldSet);
141     doc.add(inlineWidget, "canvas");
142
143     w1.setVisible(false);
144 }
145
146 function startSwat()
147 {
148   // Don't declare local with var (for now)
149   w1 = new QxWindow("Welcome to SWAT.");
150   w1.setSpace(100, 100, 100, 100);
151   doc.add(w1);
152
153   var btn1 = new QxButton("View Registry");
154   btn1.set({ top: 20, left : 30 });
155   btn1.addEventListener("click", showReg)
156   w1.add(btn1);
157
158   w1.setVisible(true);
159 }
160 </script>
161
162 <div id="canvas" style="overflow:hidden;position:static;margin-top:38px;margin-left:10px;margin-right:700px;width:700px"></div>
163
164 <div id="toolbar">
165         <h3><a href="javascript:startSwat()">SWAT (Start)</a></h3>
166 </div>
167
168 <% page_footer(); %>