OSDN Git Service

Fix the bug of X.NodeAnime.
[pettanr/clientJs.git] / 0.6.x / js / 20_ui / 17_Text.js
1 var X_UI_Text_SUPPORT_ATTRS = {\r
2                 content   : [ '' , XUI_Dirty.CONTENT, XUI_Attr_USER.UINODE, XUI_Attr_Type.STRING ],\r
3                 bgColor   : [ NaN, XUI_Dirty.PAINT,  XUI_Attr_USER.XNODE,  XUI_Attr_Type.COLOR ]\r
4 },\r
5 \r
6 X_UI_Text_usableAttrs = XUI_Attr_createAttrDef( XUI_AbstractUINode.prototype.usableAttrs, X_UI_Text_SUPPORT_ATTRS );\r
7 \r
8 var XUI_Text = XUI_AbstractUINode.inherits(\r
9         '_Text',\r
10         X_Class.NONE,\r
11         {\r
12                 content     : '',\r
13                 \r
14                 usableAttrs : __textAttrs = X_UI_Text_usableAttrs,\r
15                 \r
16                 attrClass   : XUI_Attr_preset( XUI_AbstractUINode.prototype.attrClass,  X_UI_Text_usableAttrs ),\r
17                 \r
18                 Constructor : function( user, content ){\r
19                         if( !( user[ 'instanceOf' ]( X.UI.Text ) ) ){\r
20                                 alert( 'Text を継承したインスタンスだけが _Text のオーナーになれます' );\r
21                         };\r
22                         this.User  = user;\r
23                         this.xnode = X_Doc_create( 'div' );\r
24                         \r
25                         if( content != null ){\r
26                                 this.content = '' + content;\r
27                         };\r
28                 },\r
29                 \r
30                 creationComplete : function(){\r
31                         if( X_Type_isString( this.content ) && this.content ){\r
32                                 this.xnode[ 'text' ]( this.content );\r
33                                 this.dirty   = XUI_Dirty.CONTENT;\r
34                         };\r
35                         \r
36                         XUI_AbstractUINode.prototype.creationComplete.apply( this, arguments );                 \r
37                 },\r
38                 \r
39                 setContent : function( v ){\r
40                         if( this.content !== v ){\r
41                                 this.content = v;\r
42                                 this.xnode && this.xnode[ 'text' ]( v );\r
43                                 this.rootData.reserveCalc();\r
44                                 if( this.dirty < XUI_Dirty.CONTENT ) this.dirty = XUI_Dirty.CONTENT;\r
45                         };\r
46                         return this;\r
47                 },\r
48                 \r
49                 setItemData : function( itemData ){\r
50                         if( this.itemData === itemData ) return;\r
51                         \r
52                         XUI_AbstractUINode.prototype.setItemData.apply( this, arguments );\r
53                         \r
54                         if( X_Type_isObject( itemData = this.itemData ) && itemData[ this.dataFeild ] != null ){\r
55                                 this.setContent( '' + itemData[ this.dataFeild ] );\r
56                         };\r
57                 }\r
58         }\r
59 );\r
60 \r
61 X.UI.Text = X.UI.AbstractUINode.inherits(\r
62         'Text',\r
63         X_Class.NONE,\r
64         {\r
65                 Constructor : function( opt_content, opt_attrObj ){\r
66                         X_Pair_create( this, XUI_Text( this, opt_content ) );\r
67 \r
68                         X_Type_isObject( opt_attrObj = opt_attrObj || opt_content ) && this[ 'attr' ]( opt_attrObj );\r
69                 },\r
70                 content : function( v ){\r
71                         var data = X_Pair_get( this ),\r
72                                 content = data.content;\r
73                         \r
74                         if( v === undefined ){\r
75                                 return content;\r
76                         };\r
77                         v += '';\r
78                         content !== v && data.setContent( v );\r
79                         return this;\r
80                 }\r
81         }\r
82 );