]>
jfr.im git - irc/quakenet/qwebirc.git/blob - js/ui/swmlayout.js
1 var SWM_ANCHOR_NONE
= 0x00;
2 var SWM_ANCHOR_TOP
= 0x01;
3 var SWM_ANCHOR_BOTTOM
= 0x02;
4 var SWM_ANCHOR_LEFT
= 0x04;
5 var SWM_ANCHOR_RIGHT
= 0x08;
7 var SWMPanel
= new Class({
8 initialize: function(parent
, id
) {
11 var element
= new Element("div", {"id": id
, "styles": { "position": "absolute" } });
12 this.element
= element
;
13 this.element
.wmpanel
= this;
15 parent
.addClass("wmelement");
17 parent
.appendChild(this.element
);
18 this.anchor
= ANCHOR_NONE
;
21 setHeight: function(height
) {
25 setWidth: function(width
) {
30 window
.addEvent("domready", function() {
31 function reworkLayout(container
) {
32 function anchorFilter(x
, anchor
) {
33 return x
.filter(function(y
) {
34 if(y
.anchor
== anchor
)
38 var x
= container
.getChildren().map(function(x
) {
41 var top
= anchorFilter(x
, SWM_ANCHOR_TOP
);
42 var bottom
= anchorFilter(x
, SWM_ANCHOR_BOTTOM
);
43 var none
= anchorFilter(x
, SWM_ANCHOR_NONE
);
45 var left
= anchorFilter(x
, SWM_ANCHOR_LEFT
);
46 var right
= anchorFilter(x
, SWM_ANCHOR_RIGHT
);
49 for(var i
=0;i
<top
.length
;i
++) {
50 var obj
= top
[i
].element
;
51 obj
.setStyles({"top": tpos
+ "px", "left": "0px", "right": "0px"});
52 tpos
= tpos
+ obj
.getSize()["size"]["y"];
56 for(var i
=0;i
<bottom
.length
;i
++) {
57 var obj
= bottom
[i
].element
;
58 obj
.setStyles({"bottom": bpos
+ "px", "left": "0px", "right": "0px"});
59 bpos
= bpos
+ obj
.getSize()["size"]["y"];
63 for(var i
=0;i
<left
.length
;i
++) {
64 var obj
= left
[i
].element
;
65 obj
.setStyles({"left": lpos
+ "px", "top": tpos
+ "px", "bottom": bpos
+ "px"});
66 lpos
= lpos
+ obj
.getSize()["size"]["x"];
70 for(var i
=0;i
<right
.length
;i
++) {
71 var obj
= right
[i
].element
;
72 obj
.setStyles({"right": rpos
+ "px", "top": tpos
+ "px", "bottom": bpos
+ "px"});
73 rpos
= rpos
+ obj
.getSize()["size"]["x"];
76 for(var i
=0;i
<none
.length
;i
++) {
77 var obj
= none
[i
].element
;
78 obj
.setStyles({"left": lpos
+ "px", "right": rpos
+ "px", "top": tpos
+ "px", "bottom": bpos
+ "px"});
82 window
.addEvent("resize", function() {
83 $$("div[class=wmelement]").forEach(reworklayout
);