Blame | Last modification | View Log | RSS feed
if(!dojo._hasResource["dojox.layout.BorderContainer"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.dojo._hasResource["dojox.layout.BorderContainer"] = true;dojo.provide("dojox.layout.BorderContainer");dojo.require("dijit.layout._LayoutWidget");dojo.experimental("dojox.layout.BorderContainer");dojo.declare("dojox.layout.BorderContainer",// [dijit._Widget, dijit._Container, dijit._Contained],dijit.layout._LayoutWidget,{// summary// Provides layout in 5 regions, a center and borders along its 4 sides.//// details// A BorderContainer is a box with a specified size (like style="width: 500px; height: 500px;"),// that contains children widgets marked with "position" of "top", "bottom", "left", "right", "center".// It takes it's children marked as top/bottom/left/right, and lays them out along the edges of the center box,// with "top" and "bottom" extending the full width of the container.//// usage// <style>// html, body{ height: 100%; width: 100%; }// </style>// <div dojoType="BorderContainer" style="width: 100%; height: 100%">// <div dojoType="ContentPane" position="top">header text</div>// <div dojoType="ContentPane" position="right" style="width: 200px;">table of contents</div>// <div dojoType="ContentPane" position="center">client area</div>// </div>top: {},bottom: {},left: {}, // inside?right: {}, // outside?center: {},layout: function(){this._layoutChildren(this.domNode, this._contentBox, this.getChildren());},addChild: function(/*Widget*/ child, /*Integer?*/ insertIndex){dijit._Container.prototype.addChild.apply(this, arguments);if(this._started){this._layoutChildren(this.domNode, this._contentBox, this.getChildren());}},removeChild: function(/*Widget*/ widget){dijit._Container.prototype.removeChild.apply(this, arguments);if(this._started){this._layoutChildren(this.domNode, this._contentBox, this.getChildren());}},_layoutChildren: function(/*DomNode*/ container, /*Object*/ dim, /*Object[]*/ children){/*** summary* Layout a bunch of child dom nodes within a parent dom node* container:* parent node* dim:* {l, t, w, h} object specifying dimensions of container into which to place children* children:* an array like [ {domNode: foo, position: "bottom" }, {domNode: bar, position: "client"} ]*///TODO: what is dim and why doesn't it look right?// copy dim because we are going to modify it// dim = dojo.mixin({}, dim);this.domNode.style.position = "relative";//FIXME: do this once? somewhere else?dojo.addClass(container, "dijitBorderContainer");dojo.forEach(children, function(child){var style = child.domNode.style;style.position = "absolute";if(child.position){this[child.position] = child.domNode;}}, this);var topStyle = this.top.style;var rightStyle = this.right.style;var leftStyle = this.left.style;var centerStyle = this.center.style;var bottomStyle = this.bottom.style;var rightCoords = dojo.coords(this.right);var leftCoords = dojo.coords(this.left);var centerCoords = dojo.coords(this.center);var bottomCoords = dojo.coords(this.bottom);var topCoords = dojo.coords(this.top);rightStyle.top = leftStyle.top = centerStyle.top = topCoords.h + "px";topStyle.top = topStyle.left = topStyle.right = "0px";bottomStyle.left = bottomStyle.bottom = bottomStyle.right = "0px";leftStyle.left = rightStyle.right = "0px";centerStyle.left = leftCoords.w + "px";centerStyle.right = rightCoords.w + "px";rightStyle.bottom = leftStyle.bottom = centerStyle.bottom = bottomCoords.h + "px";},resize: function(args){this.layout();}});// This argument can be specified for the children of a BorderContainer.// Since any widget can be specified as a LayoutContainer child, mix it// into the base widget class. (This is a hack, but it's effective.)dojo.extend(dijit._Widget, {// position: String// "top", "bottom", "left", "right", "center".// See the BorderContainer description for details on this parameter.position: 'none'});}