New CSS parser for JavaFX

Kevin Rushforth kevin.rushforth at oracle.com
Mon Aug 26 21:40:06 UTC 2024


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



More information about the openjfx-dev mailing list