1 var XUI_Layout_Tile = X[ 'UI' ][ 'Layout' ][ 'Tile' ] = XUI_createLayout( {
\r
4 overrideAttrsForSelf : {
\r
6 role : [ 0, XUI_Dirty.CLEAN, XUI_Attr_USER.UINODE, XUI_Attr_Type.INIT_ONLY | XUI_Attr_Type.LIST, 'none,chrome,container' ],
\r
7 childWidth : [ '8em', XUI_Dirty.LAYOUT, XUI_Attr_USER.LAYOUT, XUI_Attr_Type.LENGTH | XUI_Attr_Type.PERCENT ],
\r
8 childHeight : [ '8em', XUI_Dirty.LAYOUT, XUI_Attr_USER.LAYOUT, XUI_Attr_Type.LENGTH | XUI_Attr_Type.PERCENT ],
\r
9 gapX : [ 0, XUI_Dirty.LAYOUT, XUI_Attr_USER.LAYOUT, XUI_Attr_Type.LENGTH ],
\r
10 gapY : [ 0, XUI_Dirty.LAYOUT, XUI_Attr_USER.LAYOUT, XUI_Attr_Type.LENGTH ],
\r
11 hCenter : [ true, XUI_Dirty.LAYOUT, XUI_Attr_USER.LAYOUT, XUI_Attr_Type.BOOLEAN ],
\r
12 vCenter : [ true, XUI_Dirty.LAYOUT, XUI_Attr_USER.LAYOUT, XUI_Attr_Type.BOOLEAN ]
\r
15 overrideAttrsForChild : {
\r
24 calculate : function( data, isNeedsDetection, x, y, w, h ){
\r
25 var attrs = data.attrObject || data.attrClass.prototype,
\r
26 gapX, gapY, childW, childH,
\r
27 uinodes, l, i, node,
\r
28 _x, _y, _w, _h, numH, numV, n, startX, __x, __y;
\r
30 data.preMesure( w, h );
\r
32 if( isNeedsDetection && ( data.boxWidth === XUI_Attr_AUTO || data.boxHeight === XUI_Attr_AUTO ) ) return;
\r
34 if( ( uinodes = data.uinodes ) && ( l = uinodes.length ) ){
\r
37 _w = data.contentWidth;
\r
38 gapX = XUI_AbstractUINode_calcValue( attrs[ data.supportAttrs.gapX.No ], contentW );
\r
39 gapY = XUI_AbstractUINode_calcValue( attrs[ data.supportAttrs.gapY.No ], contentH );
\r
40 childW = XUI_AbstractUINode_calcValue( attrs[ data.supportAttrs.childWidth.No ], contentW );
\r
41 childH = XUI_AbstractUINode_calcValue( attrs[ data.supportAttrs.childHeight.No ], contentH );
\r
42 numH = XUI_Attr_FLOOR( ( _w + gapX ) / ( childW + gapX ) );
\r
43 numV = l % numH ? XUI_Attr_FLOOR( l / numH ) + 1 : l / numH;
\r
44 _h = _y + data.contentB + ( childH + gapY ) * numH - gapY;
\r
46 startX = attrs[ data.supportAttrs.hCenter.No ] ?
\r
47 ( _w - ( childW + gapX ) * numH - gapX ) / 2 : _x;
\r
49 __y = attrs[ data.supportAttrs.vCenter.No ] && _h <= h ?
\r
50 ( h - _h ) / 2 + _y : _y;
\r
52 for( i = 0; i < l; ++i ){
\r
53 node = uinodes[ i ];
\r
54 node.calculate( false, __x, __y, childW, childH );
\r
56 if( i % numH === numH - 1 ){
\r
58 __y += childH + gapY;
\r
60 __x += childW + gapX;
\r
64 data.contentHeight = _h;
\r
67 if( data.contentHeight === XUI_Attr_AUTO ){
\r
68 data.contentHeight = data.minContentHeight !== XUI_Attr_AUTO ? data.minContentHeight : 0;
\r
73 if( !isNeedsDetection ){
\r
82 X.UI.TileBox = X.UI.Box.presets(
\r
93 X.UI.TileBox = X.UI.Box.inherits(
\r
97 Constructor : function(){
\r
100 if( !XUI_TileBox ){
\r
101 supports = XUI_Attr_createAttrDef( XUI_Box.prototype.supportAttrs, XUI_Layout_Tile.overrideAttrsForSelf );
\r
103 XUI_TileBox = XUI_Box.inherits(
\r
105 layout : XUI_Layout_Tile,
\r
106 supportAttrs : supports,
\r
107 attrClass : XUI_Attr_preset( XUI_Box.prototype.attrClass, supports, {
\r
116 X_Pair_create( this, XUI_TileBox( this, XUI_Layout_Tile, arguments ) );
\r