Hi,

Basically, I would like to apply some (of my own) metadata to a
component instance inside the mxml. Like this:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml";>
  <mx:ApplicationControlBar>

    <mx:Metadata>[MyMetadata]</mx:Metadata>
    <mx:Button id="foo" label="Blah"/>

  </mx:ApplicationControlBar>
</mx:Application>

And then only have the [MyMetadata] applied to the foo button
instance. Is this possible? Placing it there makes the compiler bark.
I guess this is due to the fact, that mxmlc will put it before a class
definition.

I then tried something like this:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml";>
  <mx:ApplicationControlBar>

    <mx:Script>[MyMetadata]</mx:Script>
    <mx:Button id="foo" label="Blah"/>

  </mx:ApplicationControlBar>
</mx:Application>

but this made the compiler bark too :-) about metadata requiring an
associated definition. And of course it is right. My guess is the
mxmlc compiler is translating the above to something like:

acb = new ApplicationControlBar();
[MyMetadata]
b = new Button();
acb.add(b);

and of course then it is wrong with the metadata element there. Am I
right?

Can I do it some other way?

I came up with this:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml";>
  <mx:ApplicationControlBar>

    <myns:MetadataButton id="foo" label="Blah"/>

  </mx:ApplicationControlBar>
</mx:Application>

and then have a component MetadataButton.mxml with this content:

<?xml version="1.0" ?>
<mx:Button xmlns:mx="http://www.adobe.com/2006/mxml";>
  <mx:Metadata>[MyMetadata]</mx:Metadata>
</mx:Button>

which works! But the MyMetadata annotation will change on the various
buttons. So I would like to inline it, like this:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml";>
  <mx:ApplicationControlBar>

  <mx:Button xmlns:mx="http://www.adobe.com/2006/mxml";>
    <mx:Metadata>[MyMetadata]</mx:Metadata>
  </mx:Button>

  </mx:ApplicationControlBar>
</mx:Application>

but this makes the compiler bark again.

Any help?

Reply via email to