]>
jfr.im git - irc/quakenet/qwebirc.git/blob - js/ui/frontends/swmlayout.js
1 qwebirc
.ui
.SWMUI
.SWM_ANCHOR_NONE
= 0x00;
2 qwebirc
.ui
.SWMUI
.SWM_ANCHOR_TOP
= 0x01;
3 qwebirc
.ui
.SWMUI
.SWM_ANCHOR_BOTTOM
= 0x02;
4 qwebirc
.ui
.SWMUI
.SWM_ANCHOR_LEFT
= 0x04;
5 qwebirc
.ui
.SWMUI
.SWM_ANCHOR_RIGHT
= 0x08;
7 qwebirc
.ui
.SWMUI
.Container
= new Class({
8 initialize: function(parentElement
) {
9 this.parentElement
= parentElement
;
11 getInnerSize: function() {
12 // return {x: this.element.clientWidth, y: this.element.clientHeight};
13 return this.element
.getSize();
15 getOuterSize: function() {
16 return this.element
.getSize();
18 appendChild: function(element
) {
19 this.element
.appendChild(element
);
21 removeChild: function(element
) {
22 this.element
.removeChild(element
);
24 setStyle: function(style
, value
) {
25 this.element
.setStyle(setstyle
, value
);
27 removeAllChildren: function(element
) {
28 while(this.element
.firstChild
)
29 this.removeChild(this.element
.firstChild
);
31 setSize: function(top
, left
, bottom
, right
) {
34 var outer
= this.getOuterSize();
35 var inner
= this.getInnerSize();
36 var p
= this.parentElement
.getInnerSize();
38 if(top
!= undefined && bottom
!= undefined) {
40 data
.height
= p
.y
- top
- bottom
;
41 } else if(top
== undefined) {
43 } else { /* bottom == undefined */
47 if(left
!= undefined && right
!= undefined) {
49 data
.width
= p
.x
- left
- right
;
50 } else if(left
== undefined) {
52 } else { /* right == undefined */
57 data
.height
= data
.height
- (outer
.y
- inner
.y
);
59 data
.width
= data
.width
- (outer
.x
- inner
.x
);
63 data2
[k
] = data
[k
] + "px";
65 this.element
.setStyles(data2
);
69 var x
= this.element
.getChildren().map(function(x
) {
73 var anchorFilter = function(x
, y
) {
74 return x
.filter(function(z
) {
75 if(z
&& (z
.anchor
== y
) && !z
.hidden
) {
81 var top
= anchorFilter(x
, qwebirc
.ui
.SWMUI
.SWM_ANCHOR_TOP
);
82 var bottom
= anchorFilter(x
, qwebirc
.ui
.SWMUI
.SWM_ANCHOR_BOTTOM
);
83 var left
= anchorFilter(x
, qwebirc
.ui
.SWMUI
.SWM_ANCHOR_LEFT
);
84 var right
= anchorFilter(x
, qwebirc
.ui
.SWMUI
.SWM_ANCHOR_RIGHT
);
85 var none
= anchorFilter(x
, qwebirc
.ui
.SWMUI
.SWM_ANCHOR_NONE
);
87 var x
= this.getInnerSize();
88 var y
= this.getOuterSize();
91 top
.each(function(obj
) {
92 obj
.setSize(tpos
, 0, undefined, 0);
93 tpos
= tpos
+ obj
.getOuterSize().y
;
97 bottom
.each(function(obj
) {
98 obj
.setSize(undefined, 0, bpos
, 0);
99 bpos
= bpos
+ obj
.getOuterSize().y
;
103 left
.each(function(obj
) {
104 obj
.setSize(tpos
, lpos
, bpos
, undefined);
105 lpos
= lpos
+ obj
.getOuterSize().x
;
109 right
.each(function(obj
) {
110 obj
.setSize(tpos
, undefined, bpos
, rpos
);
111 rpos
= rpos
+ obj
.getOuterSize().x
;
115 bottom
.each(function(obj
) {
116 obj
.setSize(undefined, 0, bpos
, 0);
117 bpos
= bpos
+ obj
.getOuterSize().y
;
120 none
.each(function(obj
) {
121 obj
.setSize(tpos
, lpos
, bpos
, rpos
);
126 qwebirc
.ui
.SWMUI
.Frame
= new Class({
127 Extends: qwebirc
.ui
.SWMUI
.Container
,
128 initialize: function(parentElement
) {
131 this.element
= new Element("div", {"styles": {
132 "position": "relative",
138 this.element
.wmpanel
= this;
140 parentElement
.appendChild(this.element
);
141 this.element
.addClass("swmelement");
145 qwebirc
.ui
.SWMUI
.Panel
= new Class({
146 Extends: qwebirc
.ui
.SWMUI
.Container
,
147 initialize: function(parentPanel
, hidden
) {
148 this.parent(parentPanel
);
149 this.element
= new Element("div", {"styles": {
150 "position": "absolute"
152 this.element
.wmpanel
= this;
155 this.setHidden(true);
160 parentPanel
.element
.appendChild(this.element
);
161 this.anchor
= qwebirc
.ui
.SWMUI
.SWM_ANCHOR_NONE
;
163 setHeight: function(height
) {
164 this.height
= height
;
166 setWidth: function(width
) {
169 setHidden: function(value
) {
172 this.element
.setStyle("display", "none");
174 this.element
.setStyle("display", "block");
177 addClass: function(class_
) {
178 this.element
.addClass(class_
);
180 getScrollSize: function() {
181 return this.element
.getScrollSize();
185 window
.addEvent("domready", function() {
186 window
.addEvent("resize", function() {
187 $$("div.swmelement").each(function(x
) {