您的位置:首页 > 其它

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

2011-08-24 10:32 441 查看
// 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"));
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