package ptaylor.bdd.grid.components
{
    import mx.controls.dataGridClasses.DataGridItemRenderer;
    
    import ptaylor.bdd.grid.IStreamingServiceUI;
    import ptaylor.bdd.grid.events.ChangeStreamInfoSignal;
    import ptaylor.bdd.grid.vo.StreamData;
    import ptaylor.bdd.grid.vo.StreamInfoVO;
    import ptaylor.bdd.screens.IScreen;
    import ptaylor.bdd.screens.components.Screens;
    import ptaylor.bdd.screens.events.ScreenChangedSignal;
    
    public class StreamingServiceItemRenderer extends DataGridItemRenderer implements IStreamingServiceUI, IScreen
    {
        override public function set data(value:Object):void
        {
            if(!(value is Array))
            {
                return;
            }
            
            super.data = value;
            
            updateStreamInfo.dispatch(new StreamInfoVO(String(value[listData.columnIndex])));
        }
        
        public function setStreamData(data:StreamData):void
        {
            text = data.value;
        }
        
        private const signal:ChangeStreamInfoSignal = new ChangeStreamInfoSignal();
        
        public function get updateStreamInfo():ChangeStreamInfoSignal
        {
            return signal;
        }
        
        public function set selectedScreen(screen:IScreen):void
        {
            const channel:String = data ? data[listData.columnIndex] : '';
            updateStreamInfo.dispatch(new StreamInfoVO(screen == Screens.GRID_SCREEN ? channel : ''));
        }
        
        private const screenSignal:ScreenChangedSignal = new ScreenChangedSignal();
        
        public function get screenChangedSignal():ScreenChangedSignal
        {
            return screenSignal;
        }
    }
}