package data { import mx.events.CollectionEvent; public class Tree extends DataElement { public var dataSource:DataSource; public function buildTree() : void { dataSource.servers.addEventListener(CollectionEvent.COLLECTION_CHANGE, serversChanged); dataSource.contexts.addEventListener(CollectionEvent.COLLECTION_CHANGE, contextsChanged); dataSource.maps.addEventListener(CollectionEvent.COLLECTION_CHANGE, mapsChanged); dataSource.layers.addEventListener(CollectionEvent.COLLECTION_CHANGE, layersChanged); dataSource.configs.addEventListener(CollectionEvent.COLLECTION_CHANGE, configsChanged); dataSource.queryAspects.addEventListener(CollectionEvent.COLLECTION_CHANGE, queryAspectsChanged); dataSource.templates.addEventListener(CollectionEvent.COLLECTION_CHANGE, templatesChanged); dataSource.reports.addEventListener(CollectionEvent.COLLECTION_CHANGE, reportsChanged); } public function cleanup() : void { dataSource.servers.removeEventListener(CollectionEvent.COLLECTION_CHANGE, serversChanged); dataSource.contexts.removeEventListener(CollectionEvent.COLLECTION_CHANGE, contextsChanged); dataSource.maps.removeEventListener(CollectionEvent.COLLECTION_CHANGE, mapsChanged); dataSource.layers.removeEventListener(CollectionEvent.COLLECTION_CHANGE, layersChanged); dataSource.configs.removeEventListener(CollectionEvent.COLLECTION_CHANGE, configsChanged); dataSource.queryAspects.removeEventListener(CollectionEvent.COLLECTION_CHANGE, queryAspectsChanged); dataSource.templates.removeEventListener(CollectionEvent.COLLECTION_CHANGE, templatesChanged); dataSource.reports.removeEventListener(CollectionEvent.COLLECTION_CHANGE, reportsChanged); collection.removeAll(); } protected function getRef(item:XML) : XML { return dataSource.getRef(item); } private function isIn(item:XML, list:XMLList) : Boolean { for each(var currentItem:XML in list) { if(currentItem.@id == item.@id && currentItem.@clientId == item.@clientId) { return true; } } return false; } protected function updateRefs(propRefs:XMLList, treeRefs:XML) : void { if(propRefs && treeRefs) { var newChildren:XMLList = new XMLList(); for each(var item:XML in propRefs) { newChildren += getRef(item); } treeRefs.setChildren(newChildren); } } protected function titleCompare(a:Object, b:Object) : int { var titleA:String = dataSource.getTitle(a as XML); var titleB:String = dataSource.getTitle(b as XML); return titleA.localeCompare(titleB); } protected function serversChanged(event:CollectionEvent) : void { } protected function contextsChanged(event:CollectionEvent) : void { } protected function mapsChanged(event:CollectionEvent) : void { } protected function layersChanged(event:CollectionEvent) : void { } protected function configsChanged(event:CollectionEvent) : void { } protected function queryAspectsChanged(event:CollectionEvent) : void { } protected function templatesChanged(event:CollectionEvent) : void { } protected function reportsChanged(event:CollectionEvent) : void { } } }