Rev 1318 | Blame | Compare with Previous | Last modification | View Log | RSS feed
/*Copyright (c) 2004-2006, The Dojo FoundationAll Rights Reserved.Licensed under the Academic Free License version 2.1 or above OR themodified BSD license. For more information on Dojo licensing, see:http://dojotoolkit.org/community/licensing.shtml*/dojo.provide("dojo.widget.html.layout");dojo.require("dojo.lang.common");dojo.require("dojo.string.extras");dojo.require("dojo.html.style");dojo.require("dojo.html.layout");dojo.widget.html.layout = function (container, children, layoutPriority) {dojo.html.addClass(container, "dojoLayoutContainer");children = dojo.lang.filter(children, function (child, idx) {child.idx = idx;return dojo.lang.inArray(["top", "bottom", "left", "right", "client", "flood"], child.layoutAlign);});if (layoutPriority && layoutPriority != "none") {var rank = function (child) {switch (child.layoutAlign) {case "flood":return 1;case "left":case "right":return (layoutPriority == "left-right") ? 2 : 3;case "top":case "bottom":return (layoutPriority == "left-right") ? 3 : 2;default:return 4;}};children.sort(function (a, b) {return (rank(a) - rank(b)) || (a.idx - b.idx);});}var f = {top:dojo.html.getPixelValue(container, "padding-top", true), left:dojo.html.getPixelValue(container, "padding-left", true)};dojo.lang.mixin(f, dojo.html.getContentBox(container));dojo.lang.forEach(children, function (child) {var elm = child.domNode;var pos = child.layoutAlign;with (elm.style) {left = f.left + "px";top = f.top + "px";bottom = "auto";right = "auto";}dojo.html.addClass(elm, "dojoAlign" + dojo.string.capitalize(pos));if ((pos == "top") || (pos == "bottom")) {dojo.html.setMarginBox(elm, {width:f.width});var h = dojo.html.getMarginBox(elm).height;f.height -= h;if (pos == "top") {f.top += h;} else {elm.style.top = f.top + f.height + "px";}if (child.onResized) {child.onResized();}} else {if (pos == "left" || pos == "right") {var w = dojo.html.getMarginBox(elm).width;if (child.resizeTo) {child.resizeTo(w, f.height);} else {dojo.html.setMarginBox(elm, {width:w, height:f.height});}f.width -= w;if (pos == "left") {f.left += w;} else {elm.style.left = f.left + f.width + "px";}} else {if (pos == "flood" || pos == "client") {if (child.resizeTo) {child.resizeTo(f.width, f.height);} else {dojo.html.setMarginBox(elm, {width:f.width, height:f.height});}}}}});};dojo.html.insertCssText(".dojoLayoutContainer{ position: relative; display: block; overflow: hidden; }\n" + "body .dojoAlignTop, body .dojoAlignBottom, body .dojoAlignLeft, body .dojoAlignRight { position: absolute; overflow: hidden; }\n" + "body .dojoAlignClient { position: absolute }\n" + ".dojoAlignClient { overflow: auto; }\n");