亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? tree.js

?? ext js demo ext學(xué)習(xí)資料
?? JS
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
/*
 * Ext JS Library 1.1 RC 1
 * Copyright(c) 2006-2007, Ext JS, LLC.
 * licensing@extjs.com
 * 
 * http://www.extjs.com/license
 */

/**
 * @class Ext.data.Tree
 * @extends Ext.util.Observable
 * Represents a tree data structure and bubbles all the events for its nodes. The nodes
 * in the tree have most standard DOM functionality.
 * @constructor
 * @param {Node} root (optional) The root node
 */
Ext.data.Tree = function(root){
   this.nodeHash = {};
   /**
    * The root node for this tree
    * @type Node
    */
   this.root = null;
   if(root){
       this.setRootNode(root);
   }
   this.addEvents({
       /**
        * @event append
        * Fires when a new child node is appended to a node in this tree.
        * @param {Tree} tree The owner tree
        * @param {Node} parent The parent node
        * @param {Node} node The newly appended node
        * @param {Number} index The index of the newly appended node
        */
       "append" : true,
       /**
        * @event remove
        * Fires when a child node is removed from a node in this tree.
        * @param {Tree} tree The owner tree
        * @param {Node} parent The parent node
        * @param {Node} node The child node removed
        */
       "remove" : true,
       /**
        * @event move
        * Fires when a node is moved to a new location in the tree
        * @param {Tree} tree The owner tree
        * @param {Node} node The node moved
        * @param {Node} oldParent The old parent of this node
        * @param {Node} newParent The new parent of this node
        * @param {Number} index The index it was moved to
        */
       "move" : true,
       /**
        * @event insert
        * Fires when a new child node is inserted in a node in this tree.
        * @param {Tree} tree The owner tree
        * @param {Node} parent The parent node
        * @param {Node} node The child node inserted
        * @param {Node} refNode The child node the node was inserted before
        */
       "insert" : true,
       /**
        * @event beforeappend
        * Fires before a new child is appended to a node in this tree, return false to cancel the append.
        * @param {Tree} tree The owner tree
        * @param {Node} parent The parent node
        * @param {Node} node The child node to be appended
        */
       "beforeappend" : true,
       /**
        * @event beforeremove
        * Fires before a child is removed from a node in this tree, return false to cancel the remove.
        * @param {Tree} tree The owner tree
        * @param {Node} parent The parent node
        * @param {Node} node The child node to be removed
        */
       "beforeremove" : true,
       /**
        * @event beforemove
        * Fires before a node is moved to a new location in the tree. Return false to cancel the move.
        * @param {Tree} tree The owner tree
        * @param {Node} node The node being moved
        * @param {Node} oldParent The parent of the node
        * @param {Node} newParent The new parent the node is moving to
        * @param {Number} index The index it is being moved to
        */
       "beforemove" : true,
       /**
        * @event beforeinsert
        * Fires before a new child is inserted in a node in this tree, return false to cancel the insert.
        * @param {Tree} tree The owner tree
        * @param {Node} parent The parent node
        * @param {Node} node The child node to be inserted
        * @param {Node} refNode The child node the node is being inserted before
        */
       "beforeinsert" : true
   });

    Ext.data.Tree.superclass.constructor.call(this);
};

Ext.extend(Ext.data.Tree, Ext.util.Observable, {
    pathSeparator: "/",

    proxyNodeEvent : function(){
        return this.fireEvent.apply(this, arguments);
    },

    /**
     * Returns the root node for this tree.
     * @return {Node}
     */
    getRootNode : function(){
        return this.root;
    },

    /**
     * Sets the root node for this tree.
     * @param {Node} node
     * @return {Node}
     */
    setRootNode : function(node){
        this.root = node;
        node.ownerTree = this;
        node.isRoot = true;
        this.registerNode(node);
        return node;
    },

    /**
     * Gets a node in this tree by its id.
     * @param {String} id
     * @return {Node}
     */
    getNodeById : function(id){
        return this.nodeHash[id];
    },

    registerNode : function(node){
        this.nodeHash[node.id] = node;
    },

    unregisterNode : function(node){
        delete this.nodeHash[node.id];
    },

    toString : function(){
        return "[Tree"+(this.id?" "+this.id:"")+"]";
    }
});

