Something like

Class Component
{
    [ValueConversion(class=geom.Rectangle,propertylist=left,right)]
    public var padding:Rectangle;
}

Would be less powerful tho, having a custom converter could allow for
example padding="0", padding="0,0,0,0", padding="2%", etc all at once.

Does your FlexJS style sample translate both to HTML and Flash? I find it a
nice addition, although not having proper IDE support can be a pain
sometimes.

Best regards,

On Thu, May 7, 2015 at 8:28 PM, Alex Harui <aha...@adobe.com> wrote:

> Nice idea, go work on it ;-)
>
> Seriously, though, it would be nice to see something like this.  I don’t
> know that I’d use a Converter, it might be sufficient to use Metadata to
> annotate a property with a default class and property list to use if the
> value doesn’t coerce cleanly.  So maybe the Component would be defined
> like this:
>
> Class Component
> {
>     [ValueConversion(class=geom.Rectangle,propertylist=left,right)]
>     public var padding:Rectangle;
> }
>
> It won’t be on my work list right now though, too many other fish to fry.
> One other note: in FlexJS, we are allowing HTML style syntax for styles so
> padding can be expressed as:
>
> <custom:Component style=“padding:10,10” />
>
> This doesn’t get checked by the compiler, so you can also do:
>
> <custom:Component>
>         <custom:style>
>                 <js:SimpleStyleObject paddingLeft=“10” paddingRight=“10” />
>
> -Alex
>
> On 5/7/15, 10:21 AM, "Héctor A" <neverbi...@gmail.com> wrote:
>
> >First, I'm not demanding anything, this is just an idea. I know that even
> >so when ideas are proposed in open source projects some people feel
> >"offended" and ask for the OP to work on them, but I hope this is taken
> >kindly by everyone.
> >
> >I'm lately feeling that MXML could be less verbose if attributes could be
> >decorated with a custom converter. For greater reusability the converter
> >could point to some interface implementation, or if the performance may be
> >a critical concern because of mobile devices, maybe some global function,
> >or if the latter suppose some problem, maybe a local function.
> >
> >The idea would be reducing boilerplate code like:
> >
> ><custom:Component>
> >  <custom:padding>
> >    <geom:Rectangle left="10" right="10" />
> >  </custom:padding>
> ></custom:Component>
> >
> >Or
> >
> ><s:Rect>
> >  <s:fill>
> >   <s:SolidColor="#ff0000"/>
> >  </s:fill>
> ></s:Rect>
> >
> >To more compact code like:
> >
> ><custom:Component padding="10;10"/>
> >
> >And
> >
> ><s:Rect fill="#ff0000"/>
> >
> >The code behind would be something like:
> >
> >[Converter("org.apache.MxmlConverters.convertToRectangle")]
> >public function set padding(value:Rectangle):void { .. }
> >
> >[Converter("org.apache.MxmlConverters.convertToSolidColor")]
> >public function set padding(value:IFill):void { .. }
> >
> >Using a function as the converter also enables to check the returned value
> >type is the one needed, as AS3 doesn't support generics an interface
> >wouldn't allow to validate the type.
> >
> >This is somewhat similar to XAML. I don't know if allowing to inject some
> >converter in binding expressions like XAML does would be meaningful (since
> >I'd say we could just use it directly in the binding expression):
> >
> ><s:Rect fill="{'#ff0000;#000000',
> >Converter='org.apache.MxmlConverters.convertToGradientColor'}"/>
> >
> >Or maybe:
> >
> ><s:Rect fill="@Converter(value='#ff0000;#000000',
> >converter='org.apacheMxmlConverters.convertToGradientColor')"/>
> >
> >What do you think? would this change make MXML a bit more pleasant to work
> >with? I sometimes think so.
>
>

Reply via email to