On 2/20/20, 11:04 AM, "Carlos Rovira" <[email protected]> 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 (<[email protected]>)
    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 (<[email protected]>)
    > 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" <[email protected]> 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
    >> (<[email protected]>)
    >>     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" <[email protected]>
    >> 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 <[email protected]>
    >>     > 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" <[email protected]
    >> >
    >>     > 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
    >>     >     > (<[email protected]>)
    >>     >     >     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"
    >> <[email protected]>
    >>     > 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" <
    >> [email protected]>
    >>     > 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
    >>     >     >     > <[email protected]> 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%7C2d4cafb117044980e18d08d7b637bd39%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637178222827577893&amp;sdata=Ceo34WkrObnJO0jOyvF7y8SLeJMDQ36AosbwDOlosb4%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%7C2d4cafb117044980e18d08d7b637bd39%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637178222827577893&amp;sdata=GiQ6hMBA27oNI4zjcqNpgMTTIKCuiitizY8QwIQ48JI%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%7C2d4cafb117044980e18d08d7b637bd39%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637178222827577893&amp;sdata=GiQ6hMBA27oNI4zjcqNpgMTTIKCuiitizY8QwIQ48JI%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%7C2d4cafb117044980e18d08d7b637bd39%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637178222827577893&amp;sdata=Ceo34WkrObnJO0jOyvF7y8SLeJMDQ36AosbwDOlosb4%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%7C2d4cafb117044980e18d08d7b637bd39%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637178222827577893&amp;sdata=Ceo34WkrObnJO0jOyvF7y8SLeJMDQ36AosbwDOlosb4%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%7C2d4cafb117044980e18d08d7b637bd39%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637178222827577893&amp;sdata=Ceo34WkrObnJO0jOyvF7y8SLeJMDQ36AosbwDOlosb4%3D&amp;reserved=0
    

Reply via email to