package
{
import mx.controls.Image;
import mx.controls.treeClasses.*;
import mx.collections.*;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.util.trace;
public class MyTreeItemRenderer extends TreeItemRenderer
{
protected var myImage:Image;
private var imageWidth:Number = 30;
private var imageHeight:Number = 20;
private var imageToLabelMargin:Number = 2;
private var showDefaultBranchIcon:Boolean = false;
private var showDefaultLeafIcon:Boolean = false;
private var branchImage:String = "assets/branch.gif";
private var leafImage:String = "assets/leaf.gif";
public function MyTreeItemRenderer()
{
super();
mouseEnabled = false;
}
public function openBranch(evt:Event):void
{
var myListData:TreeListData = TreeListData(this.listData);
var selectedNode:Object = myListData.node;
var theTree:Tree = Tree(myListData.owner);
var isBranchOpen:Boolean = theTree.getIsOpen( selectedNode );
var isBranchOpen:Boolean = isBranchOpen ? false : true;
theTree.setIsOpen( selectedNode, isBranchOpen, true, false );
}
override protected function createChildren():void
{
myImage = new Image();
myImage.width = imageWidth;
myImage.height = imageHeight;
myImage.setStyle( "verticalAlign", "middle" );
addChild(myImage);
addEventListener( MouseEvent.CLICK, openBranch );
super.createChildren();
}
override public function set data(value:Object):void
{
super.data = value;
var _tree:Tree = Tree(this.parent.parent);
if(TreeListData(super.listData).hasChildren)
{
setStyle("color", 0xff0000);
setStyle("fontWeight", 'bold');
if( !showDefaultBranchIcon )
{
_tree.setStyle("folderClosedIcon", null);
_tree.setStyle("folderOpenIcon", null);
}
}
else
{
setStyle("color", 0x000000);
setStyle("fontWeight", 'normal');
if( !showDefaultLeafIcon )
{
_tree.setStyle("defaultLeafIcon", null);
}
}
}
override protected function updateDisplayList(unscaledWidth:Number,
unscaledHeight:Number):void
{
super.updateDisplayList(unscaledWidth, unscaledHeight);
if(super.data)
{
if(TreeListData(super.listData).hasChildren)
{
var currentNodeXMLList:XMLList = new XMLList(TreeListData(super.listData).node);
var numOfImmediateChildren:int = currentNodeXMLList[0].children().length();
myImage.source = branchImage;
super.label.text = TreeListData(super.listData).text + "(" + numOfImmediateChildren + ")";
} else {
myImage.source = leafImage;
}
myImage.x = super.label.x;
super.label.x = myImage.x + imageWidth + imageToLabelMargin;
}
}
}
}