1 var XUI_Layout_Vertical = X[ 'UI' ][ 'Layout' ][ 'Vertical' ] = XUI_createLayout( {
\r
3 name : 'VerticalLayout',
\r
8 overrideAttrsForSelf : {
\r
10 role : [ 0, XUI_Dirty.CLEAN, XUI_Attr_USER.UINODE, XUI_Attr_Type.INIT_ONLY | XUI_Attr_Type.LIST, 'none,chrome,container' ],
\r
11 width : [ '100%', XUI_Dirty.LAYOUT, XUI_Attr_USER.LAYOUT, XUI_Attr_Type.LENGTH | XUI_Attr_Type.PERCENT | XUI_Attr_Type.AUTO ],
\r
12 height : [ XUI_Attr_AUTO, XUI_Dirty.LAYOUT, XUI_Attr_USER.LAYOUT, XUI_Attr_Type.LENGTH | XUI_Attr_Type.PERCENT | XUI_Attr_Type.AUTO ],
\r
13 childWidth : [ XUI_Attr_AUTO, XUI_Dirty.LAYOUT, XUI_Attr_USER.LAYOUT, XUI_Attr_Type.LENGTH | XUI_Attr_Type.PERCENT | XUI_Attr_Type.AUTO ],
\r
14 childHeight : [ XUI_Attr_AUTO, XUI_Dirty.LAYOUT, XUI_Attr_USER.LAYOUT, XUI_Attr_Type.LENGTH | XUI_Attr_Type.PERCENT | XUI_Attr_Type.AUTO ],
\r
15 gapY : [ 0, XUI_Dirty.LAYOUT, XUI_Attr_USER.LAYOUT, XUI_Attr_Type.LENGTH ]
\r
18 overrideAttrsForChild : {
\r
25 calculate : function( data, isNeedsDetection, x, y, w, h ){
\r
26 var ret = isNeedsDetection,
\r
27 attrs = data.attrObject || data.attrClass.prototype,
\r
28 uinodes = data.uinodes,
\r
29 l = uinodes && uinodes.length,
\r
31 childW, childH, gapY,
\r
32 i, _x, _y, _w, node,
\r
33 contentW, contentH, autoW, autoH, detectionPhase;
\r
35 data.preMesure( w, h );
\r
37 contentW = data.contentWidth;
\r
38 contentH = data.contentHeight;
\r
39 autoW = contentW === XUI_Attr_AUTO;
\r
40 autoH = contentH === XUI_Attr_AUTO;
\r
41 detectionPhase = autoW || autoH;
\r
42 gapY = XUI_AbstractUINode_calcValue( attrs[ data.usableAttrs.gapY.No ], contentH );
\r
43 childW = XUI_AbstractUINode_calcValue( attrs[ data.usableAttrs.childWidth.No ], contentW );
\r
44 childH = XUI_AbstractUINode_calcValue( attrs[ data.usableAttrs.childHeight.No ], contentH );
\r
46 _y = 0; //data.contentT;
\r
48 if( !detectionPhase ) ret = false;
\r
52 for( i = 0; i < l; ++i ){
\r
53 node = uinodes[ i ];
\r
54 node.calculate( detectionPhase, 0, _y, contentW, childH );
\r
55 _y += node.boxHeight + gapY;
\r
56 //console.dir( node );
\r
57 // 概算のみ, 子要素の最大幅を調べる _w
\r
59 if( node.boxWidth !== XUI_Attr_AUTO ){
\r
62 if( node.boxWidthMin !== XUI_Attr_AUTO ){
\r
63 w = node.boxWidthMin;
\r
68 if( _w < w ) _w = w;
\r
73 _y = data.contentHeightMin !== XUI_Attr_AUTO ? data.contentHeightMin : 0;
\r
76 if( detectionPhase ){
\r
77 if( autoW ) data.contentWidth = _w;
\r
78 if( autoH ) data.contentHeight = _y;// - data.contentT;
\r
79 _y = 0;//data.contentT;
\r
80 for( i = 0; i < l; ++i ){
\r
81 node = uinodes[ i ];
\r
82 node.calculate( false, 0, _y, data.contentWidth, data.contentHeight );
\r
83 _y += node.boxHeight + gapY;
\r
88 if( !isNeedsDetection ){
\r
98 X.UI.VBox = X.UI.Box.inherits(
\r
102 Constructor : function(){
\r
106 supports = XUI_Attr_createAttrDef( XUI_Box.prototype.usableAttrs, XUI_Layout_Vertical.overrideAttrsForSelf );
\r
108 XUI_VBox = XUI_Box.inherits(
\r
110 layout : XUI_Layout_Vertical,
\r
111 usableAttrs : supports,
\r
112 attrClass : XUI_Attr_preset( XUI_Box.prototype.attrClass, supports, {
\r
114 childWidth : '100%'
\r
119 X_Pair_create( this, XUI_VBox( this, XUI_Layout_Vertical, arguments ) );
\r