Flex List 选项变灰,信息过长有提示,修复dragComplete事件不准的BUG

// ActionScript file
package com.invexer.component
{
	import mx.controls.*;
	import mx.events.DragEvent;
	import mx.managers.DragManager;
	import flash.events.Event;
	import mx.controls.listClasses.ListBase;
	
	import flash.events.MouseEvent;
	import flash.events.KeyboardEvent;
	import mx.core.ClassFactory;
	import mx.controls.List;	
	import mx.controls.listClasses.IListItemRenderer; 
	import mx.controls.listClasses.ListItemRenderer;
	
	
	[Event(name="dragFinished", type="flash.events.Event")]
	
	public class MyList extends List
	{
		public function MyList()
		{
			super();
			this.itemRenderer = new ClassFactory(DisabledListItemRenderer);
			
		}
		
		override protected function mouseOverHandler(event:MouseEvent):void
		{
			var item:IListItemRenderer = mouseEventToItemRenderer(event);
			if (itemDisable(event)) {
				// Disable selection.
			} else {
				super.mouseOverHandler(event);
			}
		}
   
		override protected function mouseDownHandler(event:MouseEvent):void {
			if (itemDisable(event)) {
				// Disable click.
				return;
			} else {
				super.mouseDownHandler(event);
			}	 	    
		}
  
		override protected function mouseUpHandler(event:MouseEvent):void {
			if (itemDisable(event)) {
				// Disable click.
				return;
			} else {
				super.mouseUpHandler(event);
			}	    
		}
   
		override protected function mouseClickHandler(event:MouseEvent):void {
			if (itemDisable(event)) {
				// Disable click.
				return;
			} else {
				super.mouseClickHandler(event);
			}
		}
		   
		override protected function mouseDoubleClickHandler(event:MouseEvent):void {
			if (itemDisable(event)) {
				// Disable double click.
				event.preventDefault();
			} else {
				super.mouseDoubleClickHandler(event);
			}
		}
  
		override protected function keyDownHandler(event:KeyboardEvent):void {
			event.stopPropagation();
			// Disable key down event.	     	
			//super.keyDownHandler(event);
		}		     
		
		private function itemDisable(event:MouseEvent):Boolean {
			var item:IListItemRenderer = mouseEventToItemRenderer(event);
			if (item != null && item.data != null 
				&& ((item.data is XML && item.data.@enabled == 'false')
					|| item.data.enabled==false || item.data.enabled=='false')
			) {
				return true;
			} else {
				return false;
			}
		}	
		

		override protected function dragCompleteHandler(event:DragEvent):void
		{
			super.dragCompleteHandler(event);
			
			dispatchEvent(new Event("dragFinished"));
		}
	

	}
	


	
}


package com.invexer.component
{
	import mx.controls.Label;
	
	public class DisabledListItemRenderer extends Label
	{		
		private var _enabled:Boolean = true;

		public function DisabledListItemRenderer()
		{
			super();
		}	

		override public function set data(value:Object):void
		{
			if (value != null && ((value is XML && value.@enabled == 'false')
	     				|| value.enabled==false || value.enabled=='false')){
	     		this._enabled = false;
	     	}else{
	     		this._enabled = true;
	     	}
			super.data = value;
		}	
		
		override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
		{
			super.updateDisplayList(unscaledWidth, unscaledHeight);
			if (!this._enabled) {
				textField.setColor(getStyle("disabledColor"));
			}else{
				textField.setColor(getStyle("color"));
			}
		}						
	}
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值