/**
 * @class Ext.data.Node
 * @extends Ext.util.Observable
 * @cfg {Boolean} leaf true if this node is a leaf and does not have children
 * @cfg {String} id The id for this node. If one is not specified, one is generated.
 * @constructor
 * @param {Object} attributes The attributes/config for the node
 */
Ext.data.Node = function(attributes){
    /**
     * The attributes supplied for the node. You can use this property to access any custom attributes you supplied.
     * @type {Object}
     */
    this.attributes = attributes || {};
    this.leaf = this.attributes.leaf;
    /**
     * The node id. @type String
     */
    this.id = this.attributes.id;
    if(!this.id){
        this.id = Ext.id(null, "ynode-");
        this.attributes.id = this.id;
    }
    /**
     * All child nodes of this node. @type Array
     */
    this.childNodes = [];
    if(!this.childNodes.indexOf){ // indexOf is a must
        this.childNodes.indexOf = function(o){
            for(var i = 0, len = this.length; i < len; i++){
                if(this[i] == o) return i;
            }
            return -1;
        };
    }
    /**
     * The parent node for this node. @type Node
     */
    this.parentNode = null;
    /**
     * The first direct child node of this node, or null if this node has no child nodes. @type Node
     */
    this.firstChild = null;
    /**
     * The last direct child node of this node, or null if this node has no child nodes. @type Node
     */
    this.lastChild = null;
    /**
     * The node immediately preceding this node in the tree, or null if there is no sibling node. @type Node
     */
    this.previousSibling = null;
    /**
     * The node immediately following this node in the tree, or null if there is no sibling node. @type Node
     */
    this.nextSibling = null;

    this.addEvents({
       /**
        * @event append
        * Fires when a new child node is appended
        * @param {Tree} tree The owner tree
        * @param {Node} this This node
        * @param {Node} node The newly appended node
        * @param {Number} index The index of the newly appended node
        */
       "append" : true,
       /**
        * @event remove
        * Fires when a child node is removed
        * @param {Tree} tree The owner tree
        * @param {Node} this This node
        * @param {Node} node The removed node
        */
       "remove" : true,
       /**
        * @event move
        * Fires when this node is moved to a new location in the tree
        * @param {Tree} tree The owner tree
        * @param {Node} this This node
        * @param {Node} oldParent The old parent of this node
        * @param {Node} newParent The new parent of this node
        * @param {Number} index The index it was moved to
        */
       "move" : true,
       /**
        * @event insert
        * Fires when a new child node is inserted.
        * @param {Tree} tree The owner tree
        * @param {Node} this This node
        * @param {Node} node The child node inserted
        * @param {Node} refNode The child node the node was inserted before
        */
       "insert" : true,
       /**
        * @event beforeappend
        * Fires before a new child is appended, return false to cancel the append.
        * @param {Tree} tree The owner tree
        * @param {Node} this This node
        * @param {Node} node The child node to be appended
        */
       "beforeappend" : true,
       /**
        * @event beforeremove
        * Fires before a child is removed, return false to cancel the remove.
        * @param {Tree} tree The owner tree
        * @param {Node} this This node
        * @param {Node} node The child node to be removed
        */
       "beforeremove" : true,
       /**
        * @event beforemove
        * Fires before this node is moved to a new location in the tree. Return false to cancel the move.
        * @param {Tree} tree The owner tree
        * @param {Node} this This node
        * @param {Node} oldParent The parent of this node
        * @param {Node} newParent The new parent this node is moving to
        * @param {Number} index The index it is being moved to
        */
       "beforemove" : true,
       /**
        * @event beforeinsert
        * Fires before a new child is inserted, return false to cancel the insert.
        * @param {Tree} tree The owner tree
        * @param {Node} this This node
        * @param {Node} node The child node to be inserted
        * @param {Node} refNode The child node the node is being inserted before
        */
       "beforeinsert" : true
   });
    this.listeners = this.attributes.listeners;
    Ext.data.Node.superclass.constructor.call(this);
};

