-var SWM_ANCHOR_NONE = 0x00;\r
-var SWM_ANCHOR_TOP = 0x01;\r
-var SWM_ANCHOR_BOTTOM = 0x02;\r
-var SWM_ANCHOR_LEFT = 0x04;\r
-var SWM_ANCHOR_RIGHT = 0x08;\r
-\r
-var SWMPanel = new Class({\r
- initialize: function(parent, hidden) {\r
- this.parent = parent;\r
- \r
- var element = new Element("div", {"styles": { "position": "absolute" } });\r
- this.element = element;\r
- this.element.wmpanel = this;\r
- \r
- if(hidden) {\r
- this.setHidden(true);\r
- } else {\r
- this.hidden = false;\r
- }\r
- parent.addClass("swmelement");\r
- \r
- parent.appendChild(this.element);\r
- this.anchor = SWM_ANCHOR_NONE;\r
- },\r
- setHeight: function(height) {\r
- this.height = height;\r
- },\r
- setWidth: function(width) {\r
- this.width = width;\r
- },\r
- setHidden: function(value) {\r
- this.hidden = value;\r
- if(value) {\r
- this.element.setStyle("display", "none");\r
- } else {\r
- this.element.setStyle("display", "block");\r
- }\r
- }\r
-});\r
-\r
-window.addEvent("domready", function() {\r
- function reworkLayout(container) {\r
- function anchorFilter(x, anchor) {\r
- return x.filter(function(y) {\r
- if(y.anchor == anchor)\r
- return true;\r
- });\r
- }\r
- var x = container.getChildren().map(function(x) {\r
- return x.wmpanel\r
- });\r
- var top = anchorFilter(x, SWM_ANCHOR_TOP);\r
- var bottom = anchorFilter(x, SWM_ANCHOR_BOTTOM);\r
- var none = anchorFilter(x, SWM_ANCHOR_NONE);\r
-\r
- var left = anchorFilter(x, SWM_ANCHOR_LEFT);\r
- var right = anchorFilter(x, SWM_ANCHOR_RIGHT);\r
- \r
- var tpos = 0;\r
- for(var i=0;i<top.length;i++) {\r
- if(top[i].hidden)\r
- continue;\r
- var obj = top[i].element;\r
- obj.setStyles({"top": tpos + "px", "left": "0px", "right": "0px"});\r
- tpos = tpos + obj.getSize().y;\r
- }\r
- \r
- var bpos = 0;\r
- for(var i=0;i<bottom.length;i++) {\r
- if(bottom[i].hidden)\r
- continue;\r
- var obj = bottom[i].element;\r
- obj.setStyles({"bottom": bpos + "px", "left": "0px", "right": "0px"});\r
- bpos = bpos + obj.getSize().y;\r
- }\r
- \r
- var lpos = 0;\r
- for(var i=0;i<left.length;i++) {\r
- if(left[i].hidden)\r
- continue;\r
- var obj = left[i].element;\r
- obj.setStyles({"left": lpos + "px", "top": tpos + "px", "bottom": bpos + "px"});\r
- lpos = lpos + obj.getSize().x;\r
- }\r
-\r
- var rpos = 0;\r
- for(var i=0;i<right.length;i++) {\r
- if(right[i].hidden)\r
- continue;\r
- var obj = right[i].element;\r
- obj.setStyles({"right": rpos + "px", "top": tpos + "px", "bottom": bpos + "px"});\r
- rpos = rpos + obj.getSize().x;\r
- }\r
-\r
- for(var i=0;i<none.length;i++) {\r
- if(none[i].hidden)\r
- continue;\r
- var obj = none[i].element;\r
- obj.setStyles({"left": lpos + "px", "right": rpos + "px", "top": tpos + "px", "bottom": bpos + "px"});\r
- }\r
- }\r
- \r
- window.addEvent("resize", function() {\r
- $$("div.swmelement").each(reworkLayout);\r
- });\r
-});
\ No newline at end of file
+qwebirc.ui.SWMUI.SWM_ANCHOR_NONE = 0x00;
+qwebirc.ui.SWMUI.SWM_ANCHOR_TOP = 0x01;
+qwebirc.ui.SWMUI.SWM_ANCHOR_BOTTOM = 0x02;
+qwebirc.ui.SWMUI.SWM_ANCHOR_LEFT = 0x04;
+qwebirc.ui.SWMUI.SWM_ANCHOR_RIGHT = 0x08;
+
+qwebirc.ui.SWMUI.Container = new Class({
+ initialize: function(parentElement) {
+ this.parentElement = parentElement;
+ },
+ getInnerSize: function() {
+// return {x: this.element.clientWidth, y: this.element.clientHeight};
+ return this.element.getSize();
+ },
+ getOuterSize: function() {
+ return this.element.getSize();
+ },
+ appendChild: function(element) {
+ this.element.appendChild(element);
+ },
+ removeChild: function(element) {
+ this.element.removeChild(element);
+ },
+ setStyle: function(style, value) {
+ this.element.setStyle(setstyle, value);
+ },
+ removeAllChildren: function(element) {
+ while(this.element.firstChild)
+ this.removeChild(this.element.firstChild);
+ },
+ setSize: function(top, left, bottom, right) {
+ var data = {};
+
+ var outer = this.getOuterSize();
+ var inner = this.getInnerSize();
+ var p = this.parentElement.getInnerSize();
+
+ if(top != undefined && bottom != undefined) {
+ data.top = top;
+ data.height = p.y - top - bottom;
+ } else if(top == undefined) {
+ data.bottom = bottom;
+ } else { /* bottom == undefined */
+ data.top = top;
+ }
+
+ if(left != undefined && right != undefined) {
+ data.left = left;
+ data.width = p.x - left - right;
+ } else if(left == undefined) {
+ data.right = right;
+ } else { /* right == undefined */
+ data.left = left;
+ }
+
+ if(data.height)
+ data.height = data.height - (outer.y - inner.y);
+ if(data.width)
+ data.width = data.width - (outer.x - inner.x);
+
+ var data2 = {};
+ for(var k in data)
+ data2[k] = data[k] + "px";
+
+ this.element.setStyles(data2);
+ this.rework();
+ },
+ rework: function() {
+ var x = this.element.getChildren().map(function(x) {
+ return x.wmpanel;
+ });
+
+ var anchorFilter = function(x, y) {
+ return x.filter(function(z) {
+ if(z && (z.anchor == y) && !z.hidden) {
+ return true;
+ }
+ });
+ }
+
+ var top = anchorFilter(x, qwebirc.ui.SWMUI.SWM_ANCHOR_TOP);
+ var bottom = anchorFilter(x, qwebirc.ui.SWMUI.SWM_ANCHOR_BOTTOM);
+ var left = anchorFilter(x, qwebirc.ui.SWMUI.SWM_ANCHOR_LEFT);
+ var right = anchorFilter(x, qwebirc.ui.SWMUI.SWM_ANCHOR_RIGHT);
+ var none = anchorFilter(x, qwebirc.ui.SWMUI.SWM_ANCHOR_NONE);
+
+ var x = this.getInnerSize();
+ var y = this.getOuterSize();
+
+ var tpos = 0;
+ top.each(function(obj) {
+ obj.setSize(tpos, 0, undefined, 0);
+ tpos = tpos + obj.getOuterSize().y;
+ });
+
+ var bpos = 0;
+ bottom.each(function(obj) {
+ obj.setSize(undefined, 0, bpos, 0);
+ bpos = bpos + obj.getOuterSize().y;
+ });
+
+ var lpos = 0;
+ left.each(function(obj) {
+ obj.setSize(tpos, lpos, bpos, undefined);
+ lpos = lpos + obj.getOuterSize().x;
+ });
+
+ var rpos = 0;
+ right.each(function(obj) {
+ obj.setSize(tpos, undefined, bpos, rpos);
+ rpos = rpos + obj.getOuterSize().x;
+ });
+
+ var bpos = 0;
+ bottom.each(function(obj) {
+ obj.setSize(undefined, 0, bpos, 0);
+ bpos = bpos + obj.getOuterSize().y;
+ });
+
+ none.each(function(obj) {
+ obj.setSize(tpos, lpos, bpos, rpos);
+ });
+ }
+});
+
+qwebirc.ui.SWMUI.Frame = new Class({
+ Extends: qwebirc.ui.SWMUI.Container,
+ initialize: function(parentElement) {
+ this.parent(this);
+
+ this.element = new Element("div", {"styles": {
+ "position": "relative",
+ "top": "0px",
+ "left": "0px",
+ "height": "100%",
+ "width": "100%"
+ }});
+ this.element.wmpanel = this;
+
+ parentElement.appendChild(this.element);
+ this.element.addClass("swmelement");
+ }
+});
+
+qwebirc.ui.SWMUI.Panel = new Class({
+ Extends: qwebirc.ui.SWMUI.Container,
+ initialize: function(parentPanel, hidden) {
+ this.parent(parentPanel);
+ this.element = new Element("div", {"styles": {
+ "position": "absolute"
+ }});
+ this.element.wmpanel = this;
+
+ if(hidden) {
+ this.setHidden(true);
+ } else {
+ this.hidden = false;
+ }
+
+ parentPanel.element.appendChild(this.element);
+ this.anchor = qwebirc.ui.SWMUI.SWM_ANCHOR_NONE;
+ },
+ setHeight: function(height) {
+ this.height = height;
+ },
+ setWidth: function(width) {
+ this.width = width;
+ },
+ setHidden: function(value) {
+ this.hidden = value;
+ if(value) {
+ this.element.setStyle("display", "none");
+ } else {
+ this.element.setStyle("display", "block");
+ }
+ },
+ addClass: function(class_) {
+ this.element.addClass(class_);
+ },
+ getScrollSize: function() {
+ return this.element.getScrollSize();
+ }
+});
+
+window.addEvent("domready", function() {
+ window.addEvent("resize", function() {
+ $$("div.swmelement").each(function(x) {
+ x.wmpanel.rework();
+ });
+ });
+});