Since nobody has replied I'm continueing to try this. I currently think I
may need to override all methods in UI component.


Is it clear what I'm trying to do?

Is this the wrong way of doing it?

I think its probably lighter than wrapping to components in a fully fledged
UI component?
*
Some Thoughts*

Also a comment on ListItemRenderer, theres an awful lot of methods that need
to be implemented to make this work.  I doubt all of them are used in a List
Senario. Even implementing them all theres still a dependency on
DisplayObject (who's methods seem to be implemented). It does feel to me
like the architecture seems a bit off.  I mean if all of those methods are
implemented why is there still a dependency on DisplayObject.

Its not just enough to implement IListRenderer which seems to defeat the
purpose of an interace

On Wed, Aug 18, 2010 at 11:42 PM, Wesley Acheson
<[email protected]>wrote:

> *Disclaimer:* This is a cross post with Stack Overflow. I know at least
> one person on this list saw it there.
> http://stackoverflow.com/questions/3507313/flex-switch-item-renderer
>
> Hi
>
> I was wondering if anyone had any luck with the following senario in flex.
>
> I'd like to be able to have a custom item renderer which delegates to
> another renderer inside.
>
> The reason for this would be in a datagrid for instance displaying a
> checkbox if the dataprovider for the row had a boolean value. Using the
> default item renderer when the value was a non boolean.
>
> Basically I was hoping to use a proxy object (though not necessarily the
> proxy class) so that I could a renderer which delegated all of its
> responsibilties to a sub renderer.
>
> Hard to explain.
>
> *Edit 1*
>
> I think the following gives a clearer idea of what I had in mind. This is
> only knocked up quickly for the purpose of showing the idea.
>
> *SwitchingRenderer.as*
>
> package com.example
> {
>     import mx.controls.CheckBox;
>
>     import mx.controls.dataGridClasses.DataGridItemRenderer;
>
>     import mx.controls.listClasses.BaseListData;
>
>     import mx.controls.listClasses.IDropInListItemRenderer;
>
>     import mx.core.IDataRenderer;
>
>     import mx.core.UIComponent;
>
>     public class SwitchingRenderer extends UIComponent implements 
> IDataRenderer, IDropInListItemRenderer
>
>     {
>         private var checkboxRenderer:CheckBox;
>
>         private var defaultRenderer:DataGridItemRenderer;
>
>         private var currentRenderer:IDataRenderer;
>
>         public function SwitchingRenderer()
>
>         {
>             this.checkboxRenderer = new CheckBox();
>
>             this.defaultRenderer = new DataGridItemRenderer();
>
>             this.currentRenderer = defaultRenderer();
>
>             super();
>         }
>
>         public function get data():Object
>
>         {
>             //If the data for this cell is a boolean
>             //  currentRender = checkBoxRenderer
>
>             // otherwise
>             //  currentRenderer = defaultRenderer
>         }
>
>         public function set data(value:Object):void
>
>         {
>             currentRenderer.data = value;
>
>         }
>
>         public function get listData():BaseListData
>
>         {
>             return currentRenderer.listData;
>
>         }
>
>         public function set listData(value:BaseListData):void
>
>         {
>             currentRenderer.listData = value;
>
>         }
>
>
>
>     }
> }
>
>
>

Reply via email to