r9707: r11080@blu: tridge | 2005-08-28 12:41:12 +1000
[kai/samba.git] / swat / scripting / client / swat.js
1 /*
2    Windows, tabs, and general widgetry for SWAT.
3
4    Copyright (C) Deryck Hodge 2005
5    released under the GNU GPL Version 2 or later
6 */
7
8
9 /* Qooxdoo's browser sniffer doesn't distinguish IE version.
10 We'll cover IE 6 for now, but these checks need to be
11 revisited for fuller browser coverage. */
12 var browser = QxClient().engine;
13
14 function docX()
15 {
16         var x;
17         if (browser != "mshtml") {
18                 x = window.innerWidth;
19         } else {
20                 x = document.documentElement.clientWidth;
21         }
22         return x;
23 }
24
25 function docY()
26 {
27         var y;
28         // Less 25px to not cover the toolbar
29         if (browser != "mshtml") {
30                 y = window.innerHeight - 25;
31         } else {
32                 y = document.documentElement.clientHeight;
33         }
34         return y;
35 }
36
37 function sizeX()
38 {
39         var sX = Math.floor(docX() * .45);
40         return sX;
41 }
42
43 function sizeY()
44 {
45         var sY = Math.floor(docY() * .45);
46         return sY;
47 }
48
49 function getPosX()
50 {
51         var y = Math.floor( (docY() - sizeY()) * Math.random() );
52         return y;
53 }
54
55 function getPosY()
56 {
57         var x = Math.floor( (docX() - sizeX()) * Math.random() );
58         return x;
59 }
60
61 function openIn(e)
62 {
63         var blank = new Window("New Menu");
64         e.add(blank);
65         blank.setVisible(true);
66 }
67         
68 function winMenu(e)
69 {
70         var self = this;
71         var WinWin = new QxCommand();
72         WinWin.addEventListener("execute", function() {
73                 var blank = new QxWindow();
74                 self.add(blank);
75                 blank.setVisible(true);
76         }); 
77
78         var inset = new QxMenu;
79         var sub1 = new QxMenuButton("Open window in a window", null, WinWin);
80
81         inset.add(sub1);
82         self.add(inset)
83
84         cmenu.setVisible(false);
85         inset.setVisible(true);
86 }
87
88 function Window(title)
89 {
90         var self = new QxWindow(title);
91         self.setTop(getPosX());
92         self.setLeft(getPosY());
93         self.setMinWidth(sizeX());
94         self.setMinHeight(sizeY());
95         self.addEventListener("contextmenu", winMenu);
96         return self;
97 }
98
99