Hi Alex,

thanks for the explanation, so if I understand right, there's not problem
with currentTarget, only that I was trying to use in an incorrect way.
And that the right way to deal with this concrete behavior is through
CHANGE event like I finaly did.

I'm ok as well with the fact that itemClicked is something not needed in
the most basic version to make it PAYG.

Thanks! :)



2018-07-03 18:11 GMT+02:00 Alex Harui <aha...@adobe.com.invalid>:

> Hi Carlos,
>
> If I understand the code correctly, you are getting null because you are
> listening for click on Navigation not each individual NavigationRenderer.
> currentTarget will be the Navigation.  The way currentTarget works is
> specified by the W3C, not us.
>
> This is a good example of how each layer in the DOM should be responsible
> for dispatching higher and higher-order events.  I think you mentioned
> upthread that the NavigationRenderer might have widgets in it that when
> clicked, aren't supposed to change the Navigation's selection.  Having
> Navigation listen for click on itself or on its NavigationRenderers is not
> a recommended practice, because MouseEvent clicks bubble so any click on
> any widget in the renderer, regardless off what that click means will be
> seen by click handlers higher in the DOM. So, higher levels in the DOM like
> Navigation should rarely listen for low-level events like "click".
> Instead, each NavigationRenderer should abstract the click events and
> determine which ones mean that the renderer was clicked and dispatch an
> itemClick event from the NavigationRenderer. And the selection management
> code for the Navigator should be listening for itemClick and translate that
> into a "change" event that says that it received an itemClick that changed
> the selection.  Click, itemClick and "change" are events with increasingly
> higher-order semantics/meaning, and provide abstractions that allow for
> more complex renderers to interact with the mouse in ways that don't affect
> selection.
>
> The most basic List would not redispatch itemClick "just-in-case".  That
> would not be PAYG.  Some other version of List could if folks actually need
> it.  Instead, as you discovered, using the appropriate level of event for
> the control means that you don't have to worry about the low-level events
> that add up to the event that really was the one you wanted.
>
> HTH,
> -Alex
>
> On 7/3/18, 1:05 AM, "carlos.rov...@gmail.com on behalf of Carlos Rovira"
> <carlos.rov...@gmail.com on behalf of carlosrov...@apache.org> wrote:
>
>     Hi Alex,
>
>     taking into account the code from JewelExample I just posted. This
> code:
>
>     private function clickHandler(event:MouseEvent):void
>     {
>     var renderer:INavigationRenderer = event.currentTarget as
>     INavigationRenderer;
>     trace(renderer);
>     }
>
>     shows a trace = null, whatever place you click on the renderer (in the
>     subcomponents or directly in the renderer). event.target is right but
> only
>     in the renderer as expected.
>
>     So it seems currentTarget is not working right at least in List
> component.
>
>     Thanks
>
>
>     2018-07-03 4:10 GMT+02:00 Alex Harui <aha...@adobe.com.invalid>:
>
>     > If event.currentTarget is not working, we need to make it work.
> That is
>     > the recommended way to handle bubbling of events.  The browsers and
> Flash
>     > work that way so folks will expect it to work.
>     >
>     > The List's change event is not a bubbling event.  Only interaction
> events
>     > like Mouse and Keyboard events should bubble.  There were lots of
> folks
>     > overusing bubbling in old Flex code, but in Royale we should
> discourage
>     > it.  Instead each layer of the DOM should dispatch an appropriate
>     > higher-level semantic event.  IOW, while you can "click" anywhere in
> an
>     > item renderer, logic in the item renderer gets to determine whether
> to
>     > dispatch a higher-level semantic event like "itemClick" and
> "itemClick"
>     > events should not bubble.  Some higher-level layer might listen for
>     > "itemClick" and turn it into "rowClicked" for a DataGrid, and even
>     > higher-level might turn that into "change" or "selectionChange".
>     >
>     > So, IMO, instead of trying some new mechanism, it would be better to
>     > understand why currentTarget is not working for Mouse/Keyboard
> events, or
>     > add the code to propagate semantic events up the parent chain.
>     >
>     > My 2 cents,
>     > -Alex
>     >
>     > On 7/2/18, 2:44 PM, "carlos.rov...@gmail.com on behalf of Carlos
> Rovira"
>     > <carlos.rov...@gmail.com on behalf of carlosrov...@apache.org>
> wrote:
>     >
>     >     Hi Yishay,
>     >
>     >     thanks for let me know about it. I'm playing with it but I
> didn't get
>     > to
>     >     work.
>     >     The case is that maybe List component is not ready for this yet.
>     >
>     >     * event.currentTarget seems not exists in ItemRenderers
>     >     * I can use "itemClicked" event in a MXML List (I think is not
> set the
>     >     metadata and the rest of wiring)
>     >     * List change event doesn't work as well.
>     >
>     >      Hope you or other could point me to a more elegant solution
> since
>     > right
>     >     now, since for me the actual solution is a hack that must be
> converted
>     > to
>     >     something more final.
>     >
>     >     Thanks
>     >
>     >
>     >
>     >     2018-07-02 16:38 GMT+02:00 Yishay Weiss <yishayj...@hotmail.com
> >:
>     >
>     >     > Take a look at ItemRendererMouseController.handleMouseUp() in
>     > Basic. It
>     >     > uses currentTarget.
>     >     >
>     >     >
>     >     >
>     >     >
>     >     >
>     >     >
>     >     >
>     >     > ________________________________
>     >     > From: carlos.rov...@gmail.com <carlos.rov...@gmail.com> on
> behalf of
>     >     > Carlos Rovira <carlosrov...@apache.org>
>     >     > Sent: Monday, July 2, 2018 5:27:08 PM
>     >     > To: dev@royale.apache.org
>     >     > Subject: List Item renderer Click event finds a component in
> its way
>     >     >
>     >     > Hi,
>     >     >
>     >     > what's the best way to handle a click event in a List when the
> Item
>     >     > renderer has some components that can interfere in the click
> event?
>     >     >
>     >     > I have an icon and a Label in the item renderer and if I click
> on
>     > one of
>     >     > those "event.target" is logically set to this components.
>     >     >
>     >     > How to make "event.target" always resolve to the
> item-renderer, even
>     > if I
>     >     > click in the label or the icon.
>     >     > If the label or the icon has a click event, then clicking on
> one of
>     > those
>     >     > components should call it's own click handler, but if nothing
> is set
>     > up, a
>     >     > click in any part of the renderer should call the list click
> event
>     > handler.
>     >     >
>     >     > In JS I can set pointer-events : none for sub components in
> item
>     > renderers
>     >     > but does not seems the best way to handle this
>     >     >
>     >     > thanks
>     >     >
>     >     > --
>     >     > Carlos Rovira
>     >     > https://na01.safelinks.protection.outlook.com/?url=
>     > http%3A%2F%2Fabout.me%2Fcarlosrovira&data=02%7C01%7Caharui%
> 40adobe.com%
>     > 7C6a108592eeb643ebcf2b08d5e0650676%7Cfa7b1b5a7b34438794aed2c178de
>     > cee1%7C0%7C1%7C636661646889224052&sdata=YbiK4qjpjqCpxmvP%
> 2BHBytWFauyvIL%
>     > 2BloI7dxNOF6lew%3D&reserved=0
>     >     >
>     >
>     >
>     >
>     >     --
>     >     Carlos Rovira
>     >     https://na01.safelinks.protection.outlook.com/?url=
>     > http%3A%2F%2Fabout.me%2Fcarlosrovira&data=02%7C01%7Caharui%
> 40adobe.com%
>     > 7C6a108592eeb643ebcf2b08d5e0650676%7Cfa7b1b5a7b34438794aed2c178de
>     > cee1%7C0%7C1%7C636661646889224052&sdata=YbiK4qjpjqCpxmvP%
> 2BHBytWFauyvIL%
>     > 2BloI7dxNOF6lew%3D&reserved=0
>     >
>     >
>     >
>
>
>     --
>     Carlos Rovira
>     https://na01.safelinks.protection.outlook.com/?url=
> http%3A%2F%2Fabout.me%2Fcarlosrovira&data=02%7C01%7Caharui%40adobe.com%
> 7Cc01361909eb24a3e70e908d5e0bbbec1%7Cfa7b1b5a7b34438794aed2c178de
> cee1%7C0%7C0%7C636662019355371776&sdata=cv0ARXbINuhO3IwWt1RDf8UA789U9z
> n7gcerSsncUGA%3D&reserved=0
>
>
>


-- 
Carlos Rovira
http://about.me/carlosrovira

Reply via email to