X-Git-Url: http://git.ithinksw.org/extjs.git/blobdiff_plain/6e39d509471fe9b4e2660e0d1631b350d0c66f40..530ef4b6c5b943cfa68b779d11cf7de29aa878bf:/docs/source/AnchorLayout.html diff --git a/docs/source/AnchorLayout.html b/docs/source/AnchorLayout.html index 51566e30..ffbceeed 100644 --- a/docs/source/AnchorLayout.html +++ b/docs/source/AnchorLayout.html @@ -1,12 +1,18 @@ - - - - The source code - - - - -
/** + + + + The source code + + + + +
/*!
+ * Ext JS Library 3.2.1
+ * Copyright(c) 2006-2010 Ext JS, Inc.
+ * licensing@extjs.com
+ * http://www.extjs.com/license
+ */
+
/** * @class Ext.layout.AnchorLayout * @extends Ext.layout.ContainerLayout *

This is a layout that enables anchoring of contained elements relative to the container's dimensions. @@ -93,20 +99,33 @@ anchor: '-50 75%' */ // private - monitorResize:true, + monitorResize : true, - // private - // deprecate - getAnchorViewSize : function(ct, target){ - return target.dom == document.body ? - target.getViewSize(true) : target.getStyleSize(); + type : 'anchor', + +

/** + * @cfg {String} defaultAnchor + * + * default anchor for all child container items applied if no anchor or specific width is set on the child item. Defaults to '100%'. + * + */ + defaultAnchor : '100%', + + parseAnchorRE : /^(r|right|b|bottom)$/i, + + getLayoutTargetSize : function() { + var target = this.container.getLayoutTarget(); + if (!target) { + return {}; + } + // Style Sized (scrollbars not included) + return target.getStyleSize(); }, // private onLayout : function(ct, target){ Ext.layout.AnchorLayout.superclass.onLayout.call(this, ct, target); - - var size = target.getViewSize(true); + var size = this.getLayoutTargetSize(); var w = size.width, h = size.height; @@ -128,10 +147,16 @@ anchor: '-50 75%' ah = ct.initialConfig.height; } - var cs = ct.items.items, len = cs.length, i, c, a, cw, ch, el, vs; + var cs = this.getRenderedItems(ct), len = cs.length, i, c, a, cw, ch, el, vs, boxes = []; for(i = 0; i < len; i++){ c = cs[i]; el = c.getPositionEl(); + + // If a child container item has no anchor and no specific width, set the child to the default anchor size + if (!c.anchor && c.items && !Ext.isNumber(c.width) && !(Ext.isIE6 && Ext.isStrict)){ + c.anchor = this.defaultAnchor; + } + if(c.anchor){ a = c.anchorSpec; if(!a){ // cache all anchor values @@ -145,17 +170,26 @@ anchor: '-50 75%' ch = a.bottom ? this.adjustHeightAnchor(a.bottom(h) - el.getMargins('tb'), c) : undefined; if(cw || ch){ - c.setSize(cw || undefined, ch || undefined); + boxes.push({ + comp: c, + width: cw || undefined, + height: ch || undefined + }); } } } + for (i = 0, len = boxes.length; i < len; i++) { + c = boxes[i]; + c.comp.setSize(c.width, c.height); + } }, // private parseAnchor : function(a, start, cstart){ if(a && a != 'none'){ var last; - if(/^(r|right|b|bottom)$/i.test(a)){ // standard anchor + // standard anchor + if(this.parseAnchorRE.test(a)){ var diff = cstart - start; return function(v){ if(v !== last){ @@ -163,17 +197,19 @@ anchor: '-50 75%' return v - diff; } } + // percentage }else if(a.indexOf('%') != -1){ - var ratio = parseFloat(a.replace('%', ''))*.01; // percentage + var ratio = parseFloat(a.replace('%', ''))*.01; return function(v){ if(v !== last){ last = v; return Math.floor(v*ratio); } } + // simple offset adjustment }else{ a = parseInt(a, 10); - if(!isNaN(a)){ // simple offset adjustment + if(!isNaN(a)){ return function(v){ if(v !== last){ last = v; @@ -202,6 +238,6 @@ anchor: '-50 75%' */ }); Ext.Container.LAYOUTS['anchor'] = Ext.layout.AnchorLayout; -
- +
+ \ No newline at end of file