Flex tree

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------秦皇岛视频分组监控---------------------------------
 
<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 file
			import 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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值