Hi,
I tried to remove (commit d8ae342bb12e1006caed480dba7e3d91bab589da) and
seems all ok since is managed in the beads.
If is wrong feel free to revert
thanks

El vie., 21 feb. 2020 a las 12:11, Carlos Rovira (<carlosrov...@apache.org>)
escribió:

> Hi Alex,
> thanks for the changes all have more sense that way now.
> One question about Jewel ListItemRenderer.as
> in line 56
> addClass("selectable");
> that should remain?
> I guess it must be removed (like in "NavigationLinkItemRenderer" and "
> TabBarButtonItemRenderer"
> right?
>
> El jue., 20 feb. 2020 a las 23:03, Alex Harui (<aha...@adobe.com.invalid>)
> escribió:
>
>> I pushed changes that I think has everything working in Jewel by using
>> the same "has" pattern that is used in other component sets.
>>
>> The Lists in the ToDo examples use a regular ItemRendererClassFactory
>> instead of SelectableItemRendererClassFactory that is now used in most
>> other places (List/DataGrid/Table)
>>
>> The recommended pattern for disabling selection in a list is whether you
>> choose a ClassFactory that attaches a Selection Bead to each renderer.
>> There was an exception to that rule in one of the Table examples because it
>> wanted only certain renderers to not have selection.  I added a bead that
>> turns off the selection for that case.  IMO, how to deal with such an
>> exception will be based more on what percentage of the renderers need
>> selection.  If most do, then add a Selection Bead to all renderers but
>> disable selection where you don't want it.  If most do not want selection,
>> then add the bead where you need it.
>>
>> Thanks,
>> -Alex
>>
>> On 2/20/20, 11:28 AM, "Carlos Rovira" <carlosrov...@apache.org> wrote:
>>
>>     yes, Jewel has the "structure" and is organized in SASS files, then
>>     JewelTheme has the "styling" part and is as well SASS.
>>     so Jewel should not need to change, and people should only need to
>> change
>>     JewelTheme or create a new theme one using it as a template.
>>
>>     I'll add examples to ant tomorrow
>>
>>     thanks
>>
>>
>>     El jue., 20 feb. 2020 a las 20:17, Alex Harui
>> (<aha...@adobe.com.invalid>)
>>     escribió:
>>
>>     >
>>     >
>>     > On 2/20/20, 11:04 AM, "Carlos Rovira" <carlosrov...@apache.org>
>> wrote:
>>     >
>>     >     forgot to say. Can you add missing examples to ANT? don't know
>> where
>>     > to do
>>     >     that
>>     >     and checking Jewel don't see the use of
>>     > SelectableItemRendererClassFactory.
>>     >     all times ItemRendererClassFactory is used
>>     >
>>     > I could fix the Ant side, but I don't have time.  It think all you
>> need to
>>     > do is add it to the examples/build.xml
>>     >
>>     > I didn't use SelectableItemRendererClassFactory in Jewel because I
>> wasn't
>>     > sure if the selection was supposed to be changeable at runtime.  I
>> think
>>     > you've confirmed that it isn't so we can change to use
>>     > SelectableItemRendererClassFactory
>>     >
>>     > I knew the themes were generated by SASS, but I didn't realize the
>> Jewel
>>     > one was as well.
>>     >
>>     > -Alex
>>     >
>>     >     El jue., 20 feb. 2020 a las 20:00, Carlos Rovira (<
>>     > carlosrov...@apache.org>)
>>     >     escribió:
>>     >
>>     >     > Hi Alex,
>>     >     >
>>     >     > remember that Jewel uses SASS to create the CSS. I already
>> pushed a
>>     > commit
>>     >     > with ["warning"]. It's not the first time I warn about it ;)
>>     >     > You must to change SASS file. The css is just generated (like
>> other
>>     >     > generations in compiler), and is committed since no body
>> added SASS
>>     > to ANT.
>>     >     > Maven has a sass plugin to compile SASS.
>>     >     >
>>     >     > I saw you response and commented there
>>     >     >
>>     >     > Thanks
>>     >     >
>>     >     > Carlos
>>     >     >
>>     >     >
>>     >     > El jue., 20 feb. 2020 a las 19:55, Alex Harui
>>     > (<aha...@adobe.com.invalid>)
>>     >     > escribió:
>>     >     >
>>     >     >> I replied on this topic on your commit email.
>>     >     >>
>>     >     >> So I don't have to copy that into this thread, read what I
>> said in
>>     > that
>>     >     >> email and reply on that thread and let's figure out the
>> right thing
>>     > to do.
>>     >     >> I am having some weird problem with my Maven build where
>> every time
>>     > I try
>>     >     >> to change Jewel's defaults.css something overwrites it.  I'm
>> trying
>>     > to
>>     >     >> figure out what is going on there.
>>     >     >>
>>     >     >> -Alex
>>     >     >>
>>     >     >> On 2/20/20, 10:47 AM, "Carlos Rovira" <
>> carlosrov...@apache.org>
>>     > wrote:
>>     >     >>
>>     >     >>     Hi Alex,
>>     >     >>
>>     >     >>     I found that TodoMVC examples was not working, so I
>> fixed it
>>     > removing
>>     >     >> the
>>     >     >>     non existing properties (hoverable and selectable).
>>     >     >>     But I found Jewel ListItemRenderer has all baked, so I
>> created a
>>     >     >>     SimpleListItemRenderer (in Jewel Simple in the normal
>> prefix
>>     > for a
>>     >     >> "base",
>>     >     >>     "basic" or "simple" option) that hast the minimum
>> required.
>>     >     >>
>>     >     >>     So at least in Jewel if people wants hoverable and
>> selectable
>>     >     >> renderers use
>>     >     >>     the normal ListItemRenderer.
>>     >     >>     If don't want that indicators, use
>> SimpleListItemRenderer. If
>>     > you
>>     >     >> want just
>>     >     >>     show hover, but not selected state, then extend Simple
>> version
>>     > and
>>     >     >> add "
>>     >     >>     ClassSelectorListRuntimeSelectableItemRendererBead" and
>>     > configure to
>>     >     >> have
>>     >     >>     just "hoverable" to true ¿ok?
>>     >     >>
>>     >     >>     Hope I understand ok how it works. Let me know if
>> something is
>>     > not as
>>     >     >>     expected.
>>     >     >>
>>     >     >>     Thanks
>>     >     >>
>>     >     >>     Carlos
>>     >     >>
>>     >     >>
>>     >     >>
>>     >     >>     El jue., 20 feb. 2020 a las 18:06, Alex Harui
>>     >     >> (<aha...@adobe.com.invalid>)
>>     >     >>     escribió:
>>     >     >>
>>     >     >>     > I'm not sure I understand what you mean by "control".
>>     >     >>     >
>>     >     >>     > Before the "has" changes, every ItemRenderer contained
>> or
>>     > inherited
>>     >     >> code
>>     >     >>     > that had hovered/selected APIs that drew visuals, and
>> the
>>     >     >> ItemRenderer also
>>     >     >>     > "had" a bead like ItemRendererMouseController that set
>> the
>>     > hovered
>>     >     >> property
>>     >     >>     > on that item renderer, and the List's controller would
>> set the
>>     >     >> selected
>>     >     >>     > property.
>>     >     >>     >
>>     >     >>     > Now, every ItemRenderer "has" a bead that has the
>>     > hovered/selected
>>     >     >>     > properties, and the ItemRendererMouseController and the
>>     > Lists's
>>     >     >> controllers
>>     >     >>     > get that bead instead of talking to the ItemRenderer
>>     > directly.  I
>>     >     >> guess
>>     >     >>     > that's the new way of thinking for has/composition vs
>>     >     >> is/inheritance:  a
>>     >     >>     > component doesn't have to have all of its APIs glued
>> to its
>>     > API
>>     >     >> surface.
>>     >     >>     > We mainly do that for convenience in MXML, but for more
>>     > internal
>>     >     >> stuff like
>>     >     >>     > this, loose-coupling via has/composition shared more
>> code and
>>     >     >> increases
>>     >     >>     > configurability, but does add some runtime overhead in
>> its
>>     > raw form.
>>     >     >>     > Hopefully we can optimize that away.
>>     >     >>     >
>>     >     >>     > HTH,
>>     >     >>     > -Alex
>>     >     >>     >
>>     >     >>     > On 2/20/20, 5:01 AM, "Piotr Zarzycki" <
>>     > piotrzarzyck...@gmail.com>
>>     >     >> wrote:
>>     >     >>     >
>>     >     >>     >     Hi Alex,
>>     >     >>     >
>>     >     >>     >     Could you provide an example how would I control
>>     >     >> hovering/selecting in
>>     >     >>     > item
>>     >     >>     >     renderer when I don't have build in hover property
>> etc. ?
>>     > How
>>     >     >> should I
>>     >     >>     >     compose such item renderer ?
>>     >     >>     >
>>     >     >>     >     Thanks,
>>     >     >>     >     Piotr
>>     >     >>     >
>>     >     >>     >     czw., 20 lut 2020 o 03:20 Alex Harui
>>     > <aha...@adobe.com.invalid>
>>     >     >>     > napisał(a):
>>     >     >>     >
>>     >     >>     >     > I pushed the "has" changes.  TourDeJewel seems
>> to be
>>     > working
>>     >     >>     > correctly for
>>     >     >>     >     > me.
>>     >     >>     >     >
>>     >     >>     >     > The principle of "has" is similar to inheritance
>> vs
>>     >     >> composition.
>>     >     >>     > Just
>>     >     >>     >     > like top-level components like List are composed
>> of many
>>     >     >> beads, the
>>     >     >>     > item
>>     >     >>     >     > renderers are now composed of more beads as
>> well.  That
>>     >     >> reduces the
>>     >     >>     >     > requirement to add code to a class in order to
>> "be/is"
>>     >     >> something.
>>     >     >>     >     >
>>     >     >>     >     > There used to be copies of code that drew hover
>> and
>>     > selected
>>     >     >> states
>>     >     >>     > on
>>     >     >>     >     > the item renderers in each new kind of item
>> renderer
>>     > that
>>     >     >> couldn't
>>     >     >>     > inherit
>>     >     >>     >     > from an item renderer that could draw selected
>> and
>>     > hovered
>>     >     >> states.
>>     >     >>     > Now,
>>     >     >>     >     > the itemrenderers compose their selection
>> visuals.   A
>>     > single
>>     >     >> item
>>     >     >>     > renderer
>>     >     >>     >     > like StringItemRenderer can be composed with no
>>     > selection
>>     >     >> drawing at
>>     >     >>     > all,
>>     >     >>     >     > or with solid color selection drawing or with
>> alternate
>>     > color
>>     >     >>     > selection
>>     >     >>     >     > drawing or something new.    And that means that
>> some
>>     > new
>>     >     >> kind of
>>     >     >>     > item
>>     >     >>     >     > renderer, like a TextInput can become an item
>> renderer
>>     > more
>>     >     >> easily,
>>     >     >>     > by
>>     >     >>     >     > composing a selection visuals bead instead of
>> having to
>>     > add
>>     >     >> all of
>>     >     >>     > that
>>     >     >>     >     > code.
>>     >     >>     >     >
>>     >     >>     >     > Another place I started using "has" but didn't
>> fully
>>     > replace
>>     >     >> the old
>>     >     >>     > code
>>     >     >>     >     > was in handling itemRendererParent, which is now
>> called
>>     >     >>     >     > itemRendererOwnerView (to try to make it more
>> clear
>>     > that isn't
>>     >     >>     > always the
>>     >     >>     >     > parent of the item renderer and is sometimes an
>> internal
>>     >     >>     >     > datagroup/container).  Turns out a lot of our
>> renderers
>>     >     >> didn't need
>>     >     >>     > to know
>>     >     >>     >     > the itemRendererParent, so in many cases we no
>> longer
>>     > figure
>>     >     >> it out
>>     >     >>     > and
>>     >     >>     >     > assign it.  But in cases where it is needed, the
>>     > property is
>>     >     >>     > currently left
>>     >     >>     >     > baked into the renderer, but in some new cases,
>> it is
>>     >     >> composed.  An
>>     >     >>     >     > ItemRendererOwnerViewBead is added to the strand
>>     > instead of
>>     >     >> added to
>>     >     >>     > a
>>     >     >>     >     > class and contains the reference to the
>> ownerView.
>>     >  Maybe
>>     >     >> someday
>>     >     >>     > we'll
>>     >     >>     >     > fully remove the old pattern, not sure.
>>     >     >>     >     >
>>     >     >>     >     > Ideally we would do more "has" than "is".  It
>> could
>>     > allow us
>>     >     >> to
>>     >     >>     > eliminate
>>     >     >>     >     > much of the required code to be a top tag in an
>> MXML
>>     > document.
>>     >     >>     >     >
>>     >     >>     >     > Other changes in this branch were to add
>> "Initializers"
>>     > so the
>>     >     >>     >     > RendererFactories didn't bake in code for
>> specific item
>>     >     >> renderers,
>>     >     >>     > and to
>>     >     >>     >     > create a few base classes with overrides so
>> there is
>>     > less
>>     >     >> code to
>>     >     >>     > maintain.
>>     >     >>     >     >
>>     >     >>     >     > There should be little if any impact to
>> application
>>     > code.  It
>>     >     >> should
>>     >     >>     >     > mainly affect the internals of how item
>> renderer-based
>>     > things
>>     >     >> are
>>     >     >>     > created.
>>     >     >>     >     >
>>     >     >>     >     > Thanks,
>>     >     >>     >     > -Alex
>>     >     >>     >     >
>>     >     >>     >     > On 2/17/20, 4:33 PM, "Carlos Rovira" <
>>     > carlosrov...@apache.org
>>     >     >> >
>>     >     >>     > wrote:
>>     >     >>     >     >
>>     >     >>     >     >     Hi Alex,
>>     >     >>     >     >
>>     >     >>     >     >     if will be of help if you point us to
>> different
>>     > links
>>     >     >> where we
>>     >     >>     > can
>>     >     >>     >     > learn
>>     >     >>     >     >     about this modifications, since I at least
>> can just
>>     >     >> imagine what
>>     >     >>     > is all
>>     >     >>     >     >     about, but will need to get deeper in the
>> concepts
>>     > to
>>     >     >> understand
>>     >     >>     > the
>>     >     >>     >     >     changes and to apply this patterns.
>>     >     >>     >     >
>>     >     >>     >     >     In Jewel each "list component has its own
>> type of
>>     >     >> renderer, so
>>     >     >>     > for
>>     >     >>     >     > example
>>     >     >>     >     >     List uses ListItemRenderer and DataGrid has
>>     >     >>     > DataGridItemRenderer, since
>>     >     >>     >     >     usually at that component level the user
>> needs
>>     > similar
>>     >     >>     > infrastructure
>>     >     >>     >     > like
>>     >     >>     >     >     hoverable, selectable...and some (not much)
>> more,
>>     > don't
>>     >     >> know
>>     >     >>     > right now
>>     >     >>     >     > how
>>     >     >>     >     >     all this will fit with the "has" new
>>     > pattern....I'll try
>>     >     >> it.
>>     >     >>     >     >
>>     >     >>     >     >     Just one important thing. There's actual
>> users and
>>     >     >> clients using
>>     >     >>     > Jewel
>>     >     >>     >     > and
>>     >     >>     >     >     other UI sets and are with very short times
>> for
>>     > their
>>     >     >>     > migrations, so
>>     >     >>     >     > just
>>     >     >>     >     >     want to ask you to test as much as possible,
>> since
>>     > TDJ
>>     >     >> has many
>>     >     >>     >     > examples
>>     >     >>     >     >     now. Other thing you can test is new TodoMVC
>> to see
>>     > how it
>>     >     >>     > behaves,
>>     >     >>     >     > since
>>     >     >>     >     >     it uses a List with IRs. So we can ensure
>> (as much
>>     > as we
>>     >     >> can)
>>     >     >>     > the merge
>>     >     >>     >     >     left things working (as much as we can)
>>     >     >>     >     >
>>     >     >>     >     >     Thanks for working on this, will try all of
>> this
>>     > tomorrow
>>     >     >>     >     >
>>     >     >>     >     >     Carlos
>>     >     >>     >     >
>>     >     >>     >     >
>>     >     >>     >     >
>>     >     >>     >     >
>>     >     >>     >     >     El lun., 17 feb. 2020 a las 22:35, Alex Harui
>>     >     >>     >     > (<aha...@adobe.com.invalid>)
>>     >     >>     >     >     escribió:
>>     >     >>     >     >
>>     >     >>     >     >     > I've pushed the "has" branch that contains
>> a
>>     >     >> refactoring of
>>     >     >>     > the item
>>     >     >>     >     >     > renderers.  Tour De Jewel and MDL Example
>> seem to
>>     > be
>>     >     >> working
>>     >     >>     > as is
>>     >     >>     >     > Basic
>>     >     >>     >     >     > List Example and MX AdvancedDataGrid.
>>     >     >>     >     >     >
>>     >     >>     >     >     > "has" is really just calls to
>> getBeadByType.  If
>>     > we
>>     >     >> start to
>>     >     >>     > see
>>     >     >>     >     >     > performance issues, then we'll look into
>>     > optimizing.
>>     >     >> The
>>     >     >>     > motivation
>>     >     >>     >     > to
>>     >     >>     >     >     > switch to "has" came from several bugs
>> about
>>     > using MX
>>     >     >>     > Label/CheckBox
>>     >     >>     >     > as
>>     >     >>     >     >     > item renderers.  In Royale, the
>> ItemRenderers
>>     > were in
>>     >     >> control
>>     >     >>     > of the
>>     >     >>     >     >     > visuals of their rollover and selected
>> state.
>>     > That is
>>     >     >> a more
>>     >     >>     > proper
>>     >     >>     >     >     > encapsulation than the way it was in Flex
>> where
>>     > the
>>     >     >> lists drew
>>     >     >>     > the
>>     >     >>     >     > rollover
>>     >     >>     >     >     > and selected states and it was hard to
>> override
>>     > the
>>     >     >> visuals
>>     >     >>     > for a
>>     >     >>     >     > custom
>>     >     >>     >     >     > item renderer.  But in the develop branch
>> Royale
>>     > code,
>>     >     >> it would
>>     >     >>     >     > require
>>     >     >>     >     >     > that custom itemrenderers implement a lot
>> of APIs
>>     >     >> related to
>>     >     >>     >     > rollover and
>>     >     >>     >     >     > selected visuals.  Instead we can now
>> reuse/share
>>     > code
>>     >     >> for
>>     >     >>     > visuals
>>     >     >>     >     > between
>>     >     >>     >     >     > different renderers because a renderer now
>> can
>>     > "has" a
>>     >     >>     >     > rollover/selection
>>     >     >>     >     >     > implementation instead of being one.
>>     >     >>     >     >     >
>>     >     >>     >     >     > There are more pieces involved, but there
>> is more
>>     >     >> sharing of
>>     >     >>     > code.
>>     >     >>     >     > Along
>>     >     >>     >     >     > the way I found that there were some
>> not-so-PAYG
>>     >     >> patterns
>>     >     >>     > being used
>>     >     >>     >     > in MDL
>>     >     >>     >     >     > and Jewel renderers that might deserve
>> further
>>     >     >> modification.
>>     >     >>     > There
>>     >     >>     >     > are
>>     >     >>     >     >     > "hoverable" and "selectable" APIs that
>> appear to
>>     > be
>>     >     >> used to
>>     >     >>     >     > permanently
>>     >     >>     >     >     > turn off selection and hover visuals.  In
>>     > general, I
>>     >     >> think
>>     >     >>     > there is
>>     >     >>     >     > better
>>     >     >>     >     >     > use of PAYG and composition when
>> functionality is
>>     >     >> "built up"
>>     >     >>     > and not
>>     >     >>     >     >     > "turned off", so with the "has" pattern the
>>     > renderers
>>     >     >> can be
>>     >     >>     > added
>>     >     >>     >     > to a
>>     >     >>     >     >     > list without any selection visuals at all
>> (for a
>>     >     >> non-selectable
>>     >     >>     >     > list) or
>>     >     >>     >     >     > re-composed with custom visuals that only
>> support
>>     >     >> hoverable,
>>     >     >>     > for
>>     >     >>     >     > example.
>>     >     >>     >     >     > I left it "hoverable/selectable" in the API
>>     > surface for
>>     >     >> now,
>>     >     >>     > but
>>     >     >>     >     > something
>>     >     >>     >     >     > to think about going forward.
>>     >     >>     >     >     >
>>     >     >>     >     >     > I’m going to run a few more tests before
>> merging
>>     > and
>>     >     >> pushing to
>>     >     >>     >     > develop.
>>     >     >>     >     >     >
>>     >     >>     >     >     > -Alex
>>     >     >>     >     >     >
>>     >     >>     >     >     > On 1/15/20, 10:44 PM, "Alex Harui"
>>     >     >> <aha...@adobe.com.INVALID>
>>     >     >>     > wrote:
>>     >     >>     >     >     >
>>     >     >>     >     >     >     You are welcome to try and see how
>> many cache
>>     > hits
>>     >     >> it
>>     >     >>     > gets.  I
>>     >     >>     >     > think
>>     >     >>     >     >     > in renderers, we ask once per renderer.
>> I'm not
>>     > sure
>>     >     >> there is
>>     >     >>     > a
>>     >     >>     >     > faster way
>>     >     >>     >     >     > to do the first lookup of "is", but for
>> "has" we
>>     > could
>>     >     >> change
>>     >     >>     > the
>>     >     >>     >     > lookup
>>     >     >>     >     >     > and save time.
>>     >     >>     >     >     >
>>     >     >>     >     >     >     On 1/15/20, 10:38 PM, "Greg Dove" <
>>     >     >> greg.d...@gmail.com>
>>     >     >>     > wrote:
>>     >     >>     >     >     >
>>     >     >>     >     >     >         For the  'something is
>> ISomeInterface'
>>     >     >>     >     >     >         I had wondered in the past if
>> these types
>>     > of
>>     >     >> lookups
>>     >     >>     > could be
>>     >     >>     >     >     > incrementally
>>     >     >>     >     >     >         cached on the 'is' target (after
>> first
>>     > lookup),
>>     >     >> that
>>     >     >>     > might
>>     >     >>     >     > make
>>     >     >>     >     >     > sense for
>>     >     >>     >     >     >         interfaces, which are the deepest
>> checks I
>>     >     >> think?
>>     >     >>     >     >     >         caching result (could optionally
>> create
>>     > the Map)
>>     >     >>     >     >     >
>>     >     >>  ISomeInterface['implMap'].set(something.constructor,
>>     >     >>     >     > isResult )
>>     >     >>     >     >     >
>>     >     >>     >     >     >         then earlier in the interface
>> checks, it
>>     > could
>>     >     >> do
>>     >     >>     > something
>>     >     >>     >     > like:
>>     >     >>     >     >     >          if (ISomeInterface['implMap']  &&
>>     >     >>     >     >     >
>>     >     >>  ISomeInterface['implMap'].has(something.constructor) )
>>     >     >>     > return
>>     >     >>     >     >     >
>>     >     >>  ISomeInterface['implMap'].get(something.constructor)
>>     >     >>     >     >     >
>>     >     >>     >     >     >         I realize its extra code, but it
>> should be
>>     >     >> quite a bit
>>     >     >>     >     > faster over
>>     >     >>     >     >     > time I
>>     >     >>     >     >     >         think.
>>     >     >>     >     >     >
>>     >     >>     >     >     >         On Thu, Jan 16, 2020 at 7:20 PM
>> Alex Harui
>>     >     >>     >     >     > <aha...@adobe.com.invalid> wrote:
>>     >     >>     >     >     >
>>     >     >>     >     >     >         > Hi,
>>     >     >>     >     >     >         >
>>     >     >>     >     >     >         > Several different threads have
>> brought
>>     > up
>>     >     >> issues with
>>     >     >>     >     > sharing
>>     >     >>     >     >     > code between
>>     >     >>     >     >     >         > component sets.  Other threads
>> have
>>     > offered
>>     >     >>     > different and
>>     >     >>     >     > clever
>>     >     >>     >     >     > ways to
>>     >     >>     >     >     >         > do various things like how MXML
>> is
>>     > applied to
>>     >     >> a
>>     >     >>     > component.
>>     >     >>     >     >     > Meanwhile, over
>>     >     >>     >     >     >         > in MX emulation, I was starting
>> to copy
>>     > some
>>     >     >> code
>>     >     >>     > from
>>     >     >>     >     > Basic to
>>     >     >>     >     >     > MXRoyale to
>>     >     >>     >     >     >         > get the various MX components to
>> be
>>     > valid item
>>     >     >>     > renderers.
>>     >     >>     >     >     > MXRoyale is
>>     >     >>     >     >     >         > using Basic's item renderer
>> architecture
>>     >     >> which is
>>     >     >>     > better
>>     >     >>     >     >     > encapsulated:  the
>>     >     >>     >     >     >         > renderer draws its hovered and
>> selected
>>     >     >> state.  In
>>     >     >>     > Flex,
>>     >     >>     >     > the
>>     >     >>     >     >     > List draws
>>     >     >>     >     >     >         > over the renderer, which makes
>> it hard
>>     > to
>>     >     >> customize
>>     >     >>     > the
>>     >     >>     >     > way the
>>     >     >>     >     >     > renderer
>>     >     >>     >     >     >         > will look when hovered and
>> selected.
>>     >     >>     >     >     >         >
>>     >     >>     >     >     >         > It finally occurred to me that
>> one of
>>     > the
>>     >     >> reasons we
>>     >     >>     > end up
>>     >     >>     >     >     > copying code
>>     >     >>     >     >     >         > is because we are still using
>> too many
>>     > "is"
>>     >     >> checks
>>     >     >>     > instead
>>     >     >>     >     > of
>>     >     >>     >     >     > "has"
>>     >     >>     >     >     >         > checks.  I'm not even sure we
>> have any
>>     > "has"
>>     >     >> checks
>>     >     >>     > in the
>>     >     >>     >     > Royale
>>     >     >>     >     >     >         > framework.  I was afraid of the
>>     > overhead of a
>>     >     >> "has"
>>     >     >>     > check,
>>     >     >>     >     > but
>>     >     >>     >     >     > I'm starting
>>     >     >>     >     >     >         > to change my mind because:
>>     >     >>     >     >     >         >
>>     >     >>     >     >     >         > 1) The "is" check actually runs
>> a fair
>>     > amount
>>     >     >> of
>>     >     >>     > code,
>>     >     >>     >     >     > especially for
>>     >     >>     >     >     >         > (comp is ISomeInterface)
>>     >     >>     >     >     >         > 2) The length of bead arrays
>> don't seem
>>     > too
>>     >     >> long.
>>     >     >>     >     >     >         >
>>     >     >>     >     >     >         > A "has" check calls
>>     >     >> getBeadByType(ISomeInterface),
>>     >     >>     > so it
>>     >     >>     >     >     > actually will run
>>     >     >>     >     >     >         > the (bead is ISomeInterface) on
>>     > potentially
>>     >     >> the
>>     >     >>     > entire
>>     >     >>     >     > strand
>>     >     >>     >     >     > array/vector,
>>     >     >>     >     >     >         > although we could speed that up
>> by
>>     > annotating
>>     >     >> beads
>>     >     >>     > or
>>     >     >>     >     > keeping
>>     >     >>     >     >     > track of
>>     >     >>     >     >     >         > what is on the strand.  But the
>> code
>>     >     >> sharing/reuse
>>     >     >>     >     > potential of
>>     >     >>     >     >     > this
>>     >     >>     >     >     >         > pattern seems significant to me.
>>     >     >>     >     >     >         >
>>     >     >>     >     >     >         > For example, it could change how
>> hard
>>     > it is
>>     >     >> to make a
>>     >     >>     >     > component
>>     >     >>     >     >     > usable as
>>     >     >>     >     >     >         > a top tag in MXML.  Instead of
>> the
>>     > component
>>     >     >> having
>>     >     >>     > to
>>     >     >>     >     > implement
>>     >     >>     >     >     > certain
>>     >     >>     >     >     >         > methods, the component could
>> have a bead
>>     >     >> installed
>>     >     >>     > and the
>>     >     >>     >     >     >         > MXMLDataInterpreter could talk
>> to that
>>     > bead
>>     >     >> instead
>>     >     >>     > of the
>>     >     >>     >     >     > component.
>>     >     >>     >     >     >         >
>>     >     >>     >     >     >         > In the case of the item
>> renderers,
>>     > instead of
>>     >     >>     > testing if
>>     >     >>     >     > the
>>     >     >>     >     >     > renderer "is"
>>     >     >>     >     >     >         > ISelectableLIstItemRenderer, it
>> could
>>     > ask if
>>     >     >> the
>>     >     >>     > created
>>     >     >>     >     > widget
>>     >     >>     >     >     > "has" an
>>     >     >>     >     >     >         > ISelectableLIstItemRenderer bead
>> and the
>>     >     >> logic in
>>     >     >>     > that
>>     >     >>     >     > bead can
>>     >     >>     >     >     > be reused
>>     >     >>     >     >     >         > in both Basic and MXRoyale
>> without being
>>     >     >> copied.
>>     >     >>     >     >     >         >
>>     >     >>     >     >     >         > Some code, like Container
>> overrides of
>>     >     >> addElement
>>     >     >>     > probably
>>     >     >>     >     > can't
>>     >     >>     >     >     > be
>>     >     >>     >     >     >         > refactored into a "has".  But I
>> wonder
>>     > how
>>     >     >> many other
>>     >     >>     >     > things
>>     >     >>     >     >     > could.  I'm
>>     >     >>     >     >     >         > not sure I would move everything
>> that
>>     > could
>>     >     >> be moved
>>     >     >>     > into a
>>     >     >>     >     >     > shared bead.
>>     >     >>     >     >     >         > We'd have to think about the
>> overhead
>>     > on small
>>     >     >>     > components
>>     >     >>     >     > and
>>     >     >>     >     >     > apps.  But
>>     >     >>     >     >     >         > for MXML support and Item
>> Renderer
>>     > support,
>>     >     >> it seems
>>     >     >>     > to
>>     >     >>     >     > make
>>     >     >>     >     >     > sense.
>>     >     >>     >     >     >         >
>>     >     >>     >     >     >         > Anyway, I will look into
>> refactoring
>>     > the item
>>     >     >>     > renderer
>>     >     >>     >     > code in
>>     >     >>     >     >     > a  few days
>>     >     >>     >     >     >         > unless feedback indicates
>> otherwise.
>>     > Bugs
>>     >     >> like #676
>>     >     >>     > and
>>     >     >>     >     > #681
>>     >     >>     >     >     > inspired this
>>     >     >>     >     >     >         > post.
>>     >     >>     >     >     >         >
>>     >     >>     >     >     >         > Of course, I could be wrong...
>>     >     >>     >     >     >         > -Alex
>>     >     >>     >     >     >         >
>>     >     >>     >     >     >         >
>>     >     >>     >     >     >
>>     >     >>     >     >     >
>>     >     >>     >     >     >
>>     >     >>     >     >     >
>>     >     >>     >     >     >
>>     >     >>     >     >
>>     >     >>     >     >     --
>>     >     >>     >     >     Carlos Rovira
>>     >     >>     >     >
>>     >     >>     >     >
>>     >     >>     >
>>     >     >>
>>     >
>> https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cc5187f5b4e28463bdb1b08d7b63b1ad4%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637178237288392599&amp;sdata=MegTTo0lt%2Fp1zKt6gaowEYo5a9XDkuM3SHQcCccUa2Y%3D&amp;reserved=0
>>     >     >>     >     >
>>     >     >>     >     >
>>     >     >>     >     >
>>     >     >>     >
>>     >     >>     >     --
>>     >     >>     >
>>     >     >>     >     Piotr Zarzycki
>>     >     >>     >
>>     >     >>     >     Patreon: *
>>     >     >>     >
>>     >     >>
>>     >
>> https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.patreon.com%2Fpiotrzarzycki&amp;data=02%7C01%7Caharui%40adobe.com%7Cc5187f5b4e28463bdb1b08d7b63b1ad4%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637178237288392599&amp;sdata=lM47VH2eMRha92QDljuklrrPWagubgNvaL6WurTBiwg%3D&amp;reserved=0
>>     >     >>     >     <
>>     >     >>     >
>>     >     >>
>>     >
>> https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.patreon.com%2Fpiotrzarzycki&amp;data=02%7C01%7Caharui%40adobe.com%7Cc5187f5b4e28463bdb1b08d7b63b1ad4%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637178237288392599&amp;sdata=lM47VH2eMRha92QDljuklrrPWagubgNvaL6WurTBiwg%3D&amp;reserved=0
>>     >     >>     > >*
>>     >     >>     >
>>     >     >>     >
>>     >     >>     >
>>     >     >>
>>     >     >>     --
>>     >     >>     Carlos Rovira
>>     >     >>
>>     >     >>
>>     >
>> https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cc5187f5b4e28463bdb1b08d7b63b1ad4%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637178237288392599&amp;sdata=MegTTo0lt%2Fp1zKt6gaowEYo5a9XDkuM3SHQcCccUa2Y%3D&amp;reserved=0
>>     >     >>
>>     >     >>
>>     >     >>
>>     >     >
>>     >     > --
>>     >     > Carlos Rovira
>>     >     >
>>     >
>> https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cc5187f5b4e28463bdb1b08d7b63b1ad4%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637178237288392599&amp;sdata=MegTTo0lt%2Fp1zKt6gaowEYo5a9XDkuM3SHQcCccUa2Y%3D&amp;reserved=0
>>     >     >
>>     >     >
>>     >
>>     >     --
>>     >     Carlos Rovira
>>     >
>>     >
>> https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cc5187f5b4e28463bdb1b08d7b63b1ad4%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637178237288392599&amp;sdata=MegTTo0lt%2Fp1zKt6gaowEYo5a9XDkuM3SHQcCccUa2Y%3D&amp;reserved=0
>>     >
>>     >
>>     >
>>
>>     --
>>     Carlos Rovira
>>
>> https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cc5187f5b4e28463bdb1b08d7b63b1ad4%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637178237288402599&amp;sdata=JcJWURIyUxG4bru0YjyB6xM%2FKPUEbNGfZ3zj%2FUB5jUU%3D&amp;reserved=0
>>
>>
>>
>
> --
> Carlos Rovira
> http://about.me/carlosrovira
>
>

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

Reply via email to