Hi, gang, and Happy New Year.

@Alex Harui <aha...@adobe.com> thank you for your thoughts and pointers. I
have an immediate question related to the ASDoc material: you say "I added
a few ASDoc tags like @toplevel and @viewbead to some of the ASDoc and
there is a cheap checkbox filter for it." No matter where I am in the ASDoc
project, if I check that checkbox I get a blank display with an unending
"Loading..." message. What is supposed to happen?

On Sat, Dec 29, 2018 at 12:34 PM Alex Harui <aha...@adobe.com.invalid>
wrote:

> Hi,
>
> Specifically, the "delete removeBead" change would consist of:
>
> 1) making the strand's array public
> 2) removing removeBead from IStrand and UIBase and HTMLElementWrapper (and
> other places)
> 3) adding an org.apache.royale.utils.removeBead function.
>
> Because, you are correct that someone is going to want to remove a bead at
> some point, but we shouldn't weigh down every app with "just-in-case" code
> and the API surface should discourage "un-recommended" practices.  It
> should be an extremely rare occurrence to remove a bead.
>
> On a related note, I checked the other day and HelloWorld is now over
> 80K.  It was once 29K.  That's how much "just-in-case" code we might have
> added.  At some point we need to go back and look at what was in the 51K of
> code we added and make sure it really has to be there.  Refactoring many of
> our utils classes into single-purpose functions may help.  Your latest
> change to UIUtils won't affect HelloWorld but will affect anyone else who
> uses UIUtils.  We need to break up UIUtils into separate functions so that
> convenience functions don't add weight to apps that don't use those
> functions.  Volunteers to make those changes are welcome.  In Flex,
> HelloWorld was 133K, we are dangerously approaching that number and we
> should hopefully not have to be even close to it if we are handling PAYG
> correctly.
>
> My 2 cents,
> -Alex
>
> On 12/29/18, 1:33 AM, "Carlos Rovira" <carlosrov...@apache.org> wrote:
>
>     Hi Alex,
>
>     very valuable info as always.
>
>     +1 to make "getBeadByType" return latest bead added and to keep
> removeBead
>     API as we have today.
>
>     I found that problem and although I understand your point and reasons
> on
>     what you explain, we must understand the reality that many few users
> will
>     be such advanced to know exactly that we want them to use Royale in
> that
>     concrete way, so some people will try to add beads of the same type,
> and I
>     think that we as a framework should be as flexible as possible to allow
>     this kind of things
>
>
>
>     El sáb., 29 dic. 2018 a las 8:55, Alex Harui (<aha...@adobe.com.invalid
> >)
>     escribió:
>
>     > Answers/Opinions inline
>     >
>     > On 12/28/18, 5:07 AM, "Andrew Wetmore" <cottag...@gmail.com> wrote:
>     >
>     >     Hi, all:
>     >
>     >     I am working on the user doc page for strands and beads [1].
> This is
>     >     intended for application developers using Royale; there is
> unfinished
>     >     material available for developers working on Royale itself in
> the wiki
>     > [2],
>     >     [3].
>     >
>     >     From the app developer point of view, I want to answer these
> questions:
>     >
>     >     1. There are three ways of adding beads to a component: baked in
> using
>     >     <js:beads>, through CSS, and dynamically using addBead(). Which
> method
>     > is
>     >     best to use for what purposes?
>     >
>     > CSS sets up loosely-coupled defaults.  Almost all (probably all)
> Royale
>     > components that are strands pick up default beads from CSS.  CSS
> allows
>     > setting default beads for one or more instances of a component in a
> single
>     > CSS Selector, just like CSS lets you set values on one or more
>     > HTMLElements.  But if our SWCs specify a certain bead as a default,
> and the
>     > app dev's CSS specifies a different one, it should be possible for
> certain
>     > CSS tools to optimize away the original default bead so it isn't
> linked
>     > into the output.
>     >
>     > <js:beads> is the MXML way of calling addBead().  It allows the
> developer
>     > to override the defaults bead from CSS for a single instance.  But
> now that
>     > bead is not loosely coupled, so if someone later subclasses the
> class that
>     > used js:beads or addBead, and specify a different bead, both the
> original
>     > and the new bead will be in the output.  It isn't that much
> different from
>     > specifying the "style" property on an HTMLElement in HTML.  Js:Beads
> and
>     > addBead overrides the underlying CSS.
>     >
>     >
>     >
>     >     1a. I can see from the wiki clear examples for two methods of
> adding
>     > beads.
>     >     Can someone point to an example using CSS to add a bead to a
> component?
>     >
>     > Almost every SWC has a defaults.css file in src/main/resources that
>     > specify the default beads.  Several examples have MXML files that
> override
>     > the defaults in CSS.  Search the mxml files for "ClassReference"
>     >
>     >
>     >     2. Is the order of beads on a strand significant?
>     >
>     > Yes.  That’s one reason I proposed "strands and beads" instead of
> "peas
>     > and porridge" or some other analogy.  In real life the physical
> beads you
>     > put on a strand totally change the look of the necklace or
> bracelet.  That
>     > can be the case here as well.  I don't think there are any examples
> where
>     > order causes a significant difference that doesn't result in a thrown
>     > exception from a null pointer, but if you don't specify order, you
> can get
>     > indeterminate results which we definitely don't want.  Others have
> pointed
>     > out the common issues (model first, then view, or making sure event
>     > listeners fire in the right order.  Sadly, I just looked and noted
> that
>     > getBeadByType is probably written incorrectly.  It should probably
> return
>     > the last bead added so you can override other beads if needed.
> Right now,
>     > first-in-wins. I'm not sure we want that.  But in theory, nobody
> should
>     > ever add more than one bead of the same type to the strand.  The
> ways of
>     > overriding the defaults should prevent the need for late overriding
> of
>     > beads.
>     >
>     >
>     >     3. How much should I worry about bead cleanup when a bead is no
> longer
>     >     actively used? I presume this would relate to dynamically-added
> beads,
>     > not
>     >     the <js:beads> or CSS ones.
>     >
>     > I've been tempted to delete the removeBead API.  Beads should never
> be
>     > removed.  We are compositing beads to form a component instead of
>     > subclassing base classes.  Both build up functionality and should
> never
>     > "delete" it.  It might mask or block "base-class" functionality, but
> you
>     > can't remove code from a base class, and theoretically, beads should
> never
>     > be removed either.
>     >
>     >
>     >     4. Where do I find the existing beads? Is there a curated list
> for each
>     >     release of Royale? How do I know which ones would be useful for
> a text
>     >     entry field, a list, a button?
>     >
>     > I added a few ASDoc tags like @toplevel and @viewbead to some of the
> ASDoc
>     > and there is a cheap checkbox filter for it.  More asdoc tags need
> to be
>     > added and you are encouraged to come up with other ASDoc tags and
>     > references to other components.  That's one reason why ASDoc is a
> Royale
>     > app, so we can add client-side logic to provide more sophisticated
>     > filtering someday that makes use of ASDoc tags.
>     >
>     > Thanks for working on it,
>     > -Alex
>     >
>     >
>     >     Thanks!
>     >
>     >     a
>     >
>     >
>     >     [1]
>     >
>     >
> https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fapache.github.io%2Froyale-docs%2FWelcome%2FFeatures%2FStrands%2520and%2520Beads.html&amp;data=02%7C01%7Caharui%40adobe.com%7C52c53b5cad9a49035fab08d66d70bf59%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636816728376783526&amp;sdata=cdtZg%2FciWcDo3%2FImhl%2B9gyswCKEub0jOInb2KlXK4r8%3D&amp;reserved=0
>     >     [2]
>     >
>     >
> https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fcwiki.apache.org%2Fconfluence%2Fpages%2Fviewpage.action%3FpageId%3D71013028&amp;data=02%7C01%7Caharui%40adobe.com%7C52c53b5cad9a49035fab08d66d70bf59%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636816728376783526&amp;sdata=AI2FjEZeWlRVXecTZ%2FZ8F7TeXIEZPAyVjlszlA6YmNg%3D&amp;reserved=0
>     >     [3]
>     >
> https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fcwiki.apache.org%2Fconfluence%2Fdisplay%2FFLEX%2FCreating%2BComponents&amp;data=02%7C01%7Caharui%40adobe.com%7C52c53b5cad9a49035fab08d66d70bf59%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636816728376783526&amp;sdata=SVuCT0wfYvQ%2F6vfZDV0pprDk8wpgjtnLRjIAw6MPkpM%3D&amp;reserved=0
>     >
>     >     --
>     >     Andrew Wetmore
>     >
>     >
>     >
> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fcottage14.blogspot.com%2F&amp;data=02%7C01%7Caharui%40adobe.com%7C52c53b5cad9a49035fab08d66d70bf59%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636816728376783526&amp;sdata=KVRtgQGcLFXBZY6M5WbxGwdiBbCHKPq5pYKyZ%2F4g2p4%3D&amp;reserved=0
>     >
>     >
>     >
>
>     --
>     Carlos Rovira
>
> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7C52c53b5cad9a49035fab08d66d70bf59%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636816728376783526&amp;sdata=U9HgYB6mBE5bDOOmNgjUlkUFd8X6%2FCKqQY%2FbKM0pMvo%3D&amp;reserved=0
>
>
>

-- 
Andrew Wetmore

http://cottage14.blogspot.com/

Reply via email to