|
Struts example source code file (Widget.js)
The Struts Widget.js source code/* 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); }; Other Struts examples (source code examples)Here is a short list of links related to this Struts Widget.js source code file: |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.