Matt,

Unless I have a bug in my compiler(s), I believe I cannot place inline
events in a nested faceless component ( the stack trace is attached at
the end of the mail )

    <Person name="A" id="personA" age="55">
      <children>
        <mx:Array>
          <Person name="A1" age="20" talk="trace('THIS INLINE EVENT
WONT COMPILE')"/>
        </mx:Array>
      </children>
    </Person>


and since I cannod declare an ID on it either, the only way to bind is
by referencing it the long way.

<mx:Label text="{ 'age=' + Person( personA.children[0] ).age}"/>

which is not necessarily bad in this simple case but makes you
hardcode the nesting...

See my point?

I was trying to use MXML to create the declaration for a finite state
machine implementation . If I had nesting, events and binding on all
levels then things like declaring transition and entry/exit events
would be very straightforward.

<State ... entry="trace('I am the  entry action for state ' +
event.target.id )" final="true"/>

The same with references: instead of passing a string name ( or ID ) I
could just use binding to relate, say, states to transitions

<Transition target="{aState}" execute="Void('another event')"/>

So, I will have to go for the spaghetti in this implementation for flex15

Best,
Aldo

PS. Send my best to Ely, Todd, and Lucian ( if he's still there )  ;)




the stack trace for the nested faceless inline event exception:


28/12 14:57:36 ERROR flex.compiler.HtmlOutputHandler: Results of
compiling ...\fsm\nestedMXMLObjectsTest\main.mxml
1 Exception found.
Exception java.lang.NullPointerException
        at flex.compiler.SwcBuilder.getEvents(SwcBuilder.java:1214)
        at flex.compiler.SwcBuilder.generateDescriptorCode(SwcBuilder.java:1072)
        at flex.compiler.SwcBuilder.generateClassText(SwcBuilder.java:329)
        at flex.compiler.SwcBuilder.createClassStub(SwcBuilder.java:549)
        at flex.compiler.MxmlLoader.parse(MxmlLoader.java:290)
        at flex.compiler.MxmlLoader.loadComponentType(MxmlLoader.java:178)
        at flex.compiler.MxmlLoader.loadComponent(MxmlLoader.java:204)
        at 
flex.compiler.CachedComponentLoader.getComponent(CachedComponentLoader.java:197)
        at 
flex.compiler.CachedComponentLoader.loadDefinition(CachedComponentLoader.java:101)
        at 
flex.compiler.CachedComponentLoader.getDefinition(CachedComponentLoader.java:263)
        at flex.compiler.CompositeLoader.getDefinition(CompositeLoader.java:54)
        at flex.compiler.linker.Loader.getType(Loader.java:266)
        at flex.compiler.linker.Loader.findType(Loader.java:248)
        at 
flex.compiler.CompilerPackageManager.loadType(CompilerPackageManager.java:629)
        at flex.compiler.MxmlCompiler.openDocument(MxmlCompiler.java:61)
        at flex.compiler.MxmlServlet.sendHtmlShell(MxmlServlet.java:249)
        at flex.compiler.MxmlServlet.doGet(MxmlServlet.java:193)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
        at flex.bootstrap.BootstrapServlet.service(BootstrapServlet.java:69)
        at jrun.servlet.FilterChain.doFilter(FilterChain.java:86)
        at flex.server.j2ee.cache.CacheFilter.doFilter(CacheFilter.java:262)
        at flex.bootstrap.BootstrapFilter.doFilter(BootstrapFilter.java:66)
        at jrun.servlet.FilterChain.doFilter(FilterChain.java:94)
        at flex.server.j2ee.DetectionFilter.doFilter(DetectionFilter.java:95)
        at flex.bootstrap.BootstrapFilter.doFilter(BootstrapFilter.java:66)
        at jrun.servlet.FilterChain.doFilter(FilterChain.java:94)
        at jrun.servlet.FilterChain.service(FilterChain.java:101)
        at jrun.servlet.ServletInvoker.invoke(ServletInvoker.java:91)
        at jrun.servlet.JRunInvokerChain.invokeNext(JRunInvokerChain.java:42)
        at 
jrun.servlet.JRunRequestDispatcher.invoke(JRunRequestDispatcher.java:249)
        at 
jrun.servlet.ServletEngineService.dispatch(ServletEngineService.java:527)
        at jrun.servlet.http.WebService.invokeRunnable(WebService.java:168)
        at 
jrunx.scheduler.ThreadPool$ThreadThrottle.invokeRunnable(ThreadPool.java:457)
        at jrunx.scheduler.WorkerThread.run(WorkerThread.java:66)






On 12/28/05, Matt Chotin <[EMAIL PROTECTED]> wrote:
> What part of inline events and databinding are missing?  If your class
> extends EventDispatcher it has events.  And binding is the same on a
> faceless object as a UIComponent.
>
> Matt
>
> -----Original Message-----
> From: flexcoders@yahoogroups.com [mailto:[EMAIL PROTECTED] On
> Behalf Of Aldo Bucchi
> Sent: Wednesday, December 28, 2005 1:37 AM
> To: flexcoders@yahoogroups.com
> Subject: Re: [flexcoders] Nested faceless components. keeping IDs and
> DataBinding
>
> Hi Matt,
>
> Back posting huh!
>
> Thx for the answer.
>
> > Now what I don't remember is if when we instantiate via the Array if
> the
> > MXMLObject initialized will be called.  You'd need to look at the
>
> Yes it is called. As with every faceless comp.
>
> Using the initalized() indeed allows me to set an id or registe the
> component somehow... but still, it is of little use with no binding
> and inline events.
>
> another point for flex2
>
> Best,
> Aldo
>
>
>
> On 12/27/05, Matt Chotin <[EMAIL PROTECTED]> wrote:
> > I think we're going to allow nested ids in Flex 2.
> >
> > For Flex 1.5 though you might be able to make Person an MXMLObject
> which
> > would then have its initialized() method called as it gets created.
> > That call would pass the MXML document which created the object and
> you
> > could then attach the person using an id.  We have hard-coded "id" to
> > not be allowed on deeper faceless objects, but you could use another
> > name and then just assign that as the variable name for the document.
> > Something like this:
> >
> > function initialized(document, id):Void
> > {
> >   Var myId:String = this['valueYouPicked'];
> >   Document[myId] = this;
> > }
> >
> > Now what I don't remember is if when we instantiate via the Array if
> the
> > MXMLObject initialized will be called.  You'd need to look at the
> > generated actionscript (turn keep-generated-actionscript on in
> > flex-config) to be sure.
> >
> > Matt
> >
> > -----Original Message-----
> > From: flexcoders@yahoogroups.com [mailto:[EMAIL PROTECTED]
> On
> > Behalf Of Aldo Bucchi
> > Sent: Monday, December 26, 2005 3:25 PM
> > To: flexcoders@yahoogroups.com
> > Subject: [flexcoders] Nested faceless components. keeping IDs and
> > DataBinding
> >
> > Hi all,
> >
> > It would be great to have IDs and databinding available to faceless
> > data structures.
> > Unfortunately, there are some restrictions that apply to faceless
> > components.
> >
> > Is there any (hacky) way to declare a nested faceless component in an
> > MXML document and assign a document scoped ID to it ??
> >
> > This is not legal as there are IDs in the nested components.
> >
> >         <c:Person id="foo">
> >                 <c:children>
> >                         <mx:Array>
> >                                 <c:Person id="barbie"/>
> >                                 <c:Person id="birbie"/>
> >                         </mx:Array>
> >                 </c:children>
> >         </c:Person>
> >
> >
> > One ugly way would be to extend a container and do something like the
> > following
> >
> >         <c:Person id="foo">
> >             <c:Person id="barbie"/>
> >             <c:Person id="birbie"/>
> >         </c:Person>
> >
> > Now, this limits me to assigning all children to one array... not to
> > mention the overhead and component-lifecycle-related trouble.
> >
> >
> > For now the only legal solution is the following I guess...
> >
> > <c:Person id="foo"/>
> > <c:Person id="barbie" parent="{foo}"/>
> > <c:Person id="birbie" parent="{foo}"/>
> >
> >
> > Evidently the benefit of using XML is lost.
> >
> >
> > Any ideas?
> >
> >
> >
> > --
> > ::::: Aldo Bucchi :::::
> > mobile (56) 8 429 8300
> >
> >
> >
> > --
> > Flexcoders Mailing List
> > FAQ: http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt
> > Search Archives:
> > http://www.mail-archive.com/flexcoders%40yahoogroups.com
> > Yahoo! Groups Links
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> > --
> > Flexcoders Mailing List
> > FAQ: http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt
> > Search Archives:
> http://www.mail-archive.com/flexcoders%40yahoogroups.com
> > Yahoo! Groups Links
> >
> >
> >
> >
> >
> >
> >
> >
>
>
> --
> ::::: Aldo Bucchi :::::
> mobile (56) 8 429 8300
>
>
>
> --
> Flexcoders Mailing List
> FAQ: http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt
> Search Archives:
> http://www.mail-archive.com/flexcoders%40yahoogroups.com
> Yahoo! Groups Links
>
>
>
>
>
>
>
>
>
> --
> Flexcoders Mailing List
> FAQ: http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt
> Search Archives: http://www.mail-archive.com/flexcoders%40yahoogroups.com
> Yahoo! Groups Links
>
>
>
>
>
>
>


--
::::: Aldo Bucchi :::::
mobile (56) 8 429 8300


------------------------ Yahoo! Groups Sponsor --------------------~--> 
1.2 million kids a year are victims of human trafficking. Stop slavery.
http://us.click.yahoo.com/.QUssC/izNLAA/TtwFAA/nhFolB/TM
--------------------------------------------------------------------~-> 

--
Flexcoders Mailing List
FAQ: http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt
Search Archives: http://www.mail-archive.com/flexcoders%40yahoogroups.com 
Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/flexcoders/

<*> To unsubscribe from this group, send an email to:
    [EMAIL PROTECTED]

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/
 


Reply via email to