// 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"));
}
}
}
}