Ext.extend(Ext.data.Node, Ext.util.Observable, {
    fireEvent : function(evtName){
        // first do standard event for this node
        if(Ext.data.Node.superclass.fireEvent.apply(this, arguments) === false){
            return false;
        }
        // then bubble it up to the tree if the event wasn't cancelled
        var ot = this.getOwnerTree();
        if(ot){
            if(ot.proxyNodeEvent.apply(ot, arguments) === false){
                return false;
            }
        }
        return true;
    },

    /**
     * Returns true if this node is a leaf
     * @return {Boolean}
     */
    isLeaf : function(){
        return this.leaf === true;
    },

    // private
    setFirstChild : function(node){
        this.firstChild = node;
    },

    //private
    setLastChild : function(node){
        this.lastChild = node;
    },


    /**
     * Returns true if this node is the last child of its parent
     * @return {Boolean}
     */
    isLast : function(){
       return (!this.parentNode ? true : this.parentNode.lastChild == this);
    },

    /**
     * Returns true if this node is the first child of its parent
     * @return {Boolean}
     */
    isFirst : function(){
       return (!this.parentNode ? true : this.parentNode.firstChild == this);
    },

    hasChildNodes : function(){
        return !this.isLeaf() && this.childNodes.length > 0;
    },

    /**
     * Insert node(s) as the last child node of this node.
     * @param {Node/Array} node The node or Array of nodes to append
     * @return {Node} The appended node if single append, or null if an array was passed
     */
    appendChild : function(node){
        var multi = false;
        if(node instanceof Array){
            multi = node;
        }else if(arguments.length > 1){
            multi = arguments;
        }
        // if passed an array or multiple args do them one by one
        if(multi){
            for(var i = 0, len = multi.length; i < len; i++) {
            	this.appendChild(multi[i]);
            }
        }else{
            if(this.fireEvent("beforeappend", this.ownerTree, this, node) === false){
                return false;
            }
            var index = this.childNodes.length;
            var oldParent = node.parentNode;
            // it's a move, make sure we move it cleanly
            if(oldParent){
                if(node.fireEvent("beforemove", node.getOwnerTree(), node, oldParent, this, index) === false){

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本在线播放一区二区三区| 1024精品合集| 国产精品久久看| 亚洲一区精品在线| 免费美女久久99| 成人激情综合网站| 欧美日本在线视频| 日本一区二区三区四区| 香蕉久久夜色精品国产使用方法 | 91在线国内视频| 欧美性猛交xxxx乱大交退制版 | 国产最新精品精品你懂的| 成人福利在线看| 91精品免费在线观看| 国产精品无码永久免费888| 亚洲第一福利一区| 国产成人亚洲综合a∨婷婷| 91成人在线免费观看| 久久久精品综合| 视频一区欧美精品| 99久久久精品免费观看国产蜜| 538在线一区二区精品国产| 亚洲国产精品成人综合| 日韩黄色一级片| 99久久精品99国产精品| 精品国产一区二区三区忘忧草| 亚洲三级在线看| 国产裸体歌舞团一区二区| 欧美日韩中文一区| 国产精品另类一区| 久久成人免费电影| 欧美日韩在线三区| 国产精品电影一区二区三区| 激情久久五月天| 欧美另类高清zo欧美| 国产精品成人免费在线| 国产美女久久久久| 欧美一二三在线| 午夜国产精品影院在线观看| 91麻豆高清视频| 国产精品无遮挡| 国产美女久久久久| 欧美成人艳星乳罩| 日韩福利电影在线| 欧美视频一区二区在线观看| 国产精品久久久久影院色老大 | 国产日韩欧美不卡| 黄色资源网久久资源365| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 欧美国产精品久久| 国产美女av一区二区三区| 日韩三级伦理片妻子的秘密按摩| 亚洲国产日日夜夜| 欧亚洲嫩模精品一区三区| 亚洲日本青草视频在线怡红院| 国产成人免费视频精品含羞草妖精 | 国产清纯美女被跳蛋高潮一区二区久久w| 视频在线观看一区二区三区| 色婷婷av一区二区| 亚洲日本va午夜在线电影| 成人污污视频在线观看| 国产欧美日韩激情| 高清不卡在线观看| 久久综合色鬼综合色| 久久不见久久见免费视频1| 欧美一区二区三区视频在线观看| 亚洲va欧美va天堂v国产综合| 色噜噜狠狠色综合中国| 亚洲三级视频在线观看| 91亚洲永久精品| 亚洲美女电影在线| 欧美午夜精品免费| 亚洲自拍偷拍图区| 欧美另类z0zxhd电影| 午夜视频久久久久久| 欧美日韩一区二区三区免费看| 亚洲线精品一区二区三区八戒| 欧美日韩一区小说| 首页国产丝袜综合| 日韩精品中午字幕| 国产在线精品一区在线观看麻豆| 精品国产一区二区三区久久影院| 国产一本一道久久香蕉| 亚洲国产精品av| 色噜噜狠狠成人中文综合| 亚洲综合视频在线观看| 制服丝袜国产精品| 韩日精品视频一区| 国产精品二区一区二区aⅴ污介绍| 91麻豆国产自产在线观看| 亚洲国产日产av| 欧美成人vps| 国产jizzjizz一区二区| 亚洲人成7777| 欧美日高清视频| 国产在线一区观看| 日韩一区欧美一区| 欧美精品久久99| 国产在线精品免费| 亚洲欧洲日产国码二区| 欧美色图一区二区三区| 秋霞成人午夜伦在线观看| 久久久综合视频| 色噜噜夜夜夜综合网| 蜜臂av日日欢夜夜爽一区| 久久精品一级爱片| 欧美中文字幕不卡| 韩国毛片一区二区三区| 日韩伦理免费电影| 欧美一区二区性放荡片| 国产成人精品一区二区三区网站观看| 亚洲天堂网中文字| 日韩视频一区二区三区在线播放| 国产一区二区在线视频| 怡红院av一区二区三区| 精品少妇一区二区三区在线播放| 99久久免费精品高清特色大片| 日韩国产在线一| 国产精品女同一区二区三区| 欧美日本一道本| 国产69精品久久久久777| 亚洲超碰97人人做人人爱| 欧美激情综合在线| 欧美精品久久久久久久多人混战| 成人在线综合网站| 日本不卡在线视频| ㊣最新国产の精品bt伙计久久| 欧美酷刑日本凌虐凌虐| 成人美女视频在线看| 日韩vs国产vs欧美| 亚洲视频中文字幕| 精品国产亚洲在线| 欧美在线观看18| 国产成人精品一区二区三区四区| 丝瓜av网站精品一区二区| 中文字幕亚洲视频| 亚洲精品在线免费播放| 欧美日韩亚洲丝袜制服| 99精品视频在线免费观看| 久久99精品久久只有精品| 亚洲国产另类av| 国产精品久久久久久久午夜片| 欧美成人免费网站| 欧美日韩另类一区| 97久久人人超碰| 国产成人激情av| 麻豆精品一区二区综合av| 亚洲一区二区3| 亚洲免费av网站| 国产精品毛片久久久久久久| 精品久久久久久无| 5566中文字幕一区二区电影| 日本精品视频一区二区三区| 国产二区国产一区在线观看| 久久精品国产在热久久| 天堂一区二区在线免费观看| 一区二区高清免费观看影视大全| 亚洲国产精品成人综合| 久久综合九色欧美综合狠狠 | 国产综合成人久久大片91| 日日夜夜免费精品视频| 亚洲一区在线观看视频| 最新中文字幕一区二区三区| 中文字幕免费观看一区| 国产亚洲综合在线| 久久亚洲二区三区| 欧美sm极限捆绑bd| 日韩欧美在线观看一区二区三区| 欧美日本一区二区三区四区| 欧美视频在线不卡| 欧美日韩一区二区三区在线看| 日本高清免费不卡视频| 91福利在线免费观看| 色婷婷综合激情| 在线亚洲人成电影网站色www| av在线综合网| 一本到三区不卡视频| 一本久久综合亚洲鲁鲁五月天| 色综合久久久久网| 在线精品视频一区二区| 在线观看国产91| 欧美色网一区二区| 在线综合亚洲欧美在线视频| 91精品综合久久久久久| 欧美一区二区福利在线| 欧美va亚洲va香蕉在线| 久久影院电视剧免费观看| 久久婷婷国产综合精品青草| 国产网站一区二区三区| 国产精品久久久久久久久免费桃花| 国产精品乱子久久久久| 亚洲男同1069视频| 偷拍日韩校园综合在线| 男女男精品视频| 国产在线观看免费一区| 成人精品在线视频观看| 色婷婷亚洲综合| 在线不卡一区二区| 精品剧情在线观看| 国产精品视频一二|