Flex tree

来源:互联网 发布:知乎作死段子 编辑:程序博客网 时间:2024/06/03 18:11
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------秦皇岛视频分组监控---------------------------------
 
<mx:Tree id="dptTree"       width="100%"       height="100%"      showRoot="true"      backgroundColor="#FFFFFF"      iconFunction="iconfuction"      doubleClickEnabled="true"      itemClick="treeChanged(event)"      itemDoubleClick="doubleTreeChanged(event)"/>
 
 
 dptTree.dataProvider=rootArray; dptTree.openItems = rootArray;  dptTree.labelField="name";  dptTree.validateNow(); for(var i:int=0;i<rootArray.length;i++){  dptTree.expandChildrenOf(rootArray.getItemAt(i),true); }
 
 
 
 
 
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------秦皇岛信号监控---------------------------------------------------------------------------
<mx:Tree  id="tree1"   width="100%"   height="100%"  labelField="@label"  showRoot="true"  backgroundColor="#00FFFF"  iconFunction="iconfuction"  itemClick="treeChanged(event)"  ></mx:Tree>

private  function iconfuction(event:Object):*{var xml:Node= Node(event);// 未检测for (var i:int = 0; i < faciArr.length; i++) {if(xml.id == faciArr[i].code) {if(faciArr[i].status == "1") {return bule;} else if(faciArr[i].status == "2") {return green;}else if(faciArr[i].status == "3") {return gray;} else {return red;}}}return folder;}

//正常[Embed(source="com/zteits/atms/sig/image/Sig1.png")]          [Bindable]  public var bule:Class; //使用[Embed(source="com/zteits/atms/sig/image/Sig2.png")]           [Bindable]  public var green:Class;//停用[Embed(source="com/zteits/atms/sig/image/Sig3.png")]           [Bindable]  public var gray:Class;//故障[Embed(source="com/zteits/atms/sig/image/Sig4.png")]          //这是图片的相对地址  [Bindable]  public var red:Class;//文件夹[Embed(source="com/zteits/atms/sig/image/folder.png")]          [Bindable]  
 

 

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------泗阳卡口------------------------------------------------------------------------------------------------------------------------------------------

 

<?xml version="1.0" encoding="utf-8"?><mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:controls="com.zteits.atms.component.it.sephiroth.controls.*" width="100%" height="100%"><mx:Script><![CDATA[// ActionScript fileimport com.zteits.atms.component.it.sephiroth.renderers.TreecheckboxItemRenderer;import mx.controls.Alert;import mx.events.TreeEvent;import com.zteits.atms.util.common.CommonUtil;[Bindable("text")]public var xml:XML=null;public function init():void{this.tree.dataProvider=xml;tree.callLater(expandTree);//this.tree.openItems=xml..node;//CommonUtil.expandCheckBoxTree(this.tree);}private function expandTree():void{tree.expandChildrenOf(xml, true);}public function set treeXML(xml:XML):void{this.xml=xml;}public function get treeXML():XML{return this.xml;}/** * Called on checkbox click * check and update for both parents and child nodes * according to the checkbox status */private function onItemCheck(event:TreeEvent):void{var obj:Object=this.tree.firstVisibleItem;updateParents(event.item as XML, (event.itemRenderer as TreecheckboxItemRenderer).checkBox.checkState);updateChilds(event.item as XML, (event.itemRenderer as TreecheckboxItemRenderer).checkBox.checkState);this.tree.firstVisibleItem=obj;}private function updateParents(item:XML, value:uint):void{var checkValue:String=(value == (1 << 1 | 2 << 1) ? "1" : value == (1 << 1) ? "1" : "0");var parentNode:XML=item.parent();if (parentNode){for each (var x:XML in parentNode.node){if (x.@checked != checkValue){checkValue="1"}}parentNode.@checked=checkValue;updateParents(parentNode, value);}}private function updateChilds(item:XML, value:uint):void{var middle:Boolean=(value & 2 << 1) == (2 << 1);var selected:Boolean=(value & 1 << 1) == (1 << 1);if (item.children().length() > 0 && !middle){for each (var x:XML in item.node){x.@checked=value == (1 << 1 | 2 << 1) ? "1" : value == (1 << 1) ? "1" : "0";updateChilds(x, value);}}}private function emptyContent():void{try{xml=changeSubXML(xml);init();}catch (error:Error){Alert.show(error.toString());}}private function changeSubXML(xml:XML):XML{try{xml.@checked="0";var subNodes:XMLList=xml.children();if (subNodes != null && subNodes.length() > 0){for (var i:int=0; i < subNodes.length(); i++){subNodes[i]=changeSubXML(subNodes[i]);}}}catch (error:Error){Alert.show(error.message);}return xml;}]]></mx:Script><controls:TreeCheckBox id="tree"   width="100%"   height="100%"   checkField="@checked"   itemCheck="onItemCheck(event);"   labelField="@label"   showRoot="false"/></mx:VBox>

 

<common:CheckBoxTitleTreeComponent id="myTree" width="100%" height="100%"/><!--checkField="@isSelect" itemCheck="{onItemCheck( event )}" labelField="@name" openItems="{xml.node}" /-->
public function doAll():void{changestatus(xml,"1");this.myTree.treeXML=xml;this.myTree.init();}
package com.zteits.atms.component.it.sephiroth.controls{import com.zteits.atms.component.it.sephiroth.controls.treeClasses.TreeCheckListData;import com.zteits.atms.component.it.sephiroth.renderers.TreecheckboxItemRenderer;import flash.events.Event;import mx.controls.Tree;import mx.controls.listClasses.BaseListData;import mx.controls.treeClasses.TreeListData;import mx.core.ClassFactory;import mx.core.mx_internal;import mx.events.TreeEvent;use namespace mx_internal;[Event(name="checkFieldChanged", type="flash.events.Event")][Event(name="checkFunctionChanged", type="flash.events.Event")][Event(name="itemCheck", type="mx.events.TreeEvent")]public class TreeCheckBox extends Tree{protected var _checkField:String;private var _checkFunction:Function;public function TreeCheckBox(){super();this.itemRenderer=new ClassFactory(TreecheckboxItemRenderer);addEventListener("itemCheck", checkHandler);}mx_internal function isBranch(item:Object):Boolean{if (item != null)return _dataDescriptor.isBranch(item, iterator.view);return false;}private function checkHandler(event:TreeEvent):void{var value:String;var state:int=(event.itemRenderer as TreecheckboxItemRenderer).checkBox.checkState;var middle:Boolean=(state & 2 << 1) == (2 << 1);var selected:Boolean=(state & 1 << 1) == (1 << 1);if (isBranch(event.item)){middle=false;}if (middle){value="1";}else{value=selected ? "1" : "0";}var data:Object=event.item;if (data == null){return;}if (checkField){if (data is XML){try{data[checkField]=value;}catch (e:Error){}}else if (data is Object){try{data[checkField]=value;}catch (e:Error){}}}if (data is String){data=String(value);}commitProperties();}override protected function makeListData(data:Object, uid:String, rowNum:int):BaseListData{var treeListData:TreeListData=new TreeCheckListData(itemToLabel(data), uid, this, rowNum);initListData(data, treeListData);return treeListData;}override protected function initListData(item:Object, treeListData:TreeListData):void{super.initListData(item, treeListData);if (item == null)return;(treeListData as TreeCheckListData).checkedState=itemToCheck(item);}[Bindable("checkFieldChanged")][Inspectable(category="Data", defaultValue="checked")]public function get checkField():String{return _checkField;}public function set checkField(value:String):void{_checkField=value;itemsSizeChanged=true;invalidateDisplayList();dispatchEvent(new Event("checkFieldChanged"));}public function itemToCheck(data:Object):int{if (data == null)return 0;if (checkFunction != null)return checkFunction(data);if (data is XML){try{if (data[checkField].length() != 0)data=data[checkField];}catch (e:Error){}}else if (data is Object){try{if (data[checkField] != null)data=data[checkField];}catch (e:Error){}}if (data is String)return parseInt(String(data));try{return parseInt(String(data));}catch (e:Error){}return 0;}[Bindable("checkFunctionChanged")][Inspectable(category="Data")]public function get checkFunction():Function{return _checkFunction;}public function set checkFunction(value:Function):void{_checkFunction=value;itemsSizeChanged=true;invalidateDisplayList();dispatchEvent(new Event("checkFunctionChanged"));}}}




 


 

0 0
原创粉丝点击