]>
Commit | Line | Data |
---|---|---|
1 | var SWM_ANCHOR_NONE = 0x00;\r | |
2 | var SWM_ANCHOR_TOP = 0x01;\r | |
3 | var SWM_ANCHOR_BOTTOM = 0x02;\r | |
4 | var SWM_ANCHOR_LEFT = 0x04;\r | |
5 | var SWM_ANCHOR_RIGHT = 0x08;\r | |
6 | \r | |
7 | var SWMPanel = new Class({\r | |
8 | initialize: function(parent, hidden) {\r | |
9 | this.parent = parent;\r | |
10 | \r | |
11 | var element = new Element("div", {"styles": { "position": "absolute" } });\r | |
12 | this.element = element;\r | |
13 | this.element.wmpanel = this;\r | |
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 | |
21 | \r | |
22 | parent.appendChild(this.element);\r | |
23 | this.anchor = SWM_ANCHOR_NONE;\r | |
24 | },\r | |
25 | setHeight: function(height) {\r | |
26 | this.height = height;\r | |
27 | },\r | |
28 | setWidth: function(width) {\r | |
29 | this.width = width;\r | |
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 | |
38 | }\r | |
39 | });\r | |
40 | \r | |
41 | window.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 | |
61 | if(top[i].hidden)\r | |
62 | continue;\r | |
63 | var obj = top[i].element;\r | |
64 | obj.setStyles({"top": tpos + "px", "left": "0px", "right": "0px"});\r | |
65 | tpos = tpos + obj.getSize().y;\r | |
66 | }\r | |
67 | \r | |
68 | var bpos = 0;\r | |
69 | for(var i=0;i<bottom.length;i++) {\r | |
70 | if(bottom[i].hidden)\r | |
71 | continue;\r | |
72 | var obj = bottom[i].element;\r | |
73 | obj.setStyles({"bottom": bpos + "px", "left": "0px", "right": "0px"});\r | |
74 | bpos = bpos + obj.getSize().y;\r | |
75 | }\r | |
76 | \r | |
77 | var lpos = 0;\r | |
78 | for(var i=0;i<left.length;i++) {\r | |
79 | if(left[i].hidden)\r | |
80 | continue;\r | |
81 | var obj = left[i].element;\r | |
82 | obj.setStyles({"left": lpos + "px", "top": tpos + "px", "bottom": bpos + "px"});\r | |
83 | lpos = lpos + obj.getSize().x;\r | |
84 | }\r | |
85 | \r | |
86 | var rpos = 0;\r | |
87 | for(var i=0;i<right.length;i++) {\r | |
88 | if(right[i].hidden)\r | |
89 | continue;\r | |
90 | var obj = right[i].element;\r | |
91 | obj.setStyles({"right": rpos + "px", "top": tpos + "px", "bottom": bpos + "px"});\r | |
92 | rpos = rpos + obj.getSize().x;\r | |
93 | }\r | |
94 | \r | |
95 | for(var i=0;i<none.length;i++) {\r | |
96 | if(none[i].hidden)\r | |
97 | continue;\r | |
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 | |
104 | $$("div.swmelement").each(reworkLayout);\r | |
105 | });\r | |
106 | }); |