Deprecating the existing API is an interesting idea, but with such a
large API surface it will be difficult to show that no application is
using it.
-- Kevin
On 8/26/2024 2:35 PM, John Hendrikx wrote:
On 26/08/2024 22:42, Michael Strauß wrote:
can we create stylesheets programmatically without parsing (i.e.
construct the token tree directly)?
Maybe, but `Stylesheet` and its constituent classes really seem like
exposed implementation details of JavaFX. I would rather deprecate
their use and remove them from the public API eventually.
I'm pretty convinced of that as well. The whole CSS API seems to have
been put in place to allow use of binary stylesheets (to perhaps
load Modena .5 seconds faster?), it doesn't seem to serve much of a
function beyond that. I haven't found a use for any of these classes
and the API surface they expose.
For example, I implemented a LESS parser that I can use with JavaFX,
and the CSS API was absolutely no help there (what is the point of
being able to create a StyleSheet when I can't "set" it on a Scene?)
-- instead I've just resorted to writing the LESS output to memory
buffers, and pointing my stylesheet properties directly to these
(using "data:text/css;charset=UTF-8;base64," URL's -- thanks for
whoever mentioned "data" URL's, I was writing these to temporary files
before that...).
The CSS API classes are also full of observable properties, which
seems a rather odd decision given that a Stylesheet is probably far
better represented as something immutable. Imagine assigning a
Stylesheet type to Scene (something that isn't possible, so it is
unclear what the purpose of this class is), then having the CSS engine
observe almost every aspect of this Stylesheet, just in case someone
decides to add a new Selector somewhere programmatically... it would
be incredibly complicated to "act" on such a change correctly,
requiring no doubt thousands of lines of code, that will likely never
ever be used in any FX application (well perhaps if you are writing a
Stylesheet editor, but that's hardly a use-case worth supporting just
in case...)
--John