RFR: 8290844: Add Skin.install() method [v2]
Jeanette Winzenburg
fastegal at openjdk.org
Thu Aug 11 13:21:35 UTC 2022
On Wed, 10 Aug 2022 22:14:53 GMT, Andy Goryachev <angorya at openjdk.org> wrote:
>> - added Skin.install()
>> - javadoc changes for Skinnable.setSkin(Skin)
>>
>> no code changes for Skinnable.setSkin(Skin) yet.
>
> Andy Goryachev has updated the pull request incrementally with one additional commit since the last revision:
>
> 8290844: javadoc
>From a purist perspective, I love this change :) But ..
jumping to the impact analysis (and playing devil's advocate, a bit :)
> The changes should be fairly trivial. Only a subset of skins needs to be refactored, and the refactoring itself is trivial.
optimistic 😉 On the bright side: that subset are the harder ones, some being in a hierarchy of skins where every level might do its own evil .. so we can eat our own dog food (dealing with the added life-cyle).
> The new API is backwards compatible with the existing code, the customer-developed skins can remain unchanged (thanks to default implementation).
hmm ... probably I'm missing something but I don't see how that would be the case for the subset of core skins that have to be refactored and moved their installation into the install() method. Typically, custom skins do their own stuff on top of what super did at the end of the constructor, assuming that everything is fully installed. Depending on what exactly will be moved into install, their behavior will be broken after the change.
Examples:
// prepending a listener
Consumer old = unregisterXXListener(someProperty);
registerXXListener(someProperty, consumer);
registerXXListener(someProperty, old);
// lookup a child added by super
Node child = control.lookup(..)
// replace singleton event handlers
control.setOnXX(...)
// probably more that I don't remember right now ..
-------------
PR: https://git.openjdk.org/jfx/pull/845
More information about the openjfx-dev
mailing list