Manager.js
资源名称:oa.rar [点击查看]
上传用户:kimgenplus
上传日期:2016-06-05
资源大小:20877k
文件大小:8k
源码类别:
OA系统
开发平台:
Java
- /*
- 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.Manager");
- dojo.require("dojo.lang.array");
- dojo.require("dojo.lang.func");
- dojo.require("dojo.event.*");
- dojo.widget.manager = new function () {
- this.widgets = [];
- this.widgetIds = [];
- this.topWidgets = {};
- var widgetTypeCtr = {};
- var renderPrefixCache = [];
- this.getUniqueId = function (widgetType) {
- var widgetId;
- do {
- widgetId = widgetType + "_" + (widgetTypeCtr[widgetType] != undefined ? ++widgetTypeCtr[widgetType] : widgetTypeCtr[widgetType] = 0);
- } while (this.getWidgetById(widgetId));
- return widgetId;
- };
- this.add = function (widget) {
- this.widgets.push(widget);
- if (!widget.extraArgs["id"]) {
- widget.extraArgs["id"] = widget.extraArgs["ID"];
- }
- if (widget.widgetId == "") {
- if (widget["id"]) {
- widget.widgetId = widget["id"];
- } else {
- if (widget.extraArgs["id"]) {
- widget.widgetId = widget.extraArgs["id"];
- } else {
- widget.widgetId = this.getUniqueId(widget.ns + "_" + widget.widgetType);
- }
- }
- }
- if (this.widgetIds[widget.widgetId]) {
- dojo.debug("widget ID collision on ID: " + widget.widgetId);
- }
- this.widgetIds[widget.widgetId] = widget;
- };
- this.destroyAll = function () {
- for (var x = this.widgets.length - 1; x >= 0; x--) {
- try {
- this.widgets[x].destroy(true);
- delete this.widgets[x];
- }
- catch (e) {
- }
- }
- };
- this.remove = function (widgetIndex) {
- if (dojo.lang.isNumber(widgetIndex)) {
- var tw = this.widgets[widgetIndex].widgetId;
- delete this.topWidgets[tw];
- delete this.widgetIds[tw];
- this.widgets.splice(widgetIndex, 1);
- } else {
- this.removeById(widgetIndex);
- }
- };
- this.removeById = function (id) {
- if (!dojo.lang.isString(id)) {
- id = id["widgetId"];
- if (!id) {
- dojo.debug("invalid widget or id passed to removeById");
- return;
- }
- }
- for (var i = 0; i < this.widgets.length; i++) {
- if (this.widgets[i].widgetId == id) {
- this.remove(i);
- break;
- }
- }
- };
- this.getWidgetById = function (id) {
- if (dojo.lang.isString(id)) {
- return this.widgetIds[id];
- }
- return id;
- };
- this.getWidgetsByType = function (type) {
- var lt = type.toLowerCase();
- var getType = (type.indexOf(":") < 0 ? function (x) {
- return x.widgetType.toLowerCase();
- } : function (x) {
- return x.getNamespacedType();
- });
- var ret = [];
- dojo.lang.forEach(this.widgets, function (x) {
- if (getType(x) == lt) {
- ret.push(x);
- }
- });
- return ret;
- };
- this.getWidgetsByFilter = function (unaryFunc, onlyOne) {
- var ret = [];
- dojo.lang.every(this.widgets, function (x) {
- if (unaryFunc(x)) {
- ret.push(x);
- if (onlyOne) {
- return false;
- }
- }
- return true;
- });
- return (onlyOne ? ret[0] : ret);
- };
- this.getAllWidgets = function () {
- return this.widgets.concat();
- };
- this.getWidgetByNode = function (node) {
- var w = this.getAllWidgets();
- node = dojo.byId(node);
- for (var i = 0; i < w.length; i++) {
- if (w[i].domNode == node) {
- return w[i];
- }
- }
- return null;
- };
- this.byId = this.getWidgetById;
- this.byType = this.getWidgetsByType;
- this.byFilter = this.getWidgetsByFilter;
- this.byNode = this.getWidgetByNode;
- var knownWidgetImplementations = {};
- var widgetPackages = ["dojo.widget"];
- for (var i = 0; i < widgetPackages.length; i++) {
- widgetPackages[widgetPackages[i]] = true;
- }
- this.registerWidgetPackage = function (pname) {
- if (!widgetPackages[pname]) {
- widgetPackages[pname] = true;
- widgetPackages.push(pname);
- }
- };
- this.getWidgetPackageList = function () {
- return dojo.lang.map(widgetPackages, function (elt) {
- return (elt !== true ? elt : undefined);
- });
- };
- this.getImplementation = function (widgetName, ctorObject, mixins, ns) {
- var impl = this.getImplementationName(widgetName, ns);
- if (impl) {
- var ret = ctorObject ? new impl(ctorObject) : new impl();
- return ret;
- }
- };
- function buildPrefixCache() {
- for (var renderer in dojo.render) {
- if (dojo.render[renderer]["capable"] === true) {
- var prefixes = dojo.render[renderer].prefixes;
- for (var i = 0; i < prefixes.length; i++) {
- renderPrefixCache.push(prefixes[i].toLowerCase());
- }
- }
- }
- }
- var findImplementationInModule = function (lowerCaseWidgetName, module) {
- if (!module) {
- return null;
- }
- for (var i = 0, l = renderPrefixCache.length, widgetModule; i <= l; i++) {
- widgetModule = (i < l ? module[renderPrefixCache[i]] : module);
- if (!widgetModule) {
- continue;
- }
- for (var name in widgetModule) {
- if (name.toLowerCase() == lowerCaseWidgetName) {
- return widgetModule[name];
- }
- }
- }
- return null;
- };
- var findImplementation = function (lowerCaseWidgetName, moduleName) {
- var module = dojo.evalObjPath(moduleName, false);
- return (module ? findImplementationInModule(lowerCaseWidgetName, module) : null);
- };
- this.getImplementationName = function (widgetName, ns) {
- var lowerCaseWidgetName = widgetName.toLowerCase();
- ns = ns || "dojo";
- var imps = knownWidgetImplementations[ns] || (knownWidgetImplementations[ns] = {});
- var impl = imps[lowerCaseWidgetName];
- if (impl) {
- return impl;
- }
- if (!renderPrefixCache.length) {
- buildPrefixCache();
- }
- var nsObj = dojo.ns.get(ns);
- if (!nsObj) {
- dojo.ns.register(ns, ns + ".widget");
- nsObj = dojo.ns.get(ns);
- }
- if (nsObj) {
- nsObj.resolve(widgetName);
- }
- impl = findImplementation(lowerCaseWidgetName, nsObj.module);
- if (impl) {
- return (imps[lowerCaseWidgetName] = impl);
- }
- nsObj = dojo.ns.require(ns);
- if ((nsObj) && (nsObj.resolver)) {
- nsObj.resolve(widgetName);
- impl = findImplementation(lowerCaseWidgetName, nsObj.module);
- if (impl) {
- return (imps[lowerCaseWidgetName] = impl);
- }
- }
- dojo.deprecated("dojo.widget.Manager.getImplementationName", "Could not locate widget implementation for "" + widgetName + "" in "" + nsObj.module + "" registered to namespace "" + nsObj.name + "". " + "Developers must specify correct namespaces for all non-Dojo widgets", "0.5");
- for (var i = 0; i < widgetPackages.length; i++) {
- impl = findImplementation(lowerCaseWidgetName, widgetPackages[i]);
- if (impl) {
- return (imps[lowerCaseWidgetName] = impl);
- }
- }
- throw new Error("Could not locate widget implementation for "" + widgetName + "" in "" + nsObj.module + "" registered to namespace "" + nsObj.name + """);
- };
- this.resizing = false;
- this.onWindowResized = function () {
- if (this.resizing) {
- return;
- }
- try {
- this.resizing = true;
- for (var id in this.topWidgets) {
- var child = this.topWidgets[id];
- if (child.checkSize) {
- child.checkSize();
- }
- }
- }
- catch (e) {
- }
- finally {
- this.resizing = false;
- }
- };
- if (typeof window != "undefined") {
- dojo.addOnLoad(this, "onWindowResized");
- dojo.event.connect(window, "onresize", this, "onWindowResized");
- }
- };
- (function () {
- var dw = dojo.widget;
- var dwm = dw.manager;
- var h = dojo.lang.curry(dojo.lang, "hitch", dwm);
- var g = function (oldName, newName) {
- dw[(newName || oldName)] = h(oldName);
- };
- g("add", "addWidget");
- g("destroyAll", "destroyAllWidgets");
- g("remove", "removeWidget");
- g("removeById", "removeWidgetById");
- g("getWidgetById");
- g("getWidgetById", "byId");
- g("getWidgetsByType");
- g("getWidgetsByFilter");
- g("getWidgetsByType", "byType");
- g("getWidgetsByFilter", "byFilter");
- g("getWidgetByNode", "byNode");
- dw.all = function (n) {
- var widgets = dwm.getAllWidgets.apply(dwm, arguments);
- if (arguments.length > 0) {
- return widgets[n];
- }
- return widgets;
- };
- g("registerWidgetPackage");
- g("getImplementation", "getWidgetImplementation");
- g("getImplementationName", "getWidgetImplementationName");
- dw.widgets = dwm.widgets;
- dw.widgetIds = dwm.widgetIds;
- dw.root = dwm.root;
- })();