]> git.wh0rd.org - tt-rss.git/blob - lib/dijit/_Widget.js
add dijit/dojo stuff; initial ui mockup
[tt-rss.git] / lib / dijit / _Widget.js
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._Widget"]){
9 dojo._hasResource["dijit._Widget"]=true;
10 dojo.provide("dijit._Widget");
11 dojo.require("dijit._base");
12 dojo.connect(dojo,"_connect",function(_1,_2){
13 if(_1&&dojo.isFunction(_1._onConnect)){
14 _1._onConnect(_2);
15 }
16 });
17 dijit._connectOnUseEventHandler=function(_3){
18 };
19 dijit._lastKeyDownNode=null;
20 if(dojo.isIE){
21 (function(){
22 var _4=function(_5){
23 dijit._lastKeyDownNode=_5.srcElement;
24 };
25 dojo.doc.attachEvent("onkeydown",_4);
26 dojo.addOnWindowUnload(function(){
27 dojo.doc.detachEvent("onkeydown",_4);
28 });
29 })();
30 }else{
31 dojo.doc.addEventListener("keydown",function(_6){
32 dijit._lastKeyDownNode=_6.target;
33 },true);
34 }
35 (function(){
36 var _7={},_8=function(_9){
37 var dc=_9.declaredClass;
38 if(!_7[dc]){
39 var r=[],_a,_b=_9.constructor.prototype;
40 for(var _c in _b){
41 if(dojo.isFunction(_b[_c])&&(_a=_c.match(/^_set([a-zA-Z]*)Attr$/))&&_a[1]){
42 r.push(_a[1].charAt(0).toLowerCase()+_a[1].substr(1));
43 }
44 }
45 _7[dc]=r;
46 }
47 return _7[dc]||[];
48 };
49 dojo.declare("dijit._Widget",null,{id:"",lang:"",dir:"","class":"",style:"",title:"",tooltip:"",baseClass:"",srcNodeRef:null,domNode:null,containerNode:null,attributeMap:{id:"",dir:"",lang:"","class":"",style:"",title:""},_deferredConnects:{onClick:"",onDblClick:"",onKeyDown:"",onKeyPress:"",onKeyUp:"",onMouseMove:"",onMouseDown:"",onMouseOut:"",onMouseOver:"",onMouseLeave:"",onMouseEnter:"",onMouseUp:""},onClick:dijit._connectOnUseEventHandler,onDblClick:dijit._connectOnUseEventHandler,onKeyDown:dijit._connectOnUseEventHandler,onKeyPress:dijit._connectOnUseEventHandler,onKeyUp:dijit._connectOnUseEventHandler,onMouseDown:dijit._connectOnUseEventHandler,onMouseMove:dijit._connectOnUseEventHandler,onMouseOut:dijit._connectOnUseEventHandler,onMouseOver:dijit._connectOnUseEventHandler,onMouseLeave:dijit._connectOnUseEventHandler,onMouseEnter:dijit._connectOnUseEventHandler,onMouseUp:dijit._connectOnUseEventHandler,_blankGif:(dojo.config.blankGif||dojo.moduleUrl("dojo","resources/blank.gif")).toString(),postscript:function(_d,_e){
50 this.create(_d,_e);
51 },create:function(_f,_10){
52 this.srcNodeRef=dojo.byId(_10);
53 this._connects=[];
54 this._subscribes=[];
55 this._deferredConnects=dojo.clone(this._deferredConnects);
56 for(var _11 in this.attributeMap){
57 delete this._deferredConnects[_11];
58 }
59 for(_11 in this._deferredConnects){
60 if(this[_11]!==dijit._connectOnUseEventHandler){
61 delete this._deferredConnects[_11];
62 }
63 }
64 if(this.srcNodeRef&&(typeof this.srcNodeRef.id=="string")){
65 this.id=this.srcNodeRef.id;
66 }
67 if(_f){
68 this.params=_f;
69 dojo.mixin(this,_f);
70 }
71 this.postMixInProperties();
72 if(!this.id){
73 this.id=dijit.getUniqueId(this.declaredClass.replace(/\./g,"_"));
74 }
75 dijit.registry.add(this);
76 this.buildRendering();
77 if(this.domNode){
78 this._applyAttributes();
79 var _12=this.srcNodeRef;
80 if(_12&&_12.parentNode){
81 _12.parentNode.replaceChild(this.domNode,_12);
82 }
83 for(_11 in this.params){
84 this._onConnect(_11);
85 }
86 }
87 if(this.domNode){
88 this.domNode.setAttribute("widgetId",this.id);
89 }
90 this.postCreate();
91 if(this.srcNodeRef&&!this.srcNodeRef.parentNode){
92 delete this.srcNodeRef;
93 }
94 this._created=true;
95 },_applyAttributes:function(){
96 var _13=function(_14,_15){
97 if((_15.params&&_14 in _15.params)||_15[_14]){
98 _15.set(_14,_15[_14]);
99 }
100 };
101 for(var _16 in this.attributeMap){
102 _13(_16,this);
103 }
104 dojo.forEach(_8(this),function(a){
105 if(!(a in this.attributeMap)){
106 _13(a,this);
107 }
108 },this);
109 },postMixInProperties:function(){
110 },buildRendering:function(){
111 this.domNode=this.srcNodeRef||dojo.create("div");
112 },postCreate:function(){
113 if(this.baseClass){
114 var _17=this.baseClass.split(" ");
115 if(!this.isLeftToRight()){
116 _17=_17.concat(dojo.map(_17,function(_18){
117 return _18+"Rtl";
118 }));
119 }
120 dojo.addClass(this.domNode,_17);
121 }
122 },startup:function(){
123 this._started=true;
124 },destroyRecursive:function(_19){
125 this._beingDestroyed=true;
126 this.destroyDescendants(_19);
127 this.destroy(_19);
128 },destroy:function(_1a){
129 this._beingDestroyed=true;
130 this.uninitialize();
131 var d=dojo,dfe=d.forEach,dun=d.unsubscribe;
132 dfe(this._connects,function(_1b){
133 dfe(_1b,d.disconnect);
134 });
135 dfe(this._subscribes,function(_1c){
136 dun(_1c);
137 });
138 dfe(this._supportingWidgets||[],function(w){
139 if(w.destroyRecursive){
140 w.destroyRecursive();
141 }else{
142 if(w.destroy){
143 w.destroy();
144 }
145 }
146 });
147 this.destroyRendering(_1a);
148 dijit.registry.remove(this.id);
149 this._destroyed=true;
150 },destroyRendering:function(_1d){
151 if(this.bgIframe){
152 this.bgIframe.destroy(_1d);
153 delete this.bgIframe;
154 }
155 if(this.domNode){
156 if(_1d){
157 dojo.removeAttr(this.domNode,"widgetId");
158 }else{
159 dojo.destroy(this.domNode);
160 }
161 delete this.domNode;
162 }
163 if(this.srcNodeRef){
164 if(!_1d){
165 dojo.destroy(this.srcNodeRef);
166 }
167 delete this.srcNodeRef;
168 }
169 },destroyDescendants:function(_1e){
170 dojo.forEach(this.getChildren(),function(_1f){
171 if(_1f.destroyRecursive){
172 _1f.destroyRecursive(_1e);
173 }
174 });
175 },uninitialize:function(){
176 return false;
177 },onFocus:function(){
178 },onBlur:function(){
179 },_onFocus:function(e){
180 this.onFocus();
181 },_onBlur:function(){
182 this.onBlur();
183 },_onConnect:function(_20){
184 if(_20 in this._deferredConnects){
185 var _21=this[this._deferredConnects[_20]||"domNode"];
186 this.connect(_21,_20.toLowerCase(),_20);
187 delete this._deferredConnects[_20];
188 }
189 },_setClassAttr:function(_22){
190 var _23=this[this.attributeMap["class"]||"domNode"];
191 dojo.removeClass(_23,this["class"]);
192 this["class"]=_22;
193 dojo.addClass(_23,_22);
194 },_setStyleAttr:function(_24){
195 var _25=this[this.attributeMap.style||"domNode"];
196 if(dojo.isObject(_24)){
197 dojo.style(_25,_24);
198 }else{
199 if(_25.style.cssText){
200 _25.style.cssText+="; "+_24;
201 }else{
202 _25.style.cssText=_24;
203 }
204 }
205 this.style=_24;
206 },setAttribute:function(_26,_27){
207 dojo.deprecated(this.declaredClass+"::setAttribute(attr, value) is deprecated. Use set() instead.","","2.0");
208 this.set(_26,_27);
209 },_attrToDom:function(_28,_29){
210 var _2a=this.attributeMap[_28];
211 dojo.forEach(dojo.isArray(_2a)?_2a:[_2a],function(_2b){
212 var _2c=this[_2b.node||_2b||"domNode"];
213 var _2d=_2b.type||"attribute";
214 switch(_2d){
215 case "attribute":
216 if(dojo.isFunction(_29)){
217 _29=dojo.hitch(this,_29);
218 }
219 var _2e=_2b.attribute?_2b.attribute:(/^on[A-Z][a-zA-Z]*$/.test(_28)?_28.toLowerCase():_28);
220 dojo.attr(_2c,_2e,_29);
221 break;
222 case "innerText":
223 _2c.innerHTML="";
224 _2c.appendChild(dojo.doc.createTextNode(_29));
225 break;
226 case "innerHTML":
227 _2c.innerHTML=_29;
228 break;
229 case "class":
230 dojo.removeClass(_2c,this[_28]);
231 dojo.addClass(_2c,_29);
232 break;
233 }
234 },this);
235 this[_28]=_29;
236 },attr:function(_2f,_30){
237 if(dojo.config.isDebug){
238 var _31=arguments.callee._ach||(arguments.callee._ach={}),_32=(arguments.callee.caller||"unknown caller").toString();
239 if(!_31[_32]){
240 dojo.deprecated(this.declaredClass+"::attr() is deprecated. Use get() or set() instead, called from "+_32,"","2.0");
241 _31[_32]=true;
242 }
243 }
244 var _33=arguments.length;
245 if(_33>=2||typeof _2f==="object"){
246 return this.set.apply(this,arguments);
247 }else{
248 return this.get(_2f);
249 }
250 },get:function(_34){
251 var _35=this._getAttrNames(_34);
252 return this[_35.g]?this[_35.g]():this[_34];
253 },set:function(_36,_37){
254 if(typeof _36==="object"){
255 for(var x in _36){
256 this.set(x,_36[x]);
257 }
258 return this;
259 }
260 var _38=this._getAttrNames(_36);
261 if(this[_38.s]){
262 var _39=this[_38.s].apply(this,Array.prototype.slice.call(arguments,1));
263 }else{
264 if(_36 in this.attributeMap){
265 this._attrToDom(_36,_37);
266 }
267 var _3a=this[_36];
268 this[_36]=_37;
269 }
270 return _39||this;
271 },_attrPairNames:{},_getAttrNames:function(_3b){
272 var apn=this._attrPairNames;
273 if(apn[_3b]){
274 return apn[_3b];
275 }
276 var uc=_3b.charAt(0).toUpperCase()+_3b.substr(1);
277 return (apn[_3b]={n:_3b+"Node",s:"_set"+uc+"Attr",g:"_get"+uc+"Attr"});
278 },toString:function(){
279 return "[Widget "+this.declaredClass+", "+(this.id||"NO ID")+"]";
280 },getDescendants:function(){
281 return this.containerNode?dojo.query("[widgetId]",this.containerNode).map(dijit.byNode):[];
282 },getChildren:function(){
283 return this.containerNode?dijit.findWidgets(this.containerNode):[];
284 },nodesWithKeyClick:["input","button"],connect:function(obj,_3c,_3d){
285 var d=dojo,dc=d._connect,_3e=[];
286 if(_3c=="ondijitclick"){
287 if(dojo.indexOf(this.nodesWithKeyClick,obj.nodeName.toLowerCase())==-1){
288 var m=d.hitch(this,_3d);
289 _3e.push(dc(obj,"onkeydown",this,function(e){
290 if((e.keyCode==d.keys.ENTER||e.keyCode==d.keys.SPACE)&&!e.ctrlKey&&!e.shiftKey&&!e.altKey&&!e.metaKey){
291 dijit._lastKeyDownNode=e.target;
292 e.preventDefault();
293 }
294 }),dc(obj,"onkeyup",this,function(e){
295 if((e.keyCode==d.keys.ENTER||e.keyCode==d.keys.SPACE)&&e.target===dijit._lastKeyDownNode&&!e.ctrlKey&&!e.shiftKey&&!e.altKey&&!e.metaKey){
296 dijit._lastKeyDownNode=null;
297 return m(e);
298 }
299 }));
300 }
301 _3c="onclick";
302 }
303 _3e.push(dc(obj,_3c,this,_3d));
304 this._connects.push(_3e);
305 return _3e;
306 },disconnect:function(_3f){
307 for(var i=0;i<this._connects.length;i++){
308 if(this._connects[i]==_3f){
309 dojo.forEach(_3f,dojo.disconnect);
310 this._connects.splice(i,1);
311 return;
312 }
313 }
314 },subscribe:function(_40,_41){
315 var d=dojo,_42=d.subscribe(_40,this,_41);
316 this._subscribes.push(_42);
317 return _42;
318 },unsubscribe:function(_43){
319 for(var i=0;i<this._subscribes.length;i++){
320 if(this._subscribes[i]==_43){
321 dojo.unsubscribe(_43);
322 this._subscribes.splice(i,1);
323 return;
324 }
325 }
326 },isLeftToRight:function(){
327 return this.dir?(this.dir=="ltr"):dojo._isBodyLtr();
328 },isFocusable:function(){
329 return this.focus&&(dojo.style(this.domNode,"display")!="none");
330 },placeAt:function(_44,_45){
331 if(_44.declaredClass&&_44.addChild){
332 _44.addChild(this,_45);
333 }else{
334 dojo.place(this.domNode,_44,_45);
335 }
336 return this;
337 },_onShow:function(){
338 this.onShow();
339 },onShow:function(){
340 },onHide:function(){
341 },onClose:function(){
342 return true;
343 }});
344 })();
345 }