127 lines
3.1 KiB
JavaScript
127 lines
3.1 KiB
JavaScript
//>>built
|
|
define("dojox/mobile/ContentPane", [
|
|
"dojo/_base/kernel",
|
|
"dojo/_base/array",
|
|
"dojo/_base/declare",
|
|
"dojo/_base/lang",
|
|
"dojo/_base/window",
|
|
"dijit/_Contained",
|
|
"dijit/_WidgetBase",
|
|
"dojo/_base/xhr",
|
|
"./ProgressIndicator"
|
|
], function(dojo, array, declare, lang, win, Contained, WidgetBase, xhr, ProgressIndicator){
|
|
|
|
/*=====
|
|
var Contained = dijit._Contained;
|
|
var WidgetBase = dijit._WidgetBase;
|
|
=====*/
|
|
|
|
// module:
|
|
// dojox/mobile/ContentPane
|
|
// summary:
|
|
// A very simple content pane to embed an HTML fragment.
|
|
|
|
return declare("dojox.mobile.ContentPane", [WidgetBase, Contained],{
|
|
// summary:
|
|
// A very simple content pane to embed an HTML fragment.
|
|
// description:
|
|
// This widget embeds an HTML fragment and run the parser. onLoad()
|
|
// is called when parsing is done and the content is ready.
|
|
// "dojo/_base/xhr" is in the dependency list. Usually this is not
|
|
// necessary, but there is a case where dojox.mobile custom build
|
|
// does not contain xhr. Note that this widget does not inherit
|
|
// from dijit._Container.
|
|
|
|
// href: String
|
|
// URL of the content to embed.
|
|
href: "",
|
|
|
|
// content: String
|
|
// An html fragment to embed.
|
|
content: "",
|
|
|
|
// parseOnLoad: Boolean
|
|
// If true, runs the parser when the load completes.
|
|
parseOnLoad: true,
|
|
|
|
// prog: Boolean
|
|
// If true, shows progress indicator.
|
|
prog: true,
|
|
|
|
buildRendering: function(){
|
|
this.inherited(arguments);
|
|
this.domNode.className = "mblContentPane";
|
|
if(!this.containerNode){
|
|
this.containerNode = this.domNode;
|
|
}
|
|
},
|
|
|
|
startup: function(){
|
|
if(this._started){ return; }
|
|
if(this.prog){
|
|
this._p = ProgressIndicator.getInstance();
|
|
}
|
|
var parent = this.getParent && this.getParent();
|
|
if(!parent || !parent.resize){ // top level widget
|
|
this.resize();
|
|
}
|
|
this.inherited(arguments);
|
|
},
|
|
|
|
resize: function(){
|
|
// summary:
|
|
// Calls resize() of each child widget.
|
|
array.forEach(this.getChildren(), function(child){
|
|
if(child.resize){ child.resize(); }
|
|
});
|
|
},
|
|
|
|
loadHandler: function(/*String*/response){
|
|
// summary:
|
|
// A handler called when load completes.
|
|
this.set("content", response);
|
|
},
|
|
|
|
errorHandler: function(err){
|
|
// summary:
|
|
// An error handler called when load fails.
|
|
if(this._p){ this._p.stop(); }
|
|
},
|
|
|
|
onLoad: function(){
|
|
// summary:
|
|
// Stub method to allow the application to connect to.
|
|
// Called when parsing is done and the content is ready.
|
|
},
|
|
|
|
_setHrefAttr: function(/*String*/href){
|
|
var p = this._p;
|
|
if(p){
|
|
win.body().appendChild(p.domNode);
|
|
p.start();
|
|
}
|
|
this.href = href;
|
|
xhr.get({
|
|
url: href,
|
|
handleAs: "text",
|
|
load: lang.hitch(this, "loadHandler"),
|
|
error: lang.hitch(this, "errorHandler")
|
|
});
|
|
},
|
|
|
|
_setContentAttr: function(/*String|DomNode*/data){
|
|
this.destroyDescendants();
|
|
if(typeof data === "object"){
|
|
this.domNode.appendChild(data);
|
|
}else{
|
|
this.domNode.innerHTML = data;
|
|
}
|
|
if(this.parseOnLoad){
|
|
dojo.parser.parse(this.domNode);
|
|
}
|
|
if(this._p){ this._p.stop(); }
|
|
this.onLoad();
|
|
}
|
|
});
|
|
});
|