r9471: Rough first pass at a menu system. It's hacked together, but
[kai/samba.git] / swat / desktop / index.esp
1 <% 
2 /*** Reg stuff ***/
3 libinclude("base.js");
4         page_header("desktop", "Virtual Desktop Design Test", "desktop");
5 %>
6
7 <script type="text/javascript" src="/scripting/client/encoder.js"></script>
8 <script type="text/javascript" src="/scripting/client/call.js"></script>
9 <script type="text/javascript" src="/scripting/client/regedit.js"></script>
10
11 <script type="text/javascript">
12
13 /* Qooxdoo's browser sniffer doesn't distinguish IE version.
14     We'll cover IE 6 for now, but these checks need to be
15     revisited for fuller browser coverage. */
16 var browser = QxClient().engine;
17
18 function docWidth()
19 {
20   var x;
21   if (browser != "mshtml") {
22     x = window.innerWidth;
23   } else {
24     x = document.documentElement.clientWidth;
25   }
26   return x;
27 }
28
29 function docHeight()
30 {
31   var y;
32   // Less 25px to not cover the toolbar
33   if (browser != "mshtml") {
34     y = window.innerHeight - 25;
35   } else {
36     y = document.documentElement.clientHeight;
37   }
38   return y;
39 }
40
41 function showMessage(m)
42 {
43     var message = new QxWindow();
44     with(message) {
45       setWidth(300);
46       setTop("35%");
47       setLeft("35%");
48       setShowMaximize(false);
49       setShowMinimize(false);
50     }
51
52     var note = new QxAtom(m);
53     with(note) {
54       setTop(10);
55       setLeft(10);
56     }
57
58     var ok = new QxButton("OK");
59     with(ok) {
60       setLeft("42%");
61       setBottom(2);
62     }
63     ok.addEventListener("click", function() {
64       w.remove(message);
65     });
66
67     message.add(note);
68     message.add(ok);
69     w.add(message);
70     message.setVisible(true);
71 }
72
73 function showContextMenu(e)
74 {
75
76   var aboutCmd = new QxCommand();
77   aboutCmd.addEventListener("execute", function() {
78     showMessage("SWAT, the Samba Web Administration Tool.<br/>This tool is currently under development.");
79   });
80
81   var menu = new QxMenu;
82
83   var sub1 = new QxMenuButton("About SWAT", null, aboutCmd);
84   var sep = new QxMenuSeparator();
85   var sub2 = new QxMenuButton("More menu later...", null);
86
87   menu.add(sub1, sep, sub2);
88
89   menu.setLeft(e.getClientX());
90   menu.setTop(e.getClientY());
91   w.add(menu);
92   menu.setVisible(true);
93 }
94
95 /*** init the page for qooxdoo ***/
96 window.application.main = function()
97 {
98   var doc = this.getClientWindow().getClientDocument();
99   // Don't declare local with var
100   w = new QxWidget();
101   with(w) {
102     setTop(0);
103     setLeft(0);
104     setWidth(docWidth());
105     setHeight(docHeight());
106   }
107   doc.addEventListener("contextmenu", showContextMenu);
108   doc.add(w);
109
110 }
111
112 window.onresize = function() 
113 {
114   w.setWidth(docWidth());
115   w.setHeight(docHeight());
116 }
117
118 function showReg()
119 {
120         var regedit = regedit_widget("ncalrpc:");
121         w.add(regedit);
122         regedit.startup();
123 }
124
125 function startSwat()
126 {
127   var sMenu = new QxMenu;
128   with(sMenu) {
129     setWidth(150);
130     setHeight(150);
131   }
132
133   var srvMenu = new QxMenu;
134   var srv1 = new QxMenuButton("LDAP Server", null);
135   var srv2 = new QxMenuButton("CDAP Server", null);
136   var srv3 = new QxMenuButton("RPC Server", null);
137   var srv4 = new QxMenuButton("NBT Server", null);
138   var srv5 = new QxMenuButton("WINS Server", null);
139   var srv6 = new QxMenuButton("Kerberos Server", null);
140   srvMenu.add(srv1, srv2, srv3, srv4, srv5, srv6);
141   w.add(srvMenu);
142   srvMenu.setVisible(false);
143
144   var editReg = new QxCommand;
145   editReg.addEventListener("execute", function() {
146     showReg();
147   });
148
149   var espMenu = new QxMenu;
150   var esp1 = new QxMenuButton("Registry Editor", null, editReg);
151   espMenu.add(esp1);
152   w.add(espMenu);
153   espMenu.setVisible(false);
154
155   var opt1 = new QxMenuButton("Servers", null)
156   opt1.addEventListener("mouseover", function() {
157     srvMenu.setVisible(true);
158     srvMenu.setLeft(this.getComputedPageBoxRight() + 4);
159     srvMenu.setTop(this.getComputedPageBoxTop() - 3);
160     if (espMenu.getVisible()) {
161       espMenu.setVisible(false);
162     }
163   }); 
164   var opt2 = new QxMenuButton("Installation", null);
165   var opt3 = new QxMenuButton("Configuration", null);
166   var opt4 = new QxMenuButton("ESP Tests", null);
167   opt4.addEventListener("mouseover", function() {
168     espMenu.setVisible(true);
169     espMenu.setLeft(this.getComputedPageBoxRight() + 4);
170     espMenu.setTop(this.getComputedPageBoxTop() - 3);
171     if (srvMenu.getVisible()) {
172       srvMenu.setVisible(false);
173     }
174   }); 
175   var opt5 = new QxMenuButton("Documentation", null);
176   var sep1 = new QxMenuSeparator();
177   var sep2 = new QxMenuSeparator();
178
179   sMenu.add(opt1, opt2, opt3, sep1, opt4, sep2, opt5);
180   sMenu.setLeft(0);
181   sMenu.setTop(docHeight() - 150);
182   w.add(sMenu);
183   sMenu.setVisible(true);
184 }
185 </script>
186
187 <div id="toolbar">
188         <h3><a href="javascript:startSwat()">SWAT (Start)</a></h3>
189 </div>
190
191 <% page_footer(); %>