True. I'm not sure if that recycles well though? On Wed, Sep 1, 2010 at 3:01 PM, Johannes Nel <johannes....@gmail.com> wrote:
> > > set your renderer to an IFactory. this is a pretty standard way of doing > things. > > > On Wed, Sep 1, 2010 at 1:19 PM, valdhor <valdhorli...@embarqmail.com>wrote: > >> >> >> The only computation I see is determining which component to use. With >> your original idea you would still need the same computation to figure out >> which (sub) item renderer to use. I still think you are trying to hide the >> woods using more trees. >> >> >> --- In flexcoders@yahoogroups.com <flexcoders%40yahoogroups.com>, Wesley >> Acheson <wesley.ache...@...> wrote: >> > >> > Yeah thats the way I've done it previously. I thought that this way >> would >> > cut out on some additional computation. >> > >> > >> > >> > On Tue, Aug 31, 2010 at 6:04 PM, valdhor <valdhorli...@...>wrote: >> >> > >> > > >> > > >> > > That seems overly complicated to me. What I would try is create two >> custom >> > > components then instantiate the appropriate one based on the data and >> add it >> > > in the updateDisplayList method. >> > > >> > > >> > > --- In flexcoders@yahoogroups.com >> > > <flexcoders%40yahoogroups.com><flexcoders% >> 40yahoogroups.com>, Wesley >> >> > > Acheson <wesley.acheson@> wrote: >> > > > >> > > > 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 >> > > > <wesley.acheson@>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; >> > > > > >> > > > > } >> > > > > >> > > > > >> > > > > >> > > > > } >> > > > > } >> > > > > >> > > > > >> > > > > >> > > > >> > > >> > > >> > > >> > >> >> > > > -- > j:pn > \\no comment > >