Hi Carlos

I'd looked at your example, and it works fine when we're rendering a "List" 
control, but if you change your "j:List" into "j:ComboBox" then the renderer is 
no longer used...

Perhaps we need to set the renderer up on the list object that's generated 
manually .. but setting this via the "itemRenderer" property is what we'd tried 
and it didn't work, as the framework then seems to think that this is actually 
a factory object rather than a renderer (bearing in mind too that the MXML has 
already been parsed and so this 'property' is already set up as a hierarchy of 
display objects, rather than being a class that's used as the constructor for 
each renderer object..)

I'll see if I can develop the Tour de Jewel example to get that simpler case 
working first perhaps...

thanks

   Andrew


-----Original Message-----
From: Carlos Rovira <[email protected]> 
Sent: 22 July 2019 16:32
To: [email protected]
Subject: [EXTERNAL] Re: ComboBox list-item renderer

Hi Andrew,

for this one in Royale it use to be done in CSS. For example in tour de jewel 
for List we do:

Source code in GitHub
<https://clicktime.symantec.com/35oKmCet9NJTZrZZRiqcmBC7Vc?u=https%3A%2F%2Fgithub.com%2Fapache%2Froyale-asjs%2Fblob%2Fdevelop%2Fexamples%2Froyale%2FTourDeJewel%2Fsrc%2Fmain%2Froyale%2FListPlayGround.mxml>

<j:List id="iconList" width="200" height="300" className="
iconListItemRenderer" labelField="label">

and in iconListItemRenderer you can find

.iconListItemRenderer
{
IItemRenderer: ClassReference("itemRenderers.IconListItemRenderer");
}

but as well we should can do as inline in MXML, so if that does not work it's a 
bug to solve I think...

HTH

Carlos


El lun., 22 jul. 2019 a las 17:14, Frost, Andrew (<[email protected]>)
escribió:

> Hi again
>
> Just in case someone's already done this and knows already how to set 
> it
> up: we want to have an itemRenderer for the ListView part of a 
> ComboBox control, i.e. when you click on the ComboBox button and it 
> creates the ListView, we need a custom renderer. Currently it's 
> defaulting to StringItemRenderer (from the call [1] within the default 
> ItemRendererClassFactory), but we want it instead to use the inline 
> MXML [2].
>
> I'm hoping that we can set this up by adding a bead of some sort to 
> the ComboBox element that will tell it what item renderer to use; all 
> the item renderer examples I can find are just using a list view 
> directly rather than being something that's set up via a ComboBox. So 
> far we've created a custom View for the ComboBox and we are 
> controlling the creation of the ListView, but this creation doesn't 
> then set up any of the MXMLDescriptor values which are needed for this to 
> work...
>
> Hope that makes sense. Don't worry if not, we'll get to the bottom of 
> it, but I wondered if someone already had done this and knew how to do 
> it :-)
>
> thanks
>
>    Andrew
>
>
>
> [1] Current way ItemRenderClassFactory selects the item renderer:
> if (_strand is IItemRendererProvider && (_strand as
> IItemRendererProvider).itemRenderer) { ... } else {
>     var itemRendererClass:Class =
> ValuesManager.valuesImpl.getValue(_strand, "iItemRenderer") as Class; 
> <<<<< we're getting StringItemRenderer here
>     if (itemRendererClass) { ... }
>     else if (!MXMLDescriptor) { ... }
>     <<< we want it to hit this point i.e. not get set up because it 
> falls through and then uses the MXMLDescriptor value
>
> [2] Our code:
>   <mx:ComboBox width="100" dataProvider="{val}" labelField="subval1">
>     <mx:itemRenderer>
>       <js:ItemRendererClassFactory>  <<<< was "fx:Component"
>         <mx:HBox width="100%" horizontalScrollPolicy="off"> ... layout 
> in here ...  </mx:HBox>
>       </js:ItemRendererClassFactory>
>     </mx:itemRenderer>
>   </mx:ComboBox>
>
>
>
>
>

--
Carlos Rovira
https://clicktime.symantec.com/3S223MPUyE5DVmaKDho7sg57Vc?u=http%3A%2F%2Fabout.me%2Fcarlosrovira

Reply via email to