Sorry guys I forgot to add the code....
package com.tmgc.view.components
{
import flash.display.DisplayObject;
import flash.events.Event;
import mx.controls.listClasses.BaseListData;
import mx.controls.listClasses.IDropInListItemRenderer;
import mx.controls.listClasses.IListItemRenderer;
import mx.core.IDataRenderer;
import mx.core.mx_internal;
import mx.events.FlexEvent;
import mx.controls.SWFLoader;
import flash.geom.Rectangle;
import flash.display.Bitmap;
import mx.graphics.BitmapFill;
import flash.display.Sprite;
import flash.display.Graphics;
import mx.graphics.RectangularDropShadow;
import mx.controls.Alert;
use namespace mx_internal;
//--------------------------------------
// Events
//--------------------------------------
/**
* Dispatched when the <code>data</code> property changes.
*
* <p>When you use a component as an item renderer,
* the <code>data</code> property contains the data to display.
* You can listen for this event and update the component
* when the <code>data</code> property changes.</p>
*
* @eventType mx.events.FlexEvent.DATA_CHANGE
*/
[Event(name="dataChange", type="mx.events.FlexEvent")]
//--------------------------------------
// Other metadata
//--------------------------------------
[DefaultBindingProperty(source="progress", destination="source")]
[DefaultTriggerEvent("complete")]
[IconFile("Image.png")]
[Style(name="showDropShadow", type="Boolean", inherit="no")]
[Style(name="strokeClr", type="uint", inherit="no")]
[Style(name="stroke", type="Number", inherit="no")]
[Style(name="cornerRadius", type="Number", inherit="no")]
[Style(name="cornerRadiusTopLeft", type="Number", inherit="no")]
[Style(name="cornerRadiusTopRight", type="Number", inherit="no")]
[Style(name="cornerRadiusBottomLeft", type="Number", inherit="no")]
[Style(name="cornerRadiusBottomRight", type="Number", inherit="no")]
public class RoundedImage extends SWFLoader implements IDataRenderer,
IDropInListItemRenderer,IListItemRenderer
{
//--------------------------------------------------------------------------
//
// Constructor
//
//--------------------------------------------------------------------------
/**
* Constructor.
*/
public function RoundedImage()
{
super();
// images are generally not interactive
tabChildren = false;
tabEnabled = true;
super.scaleContent = this.scaleContent;
showInAutomationHierarchy = true;
}
//--------------------------------------------------------------------------
//
// Variables
//
//--------------------------------------------------------------------------
/**
* @private
*/
private var makeContentVisible:Boolean = false;
/**
* @private
* Flag that will block default data/listData behavior
*/
private var sourceSet:Boolean;
//--------------------------------------------------------------------------
//
// Overridden properties
//
//--------------------------------------------------------------------------
//----------------------------------
// source
//----------------------------------
[Bindable("sourceChanged")]
[Inspectable(category="General", defaultValue="", format="File")]
/**
* @private
*/
override public function set source(value:Object):void
{
sourceSet = true;
super.source = value;
}
//--------------------------------------------------------------------------
//
// Properties
//
//--------------------------------------------------------------------------
//----------------------------------
// data
//----------------------------------
/**
* @private
* Storage for the data property.
*/
private var _data:Object;
[Bindable("dataChange")]
[Inspectable(environment="none")]
/**
* The <code>data</code> property lets you pass a value to the
component
* when you use it in an item renderer or item editor.
* You typically use data binding to bind a field of the
<code>data</code>
* property to a property of this component.
*
* <p>When you use the control as a drop-in item renderer, Flex
* will use the <code>listData.label</code> property, if it exists,
* as the value of the <code>source</code> property of this control, or
* use the <code>data</code> property as the <code>source</code>
property.</p>
*
* @default null
* @see mx.core.IDataRenderer
*/
public function get data():Object
{
return _data;
}
/**
* @private
*/
public function set data(value:Object):void
{
_data = value;
if (!sourceSet)
{
source = listData ? listData.label : data;
sourceSet = false;
}
dispatchEvent(new FlexEvent(FlexEvent.DATA_CHANGE));
}
//----------------------------------
// listData
//----------------------------------
/**
* @private
* Storage for the listData property.
*/
private var _listData:BaseListData;
[Bindable("dataChange")]
[Inspectable(environment="none")]
/**
* When a component is used as a drop-in item renderer or drop-in
* item editor, Flex initializes the <code>listData</code> property
* of the component with the appropriate data from the List control.
* The component can then use the <code>listData</code> property
* to initialize the other properties of the drop-in
* item renderer
*
* <p>You do not set this property in MXML or ActionScript;
* Flex sets it when the component is used as a drop-in item renderer
* or drop-in item editor.</p>
*
* @default null
* @see mx.controls.listClasses.IDropInListItemRenderer
*/
public function get listData():BaseListData
{
return _listData;
}
/**
* @private
*/
public function set listData(value:BaseListData):void
{
_listData = value;
}
//--------------------------------------------------------------------------
//
// Inherited methods: UIComponent
//
//--------------------------------------------------------------------------
/**
* @private
*/
override protected function updateDisplayList(unscaledWidth:Number,
unscaledHeight:Number):void
{
var rc:Rectangle = new Rectangle();
var image:Bitmap = Bitmap(content);
var f:BitmapFill = new BitmapFill();
var fillArea:Sprite = new Sprite();
this.addChild(fillArea);
var g:Graphics = fillArea.graphics;
var o:Number = 0;
var showDrpShdw:Boolean = getStyle("showDropShadow");
var cornerRadius:Number = getStyle("cornerRadius");
var strokeWidth:Number = getStyle("stroke");
var strokeColor:uint = getStyle("strokeClr");
var cTL:Number = getStyle("cornerRadiusTopLeft");
var cTR:Number = getStyle("cornerRadiusTopRight");
var cBL:Number = getStyle("cornerRadiusBottomLeft");
var cBR:Number = getStyle("cornerRadiusBottomRight");
g.clear();
if(isNaN(cornerRadius))
cornerRadius = 0;
if(isNaN(cTL))
cTL = cornerRadius;
if(isNaN(cTR))
cTR= cornerRadius;
if(isNaN(cBL))
cBL = cornerRadius;
if(isNaN(cBR))
cBR = cornerRadius;
// Shadow
if (showDrpShdw)
{
var dropShadow:RectangularDropShadow = new
RectangularDropShadow();
dropShadow.distance = 5;
dropShadow.angle = 45;
dropShadow.color = 0;
dropShadow.alpha = 0.4;
dropShadow.tlRadius = cornerRadius;
dropShadow.trRadius = cornerRadius;
dropShadow.blRadius = cornerRadius;
dropShadow.brRadius = cornerRadius;
dropShadow.drawShadow(g, 0, 0, unscaledWidth, unscaledHeight);
}
g.lineStyle(strokeWidth,strokeColor,1);
if(f != null)
{
rc.left = o;
rc.right = o;
rc.width = unscaledWidth;
rc.height = unscaledHeight;
f.begin(g,rc);
}
g.drawRoundRectComplex(o,o,unscaledWidth,unscaledHeight,cTL,cTR,cBL,cBR);
if(f != null)
{
f.end(g);
}
}
//--------------------------------------------------------------------------
//
// Inherited event handlers: SWFLoader
//
//--------------------------------------------------------------------------
/**
* @private
*/
override mx_internal function
contentLoaderInfo_completeEventHandler(event:Event):void
{
var obj:DisplayObject = DisplayObject(event.target.loader);
super.contentLoaderInfo_completeEventHandler(event);
// Hide the object until draw
obj.visible = false;
makeContentVisible = true;
invalidateDisplayList();
}
}
}