Update: I've pushed the following changes:
Core package: added StyleChangeNotifier and StyleChange event. StyleChangeNotifier listens for ValueChangeEvents on its strand's style. I decided to park this in Core because it seems listening for style changes would be more universal than just HTML package. On the SWF side, the StyleChangeNotifier simply detects a change in the style and dispatches a new, StyleChangeEvent.STYLE_CHANGE event for anything that might be interested. On the JS side, StyleChangeNotifier updates its strand's wrapped element's style directly. HTML package: I changed SolidBackgroundWithChangeListenerBead to be SWF-only and to listen for STYLE_CHANGE events. When it sees such an event, it causes the background of the strand to refresh. I felt, after with Alex, that since SolidBackgroundBead is SWF-only, its derivative, SolidBackgroundWithChangeListenerBead should also be SWF-only which left few places for the JS side to actually change the style, so I stuck that in the StyleChangeNotifier; it seems to work well. To use this: <fx:Style> @namespace js "library://ns.apache.org/flexjs/basic"; @media -flex-flash { js|Container { iBackgroundBead: ClassReference("org.apache.flex.html.beads.SolidBackgroundWithChangeListene rBead"); } } </fx:Style> <js:Container id="box"> <js:style> <js:BindableCSSStyles backgroundColor="blue" /> </js:style> <js:beads> <js:StyleChangeNotifier /> </js:beads> </js:Container> You can change the Container's background: box.style.backgroundColor = "red"; I will do the same for the border styles and then roll it into the Express package Container element. —peter On 2/15/17, 2:48 PM, "Peter Ent" <p...@adobe.com> wrote: >This is what I have at the moment: > >SolidBackgroundWithChangeListenerBead (extends SolidBackgroundBead) grabs >the style from its strand and sets up a listener for ValueChangeEvent. If >the style dispatches it, SBWCLB then invokes its super class's methods, >setupStyles and handleChange (both of which I made protected functions so >the code could be reused with little effort. > >Changing the style involves: container.style.backgroundColor = 0xDD0000; > >This works fine for SWFs. It does not work for JS. There's no code on the >JS side to transfer the container.style.backgroundColor to the >container.element.style.backgroundColor. I think the SBWCLB needs a JS >side to do that. Or, as you say, have BindableCSSStyle do it. > >However, what I read below was that my >SolidBackgroundWithChangeListenerBead should really be StyleChangeNotifier >that dispatches a more generic "styleChanged" event (which might be an >extension of ValueChangeEvent). Then SolidBackgroundWithChangeListener >would listen for that event and then trigger a refresh of its background. >Then other beads, like SolidBoarderWithChangeListenerNotifierBead would do >the same for borders. > >Then the application MXML becomes (you can't actually write this due to >the fact that SolidBackgroundWithChangeListenerBead would only be >available on SWF side so it would really go into a CSS with a media-query >set for flash): > ><js:Container> > <js:style> > <js:BindableCSSStyle backgroundColor="blue" /> > </js:style> > <js:beads> > <js:StyleChangeNotifierBead /> > <js:SolidBackgroundWithChangeListenerBead /> > </js:beads> ></js:Container> > >Does this sound more on the right track? > >‹peter > >On 2/15/17, 1:23 PM, "Alex Harui" <aha...@adobe.com> wrote: > >> >> >>On 2/15/17, 10:04 AM, "piotrz" <piotrzarzyck...@gmail.com> wrote: >> >>>Alex, >>> >>>Yes settings "style" wouldn't change some style property itself, but >>>will >>>register couple of times listener - shouldn't we avoid it ? >>> >>>What do you mean saying "IMO, styleChangeHandler should be removed from >>>UIBase." - Where it should be placed exactly ? >> >>Maybe in a bead that looks for changes. That's sort of how >>LayoutChangeNotifier attempts to work. Another possibility is that a >>bead >>could encapsulate the changing of the styles. >> >>The host strand in theory only contains code for convenience. The beads >>should be talking to each other. In this case, the BindableCSSStyles >>bead >>and on the AS side a SolidBackgroundBead need to have a conversation. On >>the JS side, maybe BindableCSSStyles should just write to the element's >>style object. >> >>We tried to purposefully leave out a lot of dynamic behavior in order to >>see how small and fast Basic could be and if we can then add on dynamic >>behavior some other way. The Express package should bundle the dynamic >>behavior. So we are only now getting serious about how to implement this >>dynamic behavior, so there is definitely room for improvement. >> >>My 2 cents, >>-Alex >> >