Tree2.min.js 4.5 KB

1
  1. MWF.widget=MWF.widget||{};MWF.require("MWF.widget.Tree",null,false);MWF.widget.Tree2=new Class({Extends:MWF.widget.Tree});MWF.widget.Tree2.Node=new Class({Implements:[Options,Events],options:{expand:true,title:"",text:"",action:"",icon:"folder.png"},imgs:{expand:"expand.gif",collapse:"collapse.gif",blank:"blank.gif"},tree:null,level:0,levelNode:[],initialize:function(e,t){this.setOptions(t);if(t.icon=="none")this.options.icon="";this.tree=e;this.levelNode=[];this.children=[];this.parentNode=null;this.previousSibling=null;this.nextSibling=null;this.firstChild=null;this.node=new Element("div",{styles:this.tree.css.treeNode});this.itemNode=new Element("div",{styles:this.tree.css.treeItemNode}).inject(this.node);this.childrenNode=new Element("div",{styles:this.tree.css.treeChildrenNode}).inject(this.node);if(!this.options.expand){this.childrenNode.setStyle("display","none")}},setText:function(e){var t=this.textNode.getElement("div");if(t)t.set("text",e)},setTitle:function(e){var t=this.textNode.getElement("div");if(t)t.set("title",e)},load:function(){this.nodeTable=new Element("table",{border:"0",cellpadding:"0",cellspacing:"0",styles:this.tree.css.nodeTable}).inject(this.itemNode);var e=new Element("tbody").inject(this.nodeTable);this.nodeArea=new Element("tr").inject(e);this.createLevelNode();this.createOperateNode();this.createIconNode();this.createTextNode()},createLevelNode:function(){for(var e=0;e<this.level;e++){var t=new Element("td",{styles:this.tree.css.blankLevelNode}).inject(this.nodeArea);this.levelNode.push(t)}},createOperateNode:function(){this.operateNode=new Element("td",{styles:this.tree.css.operateNode}).inject(this.nodeArea);this.operateNode.addEvent("click",function(){this.expandOrCollapse()}.bind(this));var e=new Element("img",{src:this.tree.path+this.tree.options.style+"/"+this.imgs.blank,width:this.operateNode.getStyle("width"),height:this.operateNode.getStyle("height"),border:"0",styles:{}}).inject(this.operateNode)},createIconNode:function(){if(this.options.icon){this.iconNode=new Element("td",{styles:this.tree.css.iconNode}).inject(this.nodeArea);this.iconNode.setStyle("background","url("+this.tree.path+this.tree.options.style+"/"+this.options.icon+") center center no-repeat")}},createTextNode:function(){this.textNode=new Element("td",{styles:this.tree.css.textNode}).inject(this.nodeArea);var e=new Element("div",{styles:this.tree.css.textDivNode,title:this.options.title});if(this.tree.options.text=="html"){e.set("html",this.options.text)}else{e.set("text",this.options.text)}e.addEvent("click",function(e){this.clickNode(e)}.bind(this));e.inject(this.textNode)},clickNode:function(e){this.selectNode(e);this.doAction(e)},selectNode:function(){if(this.tree.currentNode){var e=this.tree.currentNode.textNode.getElement("div");e.setStyles(this.tree.css.textDivNode)}var e=this.textNode.getElement("div");e.setStyles(this.tree.css.textDivNodeSelected);this.tree.currentNode=this},doAction:function(e){if(typeOf(this.options.action)=="string"){Browser.exec(this.options.action)}else if(typeOf(this.options.action)=="function"){this.options.action.apply(this,[this])}},setOperateIcon:function(){var e=this.options.expand?this.imgs.expand:this.imgs.collapse;e=this.tree.path+this.tree.options.style+"/"+e;if(!this.firstChild)e=this.tree.path+this.tree.options.style+"/"+this.imgs.blank;var t=this.operateNode.getElement("img");if(!t){t=new Element("img",{src:e,width:this.operateNode.getStyle("width"),height:this.operateNode.getStyle("height"),border:"0"}).inject(this.operateNode)}else{t.set("src",e)}},insertChild:function(e){var t=new MWF.widget.Tree.Node(this.tree,e);var i=this.previousSibling;this.previousSibling=t;t.nextSibling=this;t.previousSibling=i;if(i){i.nextSibling=t}else{this.parentNode.firstChild=t}t.parentNode=this.parentNode;t.level=this.level;t.load();t.node.inject(this.node,"before");this.parentNode.children.push(t);return t},appendChild:function(e){var t=new MWF.widget.Tree.Node(this.tree,e);if(this.children.length){t.previousSibling=this.children[this.children.length-1];t.previousSibling.nextSibling=t}else{this.firstChild=t;this.setOperateIcon()}t.level=this.level+1;t.parentNode=this;t.load();t.node.inject(this.childrenNode);this.children.push(t);return t},expandOrCollapse:function(){this.tree.expandOrCollapseNode(this)},destroy:function(){if(this.previousSibling)this.previousSibling.nextSibling=this.nextSibling;if(this.nextSibling)this.nextSibling.previousSibling=this.previousSibling;if(this.parentNode){if(this.parentNode.firstChild==this){this.parentNode.firstChild=this.nextSibling}this.parentNode.children.erase(this)}this.node.destroy();delete this}});