-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------秦皇岛视频分组监控---------------------------------
<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"));
}
}
}