TreeCommon.js
资源名称:oa.rar [点击查看]
上传用户:kimgenplus
上传日期:2016-06-05
资源大小:20877k
文件大小:2k
源码类别:
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.TreeCommon");
- dojo.require("dojo.widget.*");
- dojo.declare("dojo.widget.TreeCommon", null, {listenTreeEvents:[], listenedTrees:{}, listenNodeFilter:null, listenTree:function (tree) {
- var _this = this;
- if (this.listenedTrees[tree.widgetId]) {
- return;
- }
- dojo.lang.forEach(this.listenTreeEvents, function (event) {
- var eventHandler = "on" + event.charAt(0).toUpperCase() + event.substr(1);
- dojo.event.topic.subscribe(tree.eventNames[event], _this, eventHandler);
- });
- var filter;
- if (this.listenNodeFilter) {
- this.processDescendants(tree, this.listenNodeFilter, this.listenNode, true);
- }
- this.listenedTrees[tree.widgetId] = true;
- }, listenNode:function () {
- }, unlistenNode:function () {
- }, unlistenTree:function (tree, nodeFilter) {
- var _this = this;
- if (!this.listenedTrees[tree.widgetId]) {
- return;
- }
- dojo.lang.forEach(this.listenTreeEvents, function (event) {
- var eventHandler = "on" + event.charAt(0).toUpperCase() + event.substr(1);
- dojo.event.topic.unsubscribe(tree.eventNames[event], _this, eventHandler);
- });
- if (this.listenNodeFilter) {
- this.processDescendants(tree, this.listenNodeFilter, this.unlistenNode, true);
- }
- delete this.listenedTrees[tree.widgetId];
- }, checkPathCondition:function (domElement, condition) {
- while (domElement && !domElement.widgetId) {
- if (condition.call(null, domElement)) {
- return true;
- }
- domElement = domElement.parentNode;
- }
- return false;
- }, domElement2TreeNode:function (domElement) {
- while (domElement && !domElement.widgetId) {
- domElement = domElement.parentNode;
- }
- if (!domElement) {
- return null;
- }
- var widget = dojo.widget.byId(domElement.widgetId);
- if (!widget.isTreeNode) {
- return null;
- }
- return widget;
- }, processDescendants:function (elem, filter, func, skipFirst) {
- var _this = this;
- if (!skipFirst) {
- if (!filter.call(_this, elem)) {
- return;
- }
- func.call(_this, elem);
- }
- var stack = [elem];
- while (elem = stack.pop()) {
- dojo.lang.forEach(elem.children, function (elem) {
- if (filter.call(_this, elem)) {
- func.call(_this, elem);
- stack.push(elem);
- }
- });
- }
- }});