package data.trees { import data.Tree; import mx.events.CollectionEvent; import mx.events.PropertyChangeEvent; public class ConfigTree extends Tree { private function deleteConfigTagsToHide(config:XML) : XML{ delete(config.child("DebugStatementsLevel")[0] ); delete(config.child("MultiFeatureEdit")[0] ); delete(config.child("Type")[0] ); delete(config.child("FrameClass")[0] ); delete(config.child("ButtonBarClass")[0] ); delete(config.child("GIContext")[0] ); delete(config.child("SRSInfo")[0] ); delete(config.child("Strings")[0] ); delete(config.child("Modes")[0] ); delete(config.child("Description")[0] ); return config; } protected override function configsChanged(event:CollectionEvent) : void { switch(event.kind) { case "add": for each(var obj:Object in event.items) { if(obj is XML) { XML(collection.getItemAt(0)).appendChild(deleteConfigTagsToHide(XML(obj).copy())); } } case "remove": for each(obj in event.items) { if(obj is XML) { var currentConfig:XML = XML(obj); configs = XML(collection.getItemAt(0)); configs.setChildren(configs.children().(!(@id == currentConfig.@id && @clientId == currentConfig.@clientId))); } } case "update": var changeEvent:PropertyChangeEvent = PropertyChangeEvent(event.items[0]); var config:XML = XML(changeEvent.source); var configs:XML = XML(collection.getItemAt(0)); var treeConfig:XMLList = configs.Geoide_Client_Config; treeConfig = treeConfig.(@id == config.@id && @clientId == config.@clientId); if(config.ButtonBars != treeConfig.ButtonBars) { treeConfig.ButtonBars[0].setChildren(config.ButtonBars.ButtonBar.copy()); } } } public override function buildTree() : void { super.buildTree(); var tree:XML = ; for each(var config:XML in dataSource.configs.source) { tree.appendChild(deleteConfigTagsToHide(config.copy())); } collection.addItem(tree); } } }