package components.tree { import mx.controls.Tree; /** * NameIcon is a 'default' (suitable for most situations) class responsible for * determining a icon for an XML element. */ public class NodeIcon implements IconRule { /** * The name of the XML element this rule applies to. */ public var element:Object = null; /** */ public var childName:Object = null; /** */ public var childValue:Object = null; /** * The icon. */ public var icon:Class = null; /** * Only applies to open items */ public var open:Boolean = false; /** * Determine icon. */ public function getIcon(node:XML, tree:Tree):Class { for each(var currentElement:Object in (element is Array ? element as Array : [element])) { if((currentElement is NodeTest ? NodeTest(currentElement).doTest(node) : node.name() == currentElement) && (childName == null || node.child(childName) == childValue) && (!open || tree.isItemOpen(node))) { return icon; } } // Rule doesn't match therefore no icon is returned. return null; } } }