From 2f01fe57a8d37767827d6db42850aef86a767c53 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Mon, 15 Nov 2010 10:39:52 +0300 Subject: add dijit/dojo stuff; initial ui mockup --- lib/dijit/layout/ContentPane.js | 291 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 291 insertions(+) create mode 100644 lib/dijit/layout/ContentPane.js (limited to 'lib/dijit/layout/ContentPane.js') diff --git a/lib/dijit/layout/ContentPane.js b/lib/dijit/layout/ContentPane.js new file mode 100644 index 000000000..56952800a --- /dev/null +++ b/lib/dijit/layout/ContentPane.js @@ -0,0 +1,291 @@ +/* + Copyright (c) 2004-2010, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + + +if(!dojo._hasResource["dijit.layout.ContentPane"]){ +dojo._hasResource["dijit.layout.ContentPane"]=true; +dojo.provide("dijit.layout.ContentPane"); +dojo.require("dijit._Widget"); +dojo.require("dijit._Contained"); +dojo.require("dijit.layout._LayoutWidget"); +dojo.require("dojo.parser"); +dojo.require("dojo.string"); +dojo.require("dojo.html"); +dojo.requireLocalization("dijit","loading",null,"ROOT,ar,ca,cs,da,de,el,es,fi,fr,he,hu,it,ja,ko,nb,nl,pl,pt,pt-pt,ro,ru,sk,sl,sv,th,tr,zh,zh-tw"); +dojo.declare("dijit.layout.ContentPane",dijit._Widget,{href:"",extractContent:false,parseOnLoad:true,preventCache:false,preload:false,refreshOnShow:false,loadingMessage:"${loadingState}",errorMessage:"${errorState}",isLoaded:false,baseClass:"dijitContentPane",doLayout:true,ioArgs:{},isContainer:true,isLayoutContainer:true,onLoadDeferred:null,attributeMap:dojo.delegate(dijit._Widget.prototype.attributeMap,{title:[]}),postMixInProperties:function(){ +this.inherited(arguments); +var _1=dojo.i18n.getLocalization("dijit","loading",this.lang); +this.loadingMessage=dojo.string.substitute(this.loadingMessage,_1); +this.errorMessage=dojo.string.substitute(this.errorMessage,_1); +if(!this.href&&this.srcNodeRef&&this.srcNodeRef.innerHTML){ +this.isLoaded=true; +} +},buildRendering:function(){ +this.inherited(arguments); +if(!this.containerNode){ +this.containerNode=this.domNode; +} +},postCreate:function(){ +this.domNode.title=""; +if(!dojo.attr(this.domNode,"role")){ +dijit.setWaiRole(this.domNode,"group"); +} +dojo.addClass(this.domNode,this.baseClass); +},startup:function(){ +if(this._started){ +return; +} +var _2=dijit._Contained.prototype.getParent.call(this); +this._childOfLayoutWidget=_2&&_2.isLayoutContainer; +this._needLayout=!this._childOfLayoutWidget; +if(this.isLoaded){ +dojo.forEach(this.getChildren(),function(_3){ +_3.startup(); +}); +} +if(this._isShown()||this.preload){ +this._onShow(); +} +this.inherited(arguments); +},_checkIfSingleChild:function(){ +var _4=dojo.query("> *",this.containerNode).filter(function(_5){ +return _5.tagName!=="SCRIPT"; +}),_6=_4.filter(function(_7){ +return dojo.hasAttr(_7,"dojoType")||dojo.hasAttr(_7,"widgetId"); +}),_8=dojo.filter(_6.map(dijit.byNode),function(_9){ +return _9&&_9.domNode&&_9.resize; +}); +if(_4.length==_6.length&&_8.length==1){ +this._singleChild=_8[0]; +}else{ +delete this._singleChild; +} +dojo.toggleClass(this.containerNode,this.baseClass+"SingleChild",!!this._singleChild); +},setHref:function(_a){ +dojo.deprecated("dijit.layout.ContentPane.setHref() is deprecated. Use set('href', ...) instead.","","2.0"); +return this.set("href",_a); +},_setHrefAttr:function(_b){ +this.cancel(); +this.onLoadDeferred=new dojo.Deferred(dojo.hitch(this,"cancel")); +this.href=_b; +if(this._created&&(this.preload||this._isShown())){ +this._load(); +}else{ +this._hrefChanged=true; +} +return this.onLoadDeferred; +},setContent:function(_c){ +dojo.deprecated("dijit.layout.ContentPane.setContent() is deprecated. Use set('content', ...) instead.","","2.0"); +this.set("content",_c); +},_setContentAttr:function(_d){ +this.href=""; +this.cancel(); +this.onLoadDeferred=new dojo.Deferred(dojo.hitch(this,"cancel")); +this._setContent(_d||""); +this._isDownloaded=false; +return this.onLoadDeferred; +},_getContentAttr:function(){ +return this.containerNode.innerHTML; +},cancel:function(){ +if(this._xhrDfd&&(this._xhrDfd.fired==-1)){ +this._xhrDfd.cancel(); +} +delete this._xhrDfd; +this.onLoadDeferred=null; +},uninitialize:function(){ +if(this._beingDestroyed){ +this.cancel(); +} +this.inherited(arguments); +},destroyRecursive:function(_e){ +if(this._beingDestroyed){ +return; +} +this.inherited(arguments); +},resize:function(_f,_10){ +if(!this._wasShown){ +this._onShow(); +} +this._resizeCalled=true; +if(_f){ +dojo.marginBox(this.domNode,_f); +} +var cn=this.containerNode; +if(cn===this.domNode){ +var mb=_10||{}; +dojo.mixin(mb,_f||{}); +if(!("h" in mb)||!("w" in mb)){ +mb=dojo.mixin(dojo.marginBox(cn),mb); +} +this._contentBox=dijit.layout.marginBox2contentBox(cn,mb); +}else{ +this._contentBox=dojo.contentBox(cn); +} +this._layoutChildren(); +},_isShown:function(){ +if(this._childOfLayoutWidget){ +if(this._resizeCalled&&"open" in this){ +return this.open; +} +return this._resizeCalled; +}else{ +if("open" in this){ +return this.open; +}else{ +var _11=this.domNode; +return (_11.style.display!="none")&&(_11.style.visibility!="hidden")&&!dojo.hasClass(_11,"dijitHidden"); +} +} +},_onShow:function(){ +if(this.href){ +if(!this._xhrDfd&&(!this.isLoaded||this._hrefChanged||this.refreshOnShow)){ +this.refresh(); +} +}else{ +if(!this._childOfLayoutWidget&&this._needLayout){ +this._layoutChildren(); +} +} +this.inherited(arguments); +this._wasShown=true; +},refresh:function(){ +this.cancel(); +this.onLoadDeferred=new dojo.Deferred(dojo.hitch(this,"cancel")); +this._load(); +return this.onLoadDeferred; +},_load:function(){ +this._setContent(this.onDownloadStart(),true); +var _12=this; +var _13={preventCache:(this.preventCache||this.refreshOnShow),url:this.href,handleAs:"text"}; +if(dojo.isObject(this.ioArgs)){ +dojo.mixin(_13,this.ioArgs); +} +var _14=(this._xhrDfd=(this.ioMethod||dojo.xhrGet)(_13)); +_14.addCallback(function(_15){ +try{ +_12._isDownloaded=true; +_12._setContent(_15,false); +_12.onDownloadEnd(); +} +catch(err){ +_12._onError("Content",err); +} +delete _12._xhrDfd; +return _15; +}); +_14.addErrback(function(err){ +if(!_14.canceled){ +_12._onError("Download",err); +} +delete _12._xhrDfd; +return err; +}); +delete this._hrefChanged; +},_onLoadHandler:function(_16){ +this.isLoaded=true; +try{ +this.onLoadDeferred.callback(_16); +this.onLoad(_16); +} +catch(e){ +console.error("Error "+this.widgetId+" running custom onLoad code: "+e.message); +} +},_onUnloadHandler:function(){ +this.isLoaded=false; +try{ +this.onUnload(); +} +catch(e){ +console.error("Error "+this.widgetId+" running custom onUnload code: "+e.message); +} +},destroyDescendants:function(){ +if(this.isLoaded){ +this._onUnloadHandler(); +} +var _17=this._contentSetter; +dojo.forEach(this.getChildren(),function(_18){ +if(_18.destroyRecursive){ +_18.destroyRecursive(); +} +}); +if(_17){ +dojo.forEach(_17.parseResults,function(_19){ +if(_19.destroyRecursive&&_19.domNode&&_19.domNode.parentNode==dojo.body()){ +_19.destroyRecursive(); +} +}); +delete _17.parseResults; +} +dojo.html._emptyNode(this.containerNode); +delete this._singleChild; +},_setContent:function(_1a,_1b){ +this.destroyDescendants(); +var _1c=this._contentSetter; +if(!(_1c&&_1c instanceof dojo.html._ContentSetter)){ +_1c=this._contentSetter=new dojo.html._ContentSetter({node:this.containerNode,_onError:dojo.hitch(this,this._onError),onContentError:dojo.hitch(this,function(e){ +var _1d=this.onContentError(e); +try{ +this.containerNode.innerHTML=_1d; +} +catch(e){ +console.error("Fatal "+this.id+" could not change content due to "+e.message,e); +} +})}); +} +var _1e=dojo.mixin({cleanContent:this.cleanContent,extractContent:this.extractContent,parseContent:this.parseOnLoad,dir:this.dir,lang:this.lang},this._contentSetterParams||{}); +dojo.mixin(_1c,_1e); +_1c.set((dojo.isObject(_1a)&&_1a.domNode)?_1a.domNode:_1a); +delete this._contentSetterParams; +if(!_1b){ +dojo.forEach(this.getChildren(),function(_1f){ +if(!this.parseOnLoad||_1f.getParent){ +_1f.startup(); +} +},this); +this._scheduleLayout(); +this._onLoadHandler(_1a); +} +},_onError:function(_20,err,_21){ +this.onLoadDeferred.errback(err); +var _22=this["on"+_20+"Error"].call(this,err); +if(_21){ +console.error(_21,err); +}else{ +if(_22){ +this._setContent(_22,true); +} +} +},_scheduleLayout:function(){ +if(this._isShown()){ +this._layoutChildren(); +}else{ +this._needLayout=true; +} +},_layoutChildren:function(){ +if(this.doLayout){ +this._checkIfSingleChild(); +} +if(this._singleChild&&this._singleChild.resize){ +var cb=this._contentBox||dojo.contentBox(this.containerNode); +this._singleChild.resize({w:cb.w,h:cb.h}); +}else{ +dojo.forEach(this.getChildren(),function(_23){ +if(_23.resize){ +_23.resize(); +} +}); +} +delete this._needLayout; +},onLoad:function(_24){ +},onUnload:function(){ +},onDownloadStart:function(){ +return this.loadingMessage; +},onContentError:function(_25){ +},onDownloadError:function(_26){ +return this.errorMessage; +},onDownloadEnd:function(){ +}}); +} -- cgit v1.2.3