]> jfr.im git - irc/quakenet/qwebirc.git/blame - js/ui/swmlayout.js
Use compiled versions.
[irc/quakenet/qwebirc.git] / js / ui / swmlayout.js
CommitLineData
8f36f657
CP
1var SWM_ANCHOR_NONE = 0x00;\r
2var SWM_ANCHOR_TOP = 0x01;\r
3var SWM_ANCHOR_BOTTOM = 0x02;\r
4var SWM_ANCHOR_LEFT = 0x04;\r
5var SWM_ANCHOR_RIGHT = 0x08;\r
6\r
7var SWMPanel = new Class({\r
9938db6f 8 initialize: function(parent, hidden) {\r
8f36f657
CP
9 this.parent = parent;\r
10 \r
9938db6f 11 var element = new Element("div", {"styles": { "position": "absolute" } });\r
8f36f657
CP
12 this.element = element;\r
13 this.element.wmpanel = this;\r
9938db6f
CP
14 \r
15 if(hidden) {\r
16 this.setHidden(true);\r
17 } else {\r
18 this.hidden = false;\r
19 }\r
20 parent.addClass("swmelement");\r
8f36f657
CP
21 \r
22 parent.appendChild(this.element);\r
9938db6f 23 this.anchor = SWM_ANCHOR_NONE;\r
8f36f657 24 },\r
8f36f657
CP
25 setHeight: function(height) {\r
26 this.height = height;\r
27 },\r
8f36f657
CP
28 setWidth: function(width) {\r
29 this.width = width;\r
9938db6f
CP
30 },\r
31 setHidden: function(value) {\r
32 this.hidden = value;\r
33 if(value) {\r
34 this.element.setStyle("display", "none");\r
35 } else {\r
36 this.element.setStyle("display", "block");\r
37 }\r
8f36f657
CP
38 }\r
39});\r
40\r
41window.addEvent("domready", function() {\r
42 function reworkLayout(container) {\r
43 function anchorFilter(x, anchor) {\r
44 return x.filter(function(y) {\r
45 if(y.anchor == anchor)\r
46 return true;\r
47 });\r
48 }\r
49 var x = container.getChildren().map(function(x) {\r
50 return x.wmpanel\r
51 });\r
52 var top = anchorFilter(x, SWM_ANCHOR_TOP);\r
53 var bottom = anchorFilter(x, SWM_ANCHOR_BOTTOM);\r
54 var none = anchorFilter(x, SWM_ANCHOR_NONE);\r
55\r
56 var left = anchorFilter(x, SWM_ANCHOR_LEFT);\r
57 var right = anchorFilter(x, SWM_ANCHOR_RIGHT);\r
58 \r
59 var tpos = 0;\r
60 for(var i=0;i<top.length;i++) {\r
9938db6f
CP
61 if(top[i].hidden)\r
62 continue;\r
8f36f657
CP
63 var obj = top[i].element;\r
64 obj.setStyles({"top": tpos + "px", "left": "0px", "right": "0px"});\r
9938db6f 65 tpos = tpos + obj.getSize().y;\r
8f36f657
CP
66 }\r
67 \r
68 var bpos = 0;\r
69 for(var i=0;i<bottom.length;i++) {\r
9938db6f
CP
70 if(bottom[i].hidden)\r
71 continue;\r
8f36f657
CP
72 var obj = bottom[i].element;\r
73 obj.setStyles({"bottom": bpos + "px", "left": "0px", "right": "0px"});\r
9938db6f 74 bpos = bpos + obj.getSize().y;\r
8f36f657
CP
75 }\r
76 \r
77 var lpos = 0;\r
78 for(var i=0;i<left.length;i++) {\r
9938db6f
CP
79 if(left[i].hidden)\r
80 continue;\r
8f36f657
CP
81 var obj = left[i].element;\r
82 obj.setStyles({"left": lpos + "px", "top": tpos + "px", "bottom": bpos + "px"});\r
9938db6f 83 lpos = lpos + obj.getSize().x;\r
8f36f657
CP
84 }\r
85\r
86 var rpos = 0;\r
87 for(var i=0;i<right.length;i++) {\r
9938db6f
CP
88 if(right[i].hidden)\r
89 continue;\r
8f36f657
CP
90 var obj = right[i].element;\r
91 obj.setStyles({"right": rpos + "px", "top": tpos + "px", "bottom": bpos + "px"});\r
9938db6f 92 rpos = rpos + obj.getSize().x;\r
8f36f657
CP
93 }\r
94\r
95 for(var i=0;i<none.length;i++) {\r
9938db6f
CP
96 if(none[i].hidden)\r
97 continue;\r
8f36f657
CP
98 var obj = none[i].element;\r
99 obj.setStyles({"left": lpos + "px", "right": rpos + "px", "top": tpos + "px", "bottom": bpos + "px"});\r
100 }\r
101 }\r
102 \r
103 window.addEvent("resize", function() {\r
9938db6f 104 $$("div.swmelement").each(reworkLayout);\r
8f36f657
CP
105 });\r
106});