I'm willing to invest the necessary time in this.
What should a concrete proposal consist of? Is there a format for this
that I can follow (like
https://gist.github.com/brcolow/26370db6cab0355186d4a1d13b30fc19 for
example?)
Otherwise I can flesh out a small document with the Why, What, How of
this addition, broken into several parts to keep each addition small but
coherent with a larger whole.
My current proposal adds around 400 lines of code, which is about as
small as I can get it while still offering something of value. The newly
introduced public API surface can be reduced a bit further.
A summary of the changes are:
ObservableValue interface
- 5 new methods with default implementations to support fluent mappings
- 2 new methods for registration of subscribers (could be removed from
the public API for now).
ObjectBinding
- adds two new protected methods with trivial implementations
in order to support the functionality needed by LazyObjectBinding
- functionality of class unaltered for any existing code, fully
backwards compatible
Subcription interface
- new public interface with two methods (does not need to be part
of the initial API, could be internal for now)
All the other code is just implementation and can be moved to internal
packages which means that this change could be limited to introducing
five new public methods and two protected ones.
If you can point me in the right direction, I'll work on a concrete
proposal.
I also have a small Maven dependency with these changes as part of
JavaFX (breaking module boundaries) that can serve as a preview of the
feature if there is any interest.
--John
On 27/08/2021 18:58, Kevin Rushforth wrote:
This is a rather large addition to the properties API, but there seems
to be enough interest in it that it might be worth getting to the point
of a concrete proposal that we could discuss on the list.
I wouldn't expect it for JavaFX 18, since it will almost certainly take
longer than that. Which makes this a good time to remind folks that the
development model under the six month release cycle is such that
features go in when ready, rather than necessarily being tied to a
specific release.
-- Kevin
On 8/4/2021 3:25 PM, John Hendrikx wrote:
Perhaps:
Fluent bindings for ObservableValue
https://github.com/openjdk/jfx/pull/434
It was received well I think, and there was some interest from Nir
Lisker to work on a proposal.
--John
On 30/07/2021 14:56, Kevin Rushforth wrote:
Now that JavaFX 17 is in RDP2, we can turn more attention to bug fixes
and enhancement requests for JavaFX 18. It's the summer, so there may be
delays as some people are out at various times (including me), but I
would like to get some of the outstanding enhancement requests moving
over the next few weeks.
Specifically, I'd like to see the following proceed:
* Transparent backgrounds in WebView
JBS: https://bugs.openjdk.java.net/browse/JDK-8090547
PR: https://github.com/openjdk/jfx/pull/563
* Add DirectionalLight
JBS: https://bugs.openjdk.java.net/browse/JDK-8234921
PR: https://github.com/openjdk/jfx/pull/548
* CSS pseudoclasses :focus-visible and :focus-within
https://bugs.openjdk.java.net/browse/JDK-8268225
PR: https://github.com/openjdk/jfx/pull/475
* Improve property system to facilitate correct usage (minus the binary
incompatible API change)
JBS: https://bugs.openjdk.java.net/browse/JDK-8268642
PR: https://github.com/openjdk/jfx/pull/590 (Draft)
And maybe the following:
* Add CSS themes as a first-class concept (need a consensus on how to
proceed)
* Undecorated interactive stage style (still in early discussion, but
the concept looks interesting and useful)
There are probably others I'm forgetting.
Each of the above should be discussed in their own thread on openjfx-dev
rather than a reply to this thread.
-- Kevin