]>
Commit | Line | Data |
---|---|---|
2f01fe57 AD |
1 | /* |
2 | Copyright (c) 2004-2010, The Dojo Foundation All Rights Reserved. | |
3 | Available via Academic Free License >= 2.1 OR the modified BSD license. | |
4 | see: http://dojotoolkit.org/license for details | |
5 | */ | |
6 | ||
7 | ||
8 | if(!dojo._hasResource["dijit._CssStateMixin"]){ | |
9 | dojo._hasResource["dijit._CssStateMixin"]=true; | |
10 | dojo.provide("dijit._CssStateMixin"); | |
11 | dojo.declare("dijit._CssStateMixin",[],{cssStateNodes:{},postCreate:function(){ | |
12 | this.inherited(arguments); | |
13 | dojo.forEach(["onmouseenter","onmouseleave","onmousedown"],function(e){ | |
14 | this.connect(this.domNode,e,"_cssMouseEvent"); | |
15 | },this); | |
16 | this.connect(this,"set",function(_1,_2){ | |
17 | if(arguments.length>=2&&{disabled:true,readOnly:true,checked:true,selected:true}[_1]){ | |
18 | this._setStateClass(); | |
19 | } | |
20 | }); | |
21 | dojo.forEach(["_onFocus","_onBlur"],function(ap){ | |
22 | this.connect(this,ap,"_setStateClass"); | |
23 | },this); | |
24 | for(var ap in this.cssStateNodes){ | |
25 | this._trackMouseState(this[ap],this.cssStateNodes[ap]); | |
26 | } | |
27 | this._setStateClass(); | |
28 | },_cssMouseEvent:function(_3){ | |
29 | if(!this.disabled){ | |
30 | switch(_3.type){ | |
31 | case "mouseenter": | |
32 | case "mouseover": | |
33 | this._hovering=true; | |
34 | this._active=this._mouseDown; | |
35 | break; | |
36 | case "mouseleave": | |
37 | case "mouseout": | |
38 | this._hovering=false; | |
39 | this._active=false; | |
40 | break; | |
41 | case "mousedown": | |
42 | this._active=true; | |
43 | this._mouseDown=true; | |
44 | var _4=this.connect(dojo.body(),"onmouseup",function(){ | |
45 | this._active=false; | |
46 | this._mouseDown=false; | |
47 | this._setStateClass(); | |
48 | this.disconnect(_4); | |
49 | }); | |
50 | break; | |
51 | } | |
52 | this._setStateClass(); | |
53 | } | |
54 | },_setStateClass:function(){ | |
55 | var _5=this.baseClass.split(" "); | |
56 | function _6(_7){ | |
57 | _5=_5.concat(dojo.map(_5,function(c){ | |
58 | return c+_7; | |
59 | }),"dijit"+_7); | |
60 | }; | |
61 | if(!this.isLeftToRight()){ | |
62 | _6("Rtl"); | |
63 | } | |
64 | if(this.checked){ | |
65 | _6("Checked"); | |
66 | } | |
67 | if(this.state){ | |
68 | _6(this.state); | |
69 | } | |
70 | if(this.selected){ | |
71 | _6("Selected"); | |
72 | } | |
73 | if(this.disabled){ | |
74 | _6("Disabled"); | |
75 | }else{ | |
76 | if(this.readOnly){ | |
77 | _6("ReadOnly"); | |
78 | }else{ | |
79 | if(this._active){ | |
80 | _6("Active"); | |
81 | }else{ | |
82 | if(this._hovering){ | |
83 | _6("Hover"); | |
84 | } | |
85 | } | |
86 | } | |
87 | } | |
88 | if(this._focused){ | |
89 | _6("Focused"); | |
90 | } | |
91 | var tn=this.stateNode||this.domNode,_8={}; | |
92 | dojo.forEach(tn.className.split(" "),function(c){ | |
93 | _8[c]=true; | |
94 | }); | |
95 | if("_stateClasses" in this){ | |
96 | dojo.forEach(this._stateClasses,function(c){ | |
97 | delete _8[c]; | |
98 | }); | |
99 | } | |
100 | dojo.forEach(_5,function(c){ | |
101 | _8[c]=true; | |
102 | }); | |
103 | var _9=[]; | |
104 | for(var c in _8){ | |
105 | _9.push(c); | |
106 | } | |
107 | tn.className=_9.join(" "); | |
108 | this._stateClasses=_5; | |
109 | },_trackMouseState:function(_a,_b){ | |
110 | var _c=false,_d=false,_e=false; | |
111 | var _f=this,cn=dojo.hitch(this,"connect",_a); | |
112 | function _10(){ | |
113 | var _11=("disabled" in _f&&_f.disabled)||("readonly" in _f&&_f.readonly); | |
114 | dojo.toggleClass(_a,_b+"Hover",_c&&!_d&&!_11); | |
115 | dojo.toggleClass(_a,_b+"Active",_d&&!_11); | |
116 | dojo.toggleClass(_a,_b+"Focused",_e&&!_11); | |
117 | }; | |
118 | cn("onmouseenter",function(){ | |
119 | _c=true; | |
120 | _10(); | |
121 | }); | |
122 | cn("onmouseleave",function(){ | |
123 | _c=false; | |
124 | _d=false; | |
125 | _10(); | |
126 | }); | |
127 | cn("onmousedown",function(){ | |
128 | _d=true; | |
129 | _10(); | |
130 | }); | |
131 | cn("onmouseup",function(){ | |
132 | _d=false; | |
133 | _10(); | |
134 | }); | |
135 | cn("onfocus",function(){ | |
136 | _e=true; | |
137 | _10(); | |
138 | }); | |
139 | cn("onblur",function(){ | |
140 | _e=false; | |
141 | _10(); | |
142 | }); | |
143 | this.connect(this,"set",function(_12,_13){ | |
144 | if(_12=="disabled"||_12=="readOnly"){ | |
145 | _10(); | |
146 | } | |
147 | }); | |
148 | }}); | |
149 | } |