Re: [flexcoders] Re: Switching Item Renderers
it does. Another approach which i have taken (and I find neater, faster and more memory efficient with less emphasis on binding) is the concept of one 1 itemrenderer and several layouts which you can swop out depending on the model. This allows you to control shared resources (meaning i create the least number of fields i have to across several different itemrenderers) and get extremely intelligent about a lot more with less overhead. but hey, its personal flavour, spice of life stuff, ya know. On Wed, Sep 1, 2010 at 8:14 PM, Wesley Acheson wesley.ache...@gmail.comwrote: True. I'm not sure if that recycles well though? On Wed, Sep 1, 2010 at 3:01 PM, Johannes Nel johannes@gmail.comwrote: 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.comwrote: 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.comflexcoders% 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
Re: [flexcoders] Re: Switching Item Renderers
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...@embarqmail.comwrote: 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, Wesley Acheson wesley.ache...@... 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.ache...@...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; } } }
Re: [flexcoders] Re: Switching Item Renderers
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.comflexcoders% 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
Re: [flexcoders] Re: Switching Item Renderers
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.comwrote: 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.comflexcoders% 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