CheckTree.as

package comps

    import mx.controls.Tree; 
    import mx.core.ClassFactory; 
    import mx.events.ListEvent; 
    /**
     * 三状态复选框树控件
     * <br /><br />
     */ 
    public class CheckTree extends Tree 
    { 
        //数据源中状态字段 
        private var m_checkBoxStateField:String="@state"; 
        //部分选中的填充色 
        [Bindable] 
        private var m_checkBoxBgColor:uint=0x009900; 
        //填充色的透明度 
        [Bindable] 
        private var m_checkBoxBgAlpha:Number=1; 
        //填充色的边距 
        [Bindable] 
        private var m_checkBoxBgPadding:Number=3; 
        //填充色的四角弧度 
        [Bindable] 
        private var m_checkBoxBgElips:Number=2; 
        //取消选择是否收回子项 
        [Bindable] 
        private var m_checkBoxCloseItemsOnUnCheck:Boolean=true; 
        //选择项时是否展开子项 
        [Bindable] 
        private var m_checkBoxOpenItemsOnCheck:Boolean=false; 
        //选择框左边距的偏移量 
        [Bindable] 
        private var m_checkBoxLeftGap:int=8; 
        //选择框右边距的偏移量 
        [Bindable] 
        private var m_checkBoxRightGap:int=20; 
        //是否显示三状态 
        [Bindable] 
        private var m_checkBoxEnableState:Boolean=true; 
        //与父项子项关联 
        [Bindable] 
        private var m_checkBoxCascadeOnCheck:Boolean=true; 
        //双击项目 
        public var itemDClickSelect:Boolean=true; 
        public function CheckTree() 
        { 
            super(); 
            doubleClickEnabled=true; 
        } 
        override protected function createChildren():void 
        { 
            var myFactory:ClassFactory=new ClassFactory(CheckTreeRenderer); 
            this.itemRenderer=myFactory; 
            super.createChildren(); 
            addEventListener(ListEvent.ITEM_DOUBLE_CLICK, onItemDClick); 
        } 
        public function PropertyChange():void 
        { 
            dispatchEvent(new ListEvent(mx.events.ListEvent.CHANGE)); 
        } 
        /**
         * 树菜单,双击事件
         * @param evt 双击事件源
         *
         */ 
        public function onItemDClick(e:ListEvent):void 
        { 
            if(itemDClickSelect) 
                OpenItems(); 
        } 
        /**
         * 打开Tree节点函数,被 有打开节点功能的函数调用
         * @param item  要打开的节点
         *
         */ 
        public function OpenItems():void 
        { 
            if (this.selectedIndex >= 0 && this.dataDescriptor.isBranch(this.selectedItem)) 
                this.expandItem(this.selectedItem, !this.isItemOpen(this.selectedItem), true); 
        } 
        /**
         * 数据源中状态字段
         * @return 
         * 
         */      
        [Bindable] 
        public function get checkBoxStateField():String 
        { 
            return m_checkBoxStateField; 
        } 
        public function set checkBoxStateField(v:String):void 
        { 
            m_checkBoxStateField=v; 
            PropertyChange(); 
        } 
        /**
         * 部分选中的填充色
         * @return 
         * 
         */      
        [Bindable] 
        public function get checkBoxBgColor():uint 
        { 
            return m_checkBoxBgColor; 
        } 
        public function set checkBoxBgColor(v:uint):void 
        { 
            m_checkBoxBgColor=v; 
            PropertyChange(); 
        } 
        /**
         * 填充色的透明度
         * @return 
         * 
         */      
        [Bindable] 
        public function get checkBoxBgAlpha():Number 
        { 
            return m_checkBoxBgAlpha; 
        } 
        public function set checkBoxBgAlpha(v:Number):void 
        { 
            m_checkBoxBgAlpha=v; 
            PropertyChange(); 
        } 
        /**
         * 填充色的边距
         * @return 
         * 
         */      
        [Bindable] 
        public function get checkBoxBgPadding():Number 
        { 
            return m_checkBoxBgPadding; 
        } 
        public function set checkBoxBgPadding(v:Number):void 
        { 
            m_checkBoxBgPadding=v; 
            PropertyChange(); 
        } 
        /**
         * 填充色的四角弧度
         * @return 
         * 
         */      
        [Bindable] 
        public function get checkBoxBgElips():Number 
        { 
            return m_checkBoxBgElips; 
        } 
        public function set checkBoxBgElips(v:Number):void 
        { 
            m_checkBoxBgElips=v; 
            PropertyChange(); 
        } 
        /**
         * 取消选择是否收回子项
         * @return 
         * 
         */      
        [Bindable] 
        public function get checkBoxCloseItemsOnUnCheck():Boolean 
        { 
            return m_checkBoxCloseItemsOnUnCheck; 
        } 
        public function set checkBoxCloseItemsOnUnCheck(v:Boolean):void 
        { 
            m_checkBoxCloseItemsOnUnCheck=v; 
            PropertyChange(); 
        } 
        /**
         * 选择项时是否展开子项
         * @return 
         * 
         */      
        [Bindable] 
        public function get checkBoxOpenItemsOnCheck():Boolean 
        { 
            return m_checkBoxOpenItemsOnCheck; 
        } 
        public function set checkBoxOpenItemsOnCheck(v:Boolean):void 
        { 
            m_checkBoxOpenItemsOnCheck=v; 
            PropertyChange(); 
        } 
        /**
         * 选择框左边距的偏移量
         * @return 
         * 
         */      
        [Bindable] 
        public function get checkBoxLeftGap():int 
        { 
            return m_checkBoxLeftGap; 
        } 
        public function set checkBoxLeftGap(v:int):void 
        { 
            m_checkBoxLeftGap=v; 
            PropertyChange(); 
        } 
        /**
         * 选择框右边距的偏移量
         * @return 
         * 
         */      
        [Bindable] 
        public function get checkBoxRightGap():int 
        { 
            return m_checkBoxRightGap; 
        } 
        public function set checkBoxRightGap(v:int):void 
        { 
            m_checkBoxRightGap=v; 
            PropertyChange(); 
        } 
        /**
         * 是否显示三状态
         * @return 
         * 
         */      
        [Bindable] 
        public function get checkBoxEnableState():Boolean 
        { 
            return m_checkBoxEnableState; 
        } 
        public function set checkBoxEnableState(v:Boolean):void 
        { 
            m_checkBoxEnableState=v; 
            PropertyChange(); 
        } 
        /**
         * 与父项子项关联
         * @return 
         * 
         */ 
        [Bindable] 
        public function get checkBoxCascadeOnCheck():Boolean 
        { 
            return m_checkBoxCascadeOnCheck; 
        } 
        public function set checkBoxCascadeOnCheck(v:Boolean):void 
        { 
            m_checkBoxCascadeOnCheck=v; 
            PropertyChange(); 
        } 
    } 
}

posted @ 2011-05-10 21:50  lovecd  阅读(195)  评论(0编辑  收藏  举报