AIUI, events generated by an HTMLElement are caught by Google Closure Library's event subsystem and dispatched as a BrowserEvent. I think even things we think are MouseEvents are actually dispatched as BrowserEvents. So the actual type for lots of events on the JS side are not what the metadata says. I think only the events we dispatch directly don't get converted. So yes, that means that we are frequently lying about the event type, but since JS doesn't do runtime checking, as long as your code doesn't need to check the type (via "is" or "as") everything should "just work".
I'm always interested in running less code, so dispatching two events seems unnecessary, and one should go away. I was only trying to say that I don't care about consistency that every property change event should be named "somePropertyChanged". IMO, it is ok for the most popular event to be just plain "change". My 2 cents, -Alex On 11/1/17, 12:37 AM, "Harbs" <[email protected]> wrote: >I’m not sure why/how, but I checked and the change event on the >DateChooser change event is BrowserEvent. Maybe that’s a bug. > >Here’s what I get if I listen for both events and trace them to the >console: > >org.apache.royale.events.Event {type: "selectedDateChanged", target: >org.a…e.r…e.h…l.DateChooser, currentTarget: org.a…e.r…e.h…l.DateChooser, >propagationStopped_: false, defaultPrevented: false, …} >org.apache.royale.events.BrowserEvent {wrappedEvent: g…g.e…s.BrowserEvent} > >The type, target and currentTarget properties are correct in the >BrowserEvent and the rest of the properties are undefined. So, I’m not >sure that it really matters that it is a BrowserEvent, although the >construction of it has to be less efficient. > >Either way, do you agree that there should be only one of these two >events dispatched? > >> On Nov 1, 2017, at 5:38 AM, Alex Harui <[email protected]> wrote: >> >> I think the most common event should have a simple name like "change". >>It >> makes it easier to remember. >> >> In JS, the actual type of most events is BrowserEvent if it was >>initiated >> by an HTMLElement event. We are sort of taking advantage of the fact >>that >> JS isn't strongly typed and hopefully nobody really needs to type-check >> the event class. >> >> My 2 cents, >> -Alex >> >> On 10/31/17, 4:30 PM, "Harbs" <[email protected] >><mailto:[email protected]>> wrote: >> >>> Nope. >>> >>> Copying my response from Github: >>> >>> The only place change is referenced in the Framework is in the metadata >>> of DateChooser: >>> [Event(name="change", type="org.apache.royale.events.Event")] >>> >>> That could easily be changed to: >>> [Event(name="selectedDateChanged", >>>type="org.apache.royale.events.Event")] >>> >>> The current metadata is actually incorrect, because the event type is >>> org.apache.royale.events.BrowserEvent >>> >>> Harbs >>> >>>> On Nov 1, 2017, at 1:29 AM, Piotr Zarzycki <[email protected]> >>>> wrote: >>>> >>>> You can remove it if it is not fired it up for some other cases in >>>> DateChooser. >>>> >>>> Piotr >>>> >>>> 2017-11-01 0:23 GMT+01:00 Harbs <[email protected]>: >>>> >>>>> My comment in the commit message needs discussion. >>>>> >>>>> I think the change event should be removed. What do others think? >>>>> >>>>> Harbs >>>>> >>>>>> On Nov 1, 2017, at 1:14 AM, [email protected] wrote: >>>>>> >>>>>> This is an automated email from the ASF dual-hosted git repository. >>>>>> >>>>>> harbs pushed a commit to branch develop >>>>>> in repository >>>>>> >>>>>>https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgitb >>>>>>ox >>>>>><https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgit >>>>>>box> >>>>>> .apache.org >>>>>><https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fapac >>>>>>he.org%2F&data=02%7C01%7C%7C817a277357384d327b7208d520fb6902%7Cfa7b1b >>>>>>5a7b34438794aed2c178decee1%7C0%7C0%7C636451186536265548&sdata=pG0prOt >>>>>>yP38hDAZWo9shrc%2F%2FIIveXWBR5LJkOS4NfH4%3D&reserved=0>%2Frepos%2Fasf >>>>>>%2Froyale-asjs.git&data=02%7C01%7C%7C0ff258657 >>>>>> >>>>>>48242cefbda08d520b77849%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C >>>>>>63 >>>>>> >>>>>>6450894728223920&sdata=p24zgDJLDKLtwvp1n8FWLd5kjtBxlwryG5q3GB9DSTg%3D >>>>>>&r >>>>>> eserved=0 >>>>>> >>>>>> >>>>>> The following commit(s) were added to refs/heads/develop by this >>>>>>push: >>>>>> new 2072541 Fixes #24 >>>>>> 2072541 is described below >>>>>> >>>>>> commit 2072541f1f9da5ed1780d497a6ec5fab52674b91 >>>>>> Author: Harbs <[email protected] <mailto:[email protected]>> >>>>>> AuthorDate: Wed Nov 1 01:14:29 2017 +0200 >>>>>> >>>>>> Fixes #24 >>>>>> >>>>>> I’m not sure why we’re dispatching both a “selctedDateChanged” >>>>>>event >>>>> and a “changed” event for the same action. It seems like we should >>>>> dispatch >>>>> one or the other. >>>>>> On the one hand, “change” is a standard name, so it’s easily >>>>> discoverable. On the other hand, “change” is one of the special >>>>>events >>>>> which become BrowserEvents when dispatched. >>>>>> I think the change event should be removed. >>>>>> --- >>>>>> .../org/apache/royale/html/beads/DateChooserView.as | 16 >>>>> ++++++++++++---- >>>>>> .../html/beads/controllers/DateChooserMouseController.as | 1 - >>>>>> 2 files changed, 12 insertions(+), 5 deletions(-) >>>>>> >>>>>> diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/ >>>>> royale/html/beads/DateChooserView.as b/frameworks/projects/Basic/ >>>>> src/main/royale/org/apache/royale/html/beads/DateChooserView.as >>>>>> index 2316f4a..17a5ef0 100644 >>>>>> --- a/frameworks/projects/Basic/src/main/royale/org/apache/ >>>>> royale/html/beads/DateChooserView.as >>>>>> +++ b/frameworks/projects/Basic/src/main/royale/org/apache/ >>>>> royale/html/beads/DateChooserView.as >>>>>> @@ -86,6 +86,13 @@ package org.apache.royale.html.beads >>>>>> private var daysContainer:DateChooserList; >>>>>> >>>>>> /** >>>>>> + * @royaleignorecoercion org.apache.royale.core.UIBase >>>>>> + */ >>>>>> + private function getHost():UIBase >>>>>> + { >>>>>> + return _strand as UIBase; >>>>>> + } >>>>>> + /** >>>>>> * The button that causes the previous month to be >>>>> displayed by the DateChooser. >>>>>> * >>>>>> * @langversion 3.0 >>>>>> @@ -171,7 +178,7 @@ package org.apache.royale.html.beads >>>>>> _nextMonthButton.style.flexGrow = 0; >>>>>> monthButtonsContainer. >>>>> addElement(_nextMonthButton); >>>>>> >>>>>> - >>>>>> UIBase(_strand).addElement(monthButtonsContainer, >>>>> false); >>>>>> + getHost().addElement(monthButtonsContainer, >>>>> false); >>>>>> >>>>>> // DAY NAMES >>>>>> >>>>>> @@ -188,7 +195,7 @@ package org.apache.royale.html.beads >>>>>> COMPILE::SWF { >>>>>> dayNamesContainer.percentWidth = 100; >>>>>> } >>>>>> - UIBase(_strand).addElement(dayNamesContainer, >>>>> false); >>>>>> + getHost().addElement(dayNamesContainer, >>>>>>false); >>>>>> >>>>>> // DAYS >>>>>> >>>>>> @@ -203,7 +210,7 @@ package org.apache.royale.html.beads >>>>>> COMPILE::SWF { >>>>>> daysContainer.percentWidth = 100; >>>>>> } >>>>>> - UIBase(_strand).addElement(daysContainer, >>>>>> false); >>>>>> + getHost().addElement(daysContainer, false); >>>>>> >>>>>> >>>>>> IEventDispatcher(daysContainer).dispatchEvent( >>>>> new Event("itemsCreated") ); >>>>>> @@ -233,7 +240,8 @@ package org.apache.royale.html.beads >>>>>> var index:Number = >>>>>>model.getIndexForSelectedDate( >>>>> ); >>>>>> daysContainer.selectedIndex = index; >>>>>> >>>>>> - IEventDispatcher(_strand).dispatchEvent(new >>>>> Event("selectedDateChanged")); >>>>>> + getHost().dispatchEvent(new >>>>> Event("selectedDateChanged")); >>>>>> + getHost().dispatchEvent( new Event("change") >>>>>>); >>>>>> } >>>>>> >>>>>> /** >>>>>> diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/ >>>>> royale/html/beads/controllers/DateChooserMouseController.as >>>>> b/frameworks/projects/Basic/src/main/royale/org/apache/ >>>>> royale/html/beads/controllers/DateChooserMouseController.as >>>>>> index d3ef05c..ccf3cbc 100644 >>>>>> --- a/frameworks/projects/Basic/src/main/royale/org/apache/ >>>>> royale/html/beads/controllers/DateChooserMouseController.as >>>>>> +++ b/frameworks/projects/Basic/src/main/royale/org/apache/ >>>>> royale/html/beads/controllers/DateChooserMouseController.as >>>>>> @@ -81,7 +81,6 @@ package org.apache.royale.html.beads.controllers >>>>>> var list:DateChooserList = event.target as >>>>>>DateChooserList; >>>>>> var model:DateChooserModel = >>>>>> _strand.getBeadByType(IBeadModel) >>>>> as DateChooserModel; >>>>>> model.selectedDate = list.selectedItem as Date; >>>>>> - IEventDispatcher(_strand).dispatchEvent( new >>>>> Event("change") ); >>>>>> } >>>>>> >>>>>> /** >>>>>> >>>>>> -- >>>>>> To stop receiving notification emails like this one, please contact >>>>>> ['"[email protected] <mailto:[email protected]>" >>>>>><[email protected] <mailto:[email protected]>>']. >>>>> >>>>> >>>> >>>> >>>> -- >>>> >>>> Piotr Zarzycki >>>> >>>> mobile: +48 880 859 557 >>>> skype: zarzycki10 >>>> >>>> LinkedIn: >>>> >>>>https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.lin >>>>ke >>>><https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.li >>>>nke> >>>> din.com >>>><https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fdin.co >>>>m%2F&data=02%7C01%7C%7C817a277357384d327b7208d520fb6902%7Cfa7b1b5a7b344 >>>>38794aed2c178decee1%7C0%7C0%7C636451186536265548&sdata=8Vthp0Wrfb%2BeVT >>>>yudUKEmQx2gD0ojbKiMDeh0omHxOw%3D&reserved=0>%2Fpiotrzarzycki&data=02%7C >>>>01%7C%7C0ff25865748242cefbda08d520b7784 >>>> >>>>9%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636450894728223920&sdata >>>>=i >>>> yKjF6QyvtOVxAZM%2FgiPbBT7jgVPIqjLvaCw9%2BTJbrY%3D&reserved=0 >>>> >>>> >>>><https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fpl.li >>>>nk >>>><https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fpl.li >>>>nk> >>>> edin.com >>>><https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fedin.c >>>>om%2F&data=02%7C01%7C%7C817a277357384d327b7208d520fb6902%7Cfa7b1b5a7b34 >>>>438794aed2c178decee1%7C0%7C0%7C636451186536265548&sdata=xs3%2Biiq2xAXFa >>>>jZear3dLmRjmEwQ8H2WBLfFh08AFKU%3D&reserved=0>%2Fin%2Fpiotr-zarzycki-92a >>>>53552&data=02%7C01%7C%7C0ff25865748242c >>>> >>>>efbda08d520b77849%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C63645089 >>>>47 >>>> >>>>28223920&sdata=4Y%2BsJt5LmIUcCfs31OWhHaJTbP5FtqewhVcqGqnbotM%3D&reserve >>>>d= >>>> 0> >>>> >>>> GitHub: >>>> >>>>https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub >>>>.c >>>><https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithu >>>>b.c> >>>> >>>>om%2Fpiotrzarzycki21&data=02%7C01%7C%7C0ff25865748242cefbda08d520b77849 >>>>%7 >>>> >>>>Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636450894728223920&sdata=WZ >>>>tw >>>> vlQJnZK4rHRMSEnTG5iTKvR7rZZHa8qHn4fdgk0%3D&reserved=0 >
