⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 widget.js

📁 初学者
💻 JS
字号:
/*	Copyright (c) 2004-2006, The Dojo Foundation	All Rights Reserved.	Licensed under the Academic Free License version 2.1 or above OR the	modified BSD license. For more information on Dojo licensing, see:		http://dojotoolkit.org/community/licensing.shtml*/dojo.provide("dojo.widget.Widget");dojo.require("dojo.lang.func");dojo.require("dojo.lang.array");dojo.require("dojo.lang.extras");dojo.require("dojo.lang.declare");dojo.require("dojo.ns");dojo.require("dojo.widget.Manager");dojo.require("dojo.event.*");dojo.require("dojo.a11y");dojo.declare("dojo.widget.Widget", null, function () {	this.children = [];	this.extraArgs = {};}, {parent:null, isTopLevel:false, disabled:false, isContainer:false, widgetId:"", widgetType:"Widget", ns:"dojo", getNamespacedType:function () {	return (this.ns ? this.ns + ":" + this.widgetType : this.widgetType).toLowerCase();}, toString:function () {	return "[Widget " + this.getNamespacedType() + ", " + (this.widgetId || "NO ID") + "]";}, repr:function () {	return this.toString();}, enable:function () {	this.disabled = false;}, disable:function () {	this.disabled = true;}, onResized:function () {	this.notifyChildrenOfResize();}, notifyChildrenOfResize:function () {	for (var i = 0; i < this.children.length; i++) {		var child = this.children[i];		if (child.onResized) {			child.onResized();		}	}}, create:function (args, fragment, parent, ns) {	if (ns) {		this.ns = ns;	}	this.satisfyPropertySets(args, fragment, parent);	this.mixInProperties(args, fragment, parent);	this.postMixInProperties(args, fragment, parent);	dojo.widget.manager.add(this);	this.buildRendering(args, fragment, parent);	this.initialize(args, fragment, parent);	this.postInitialize(args, fragment, parent);	this.postCreate(args, fragment, parent);	return this;}, destroy:function (finalize) {	if (this.parent) {		this.parent.removeChild(this);	}	this.destroyChildren();	this.uninitialize();	this.destroyRendering(finalize);	dojo.widget.manager.removeById(this.widgetId);}, destroyChildren:function () {	var widget;	var i = 0;	while (this.children.length > i) {		widget = this.children[i];		if (widget instanceof dojo.widget.Widget) {			this.removeChild(widget);			widget.destroy();			continue;		}		i++;	}}, getChildrenOfType:function (type, recurse) {	var ret = [];	var isFunc = dojo.lang.isFunction(type);	if (!isFunc) {		type = type.toLowerCase();	}	for (var x = 0; x < this.children.length; x++) {		if (isFunc) {			if (this.children[x] instanceof type) {				ret.push(this.children[x]);			}		} else {			if (this.children[x].widgetType.toLowerCase() == type) {				ret.push(this.children[x]);			}		}		if (recurse) {			ret = ret.concat(this.children[x].getChildrenOfType(type, recurse));		}	}	return ret;}, getDescendants:function () {	var result = [];	var stack = [this];	var elem;	while ((elem = stack.pop())) {		result.push(elem);		if (elem.children) {			dojo.lang.forEach(elem.children, function (elem) {				stack.push(elem);			});		}	}	return result;}, isFirstChild:function () {	return this === this.parent.children[0];}, isLastChild:function () {	return this === this.parent.children[this.parent.children.length - 1];}, satisfyPropertySets:function (args) {	return args;}, mixInProperties:function (args, frag) {	if ((args["fastMixIn"]) || (frag["fastMixIn"])) {		for (var x in args) {			this[x] = args[x];		}		return;	}	var undef;	var lcArgs = dojo.widget.lcArgsCache[this.widgetType];	if (lcArgs == null) {		lcArgs = {};		for (var y in this) {			lcArgs[((new String(y)).toLowerCase())] = y;		}		dojo.widget.lcArgsCache[this.widgetType] = lcArgs;	}	var visited = {};	for (var x in args) {		if (!this[x]) {			var y = lcArgs[(new String(x)).toLowerCase()];			if (y) {				args[y] = args[x];				x = y;			}		}		if (visited[x]) {			continue;		}		visited[x] = true;		if ((typeof this[x]) != (typeof undef)) {			if (typeof args[x] != "string") {				this[x] = args[x];			} else {				if (dojo.lang.isString(this[x])) {					this[x] = args[x];				} else {					if (dojo.lang.isNumber(this[x])) {						this[x] = new Number(args[x]);					} else {						if (dojo.lang.isBoolean(this[x])) {							this[x] = (args[x].toLowerCase() == "false") ? false : true;						} else {							if (dojo.lang.isFunction(this[x])) {								if (args[x].search(/[^\w\.]+/i) == -1) {									this[x] = dojo.evalObjPath(args[x], false);								} else {									var tn = dojo.lang.nameAnonFunc(new Function(args[x]), this);									dojo.event.kwConnect({srcObj:this, srcFunc:x, adviceObj:this, adviceFunc:tn});								}							} else {								if (dojo.lang.isArray(this[x])) {									this[x] = args[x].split(";");								} else {									if (this[x] instanceof Date) {										this[x] = new Date(Number(args[x]));									} else {										if (typeof this[x] == "object") {											if (this[x] instanceof dojo.uri.Uri) {												this[x] = dojo.uri.dojoUri(args[x]);											} else {												var pairs = args[x].split(";");												for (var y = 0; y < pairs.length; y++) {													var si = pairs[y].indexOf(":");													if ((si != -1) && (pairs[y].length > si)) {														this[x][pairs[y].substr(0, si).replace(/^\s+|\s+$/g, "")] = pairs[y].substr(si + 1);													}												}											}										} else {											this[x] = args[x];										}									}								}							}						}					}				}			}		} else {			this.extraArgs[x.toLowerCase()] = args[x];		}	}}, postMixInProperties:function (args, frag, parent) {}, initialize:function (args, frag, parent) {	return false;}, postInitialize:function (args, frag, parent) {	return false;}, postCreate:function (args, frag, parent) {	return false;}, uninitialize:function () {	return false;}, buildRendering:function (args, frag, parent) {	dojo.unimplemented("dojo.widget.Widget.buildRendering, on " + this.toString() + ", ");	return false;}, destroyRendering:function () {	dojo.unimplemented("dojo.widget.Widget.destroyRendering");	return false;}, addedTo:function (parent) {}, addChild:function (child) {	dojo.unimplemented("dojo.widget.Widget.addChild");	return false;}, removeChild:function (widget) {	for (var x = 0; x < this.children.length; x++) {		if (this.children[x] === widget) {			this.children.splice(x, 1);			widget.parent = null;			break;		}	}	return widget;}, getPreviousSibling:function () {	var idx = this.getParentIndex();	if (idx <= 0) {		return null;	}	return this.parent.children[idx - 1];}, getSiblings:function () {	return this.parent.children;}, getParentIndex:function () {	return dojo.lang.indexOf(this.parent.children, this, true);}, getNextSibling:function () {	var idx = this.getParentIndex();	if (idx == this.parent.children.length - 1) {		return null;	}	if (idx < 0) {		return null;	}	return this.parent.children[idx + 1];}});dojo.widget.lcArgsCache = {};dojo.widget.tags = {};dojo.widget.tags.addParseTreeHandler = function (type) {	dojo.deprecated("addParseTreeHandler", ". ParseTreeHandlers are now reserved for components. Any unfiltered DojoML tag without a ParseTreeHandler is assumed to be a widget", "0.5");};dojo.widget.tags["dojo:propertyset"] = function (fragment, widgetParser, parentComp) {	var properties = widgetParser.parseProperties(fragment["dojo:propertyset"]);};dojo.widget.tags["dojo:connect"] = function (fragment, widgetParser, parentComp) {	var properties = widgetParser.parseProperties(fragment["dojo:connect"]);};dojo.widget.buildWidgetFromParseTree = function (type, frag, parser, parentComp, insertionIndex, localProps) {	dojo.a11y.setAccessibleMode();	var stype = type.split(":");	stype = (stype.length == 2) ? stype[1] : type;	var localProperties = localProps || parser.parseProperties(frag[frag["ns"] + ":" + stype]);	var twidget = dojo.widget.manager.getImplementation(stype, null, null, frag["ns"]);	if (!twidget) {		throw new Error("cannot find \"" + type + "\" widget");	} else {		if (!twidget.create) {			throw new Error("\"" + type + "\" widget object has no \"create\" method and does not appear to implement *Widget");		}	}	localProperties["dojoinsertionindex"] = insertionIndex;	var ret = twidget.create(localProperties, frag, parentComp, frag["ns"]);	return ret;};dojo.widget.defineWidget = function (widgetClass, renderer, superclasses, init, props) {	if (dojo.lang.isString(arguments[3])) {		dojo.widget._defineWidget(arguments[0], arguments[3], arguments[1], arguments[4], arguments[2]);	} else {		var args = [arguments[0]], p = 3;		if (dojo.lang.isString(arguments[1])) {			args.push(arguments[1], arguments[2]);		} else {			args.push("", arguments[1]);			p = 2;		}		if (dojo.lang.isFunction(arguments[p])) {			args.push(arguments[p], arguments[p + 1]);		} else {			args.push(null, arguments[p]);		}		dojo.widget._defineWidget.apply(this, args);	}};dojo.widget.defineWidget.renderers = "html|svg|vml";dojo.widget._defineWidget = function (widgetClass, renderer, superclasses, init, props) {	var module = widgetClass.split(".");	var type = module.pop();	var regx = "\\.(" + (renderer ? renderer + "|" : "") + dojo.widget.defineWidget.renderers + ")\\.";	var r = widgetClass.search(new RegExp(regx));	module = (r < 0 ? module.join(".") : widgetClass.substr(0, r));	dojo.widget.manager.registerWidgetPackage(module);	var pos = module.indexOf(".");	var nsName = (pos > -1) ? module.substring(0, pos) : module;	props = (props) || {};	props.widgetType = type;	if ((!init) && (props["classConstructor"])) {		init = props.classConstructor;		delete props.classConstructor;	}	dojo.declare(widgetClass, superclasses, init, props);};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -