On 11/8/13 4:09 PM, "OmPrakash Muppirala" <[email protected]> wrote:
>>>Yes, setting the default values in metadata would be great. It is more
>>>in
>> >tune with how Flex works in today.
>> Maybe I'm not understanding. SkinPart doesn't set a default value.
>>Lots
>> of things are set in defaults.css. What metadata are you thinking of?
>>
>>
>
>You are right. I was not very clear. One way to go about it is, in the
>component:
>
>ControlBar.as
>
>[BeadReference("IBeadLayout", type="org.apache.flex.core.IBeadLayout",
>required="true")]
>public class ControlBar extends Container implements IContainer, IChrome
>{
> override public function addedToParent():void
> {
> super.addedToParent();
>
> if( getBeadByType(IBeadLayout) == null ) {
> var layout:IBeadLayout = new
>(ValuesManager.valuesImpl.getValue(this, "IBeadLayout")) as IBeadLayout;
> addBead(layout);
> }
> }
>}
>
>In the above approach, the component developer could specify all the beads
>utilized in the component by listing them out at the top of the class.
>Also, we could have stricter type checking by specifying the Interface the
>bead should implement.
>We could optionally mention if the bead is required or not. If it is not
>required, then the component developer should be using a default one. If
>an entry is 'required' and not available in the CSS file, the compiler
>would throw an error.
>
>Your thoughts on this approach?
How does the developer change the bead for several instances of a class at
once. That's why I chose CSS. It has several ways of assigning things.
I think the tools or optional beads can confirm configuration issues
without burdening the 80% of folks who got it right and don't need any
checking in production.
>
>I am thinking through another approach where we don't specify anything in
>the .css file, but use a dependency injection paradigm more on the lines
>of
>Parsley, Robotlegs, etc. Do you think that is worth discussing?
Worth discussing. I prefer having each object pick up its dependencies
when it needs it, not at particular points in time. IMO, a centralized DI
subsystem doesn't allow as much flexibility around timing. Lots of
things will be picking up styles, so why not pick up dependencies the same
way?