Skin ListenerHelper
John Hendrikx
john.hendrikx at gmail.com
Tue Mar 12 08:39:56 UTC 2024
With subscriptions these kinds of helpers are really not needed anymore.
Just do:
Subscription combined = Subscription.combine(
property1.subscribe( ... ),
property2.subscribe( ... )
);
And clean it up with `combined.unsubscribe` in `dispose`.
For non-property clean-ups, you can add additional cleanup like this:
Subscription combined = subscription.and(() -> { extra clean-up
code });
Alternatively, you can use `when(skinActive)` on most of your observers,
and set `skinActive` to `false` in dispose.
SkinBase was a mistake IMHO. Helper methods that require state are
better placed in an instanced utility, not in a base class. What does it
mean that a "TableViewSkin" is-a "SkinBase". Using inheritance to get
access to such helpers (which need a little bit of state) is really a
classic mistake and misuse of inheritance. ListenerHelper is much better
in that regard, much more generally usable (since it uses composition),
and stores its state in its own instance.
--John
On 12/03/2024 00:19, Marius Hanl wrote:
> Since I see multiple discussions about the behaviour API and the
> RichTextControl, I want to ask another, still important question:
> What is about the Skin cleanup ListenerHelper?
> We now have 2 implementations of such utility - the
> LambdaMultiplePropertyChangeListenerHandler
> and the
> ListenerHelper
> I would really see that this topic is closed and cleaned up, with all
> TODOs that emerged from this than 2-3 new other open implemention
> changes on different topics.
> The class is also not public, so extending from something else than
> SkinBase makes it hard to write your own skin as there is no proper
> help to register and dispose your listener.
> -- Marius
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/openjfx-dev/attachments/20240312/4921ff02/attachment.htm>
More information about the openjfx-dev
mailing list