Reloading stylesheets

David Grieve david.grieve at oracle.com
Thu Dec 12 05:51:53 PST 2013


Thanks, Neil. The underlying cause is likely to be the same. I'm going to resolve the one you created as a duplicate so the fact that this is critical to scene builder is not lost. 

On Dec 12, 2013, at 7:48 AM, ngalarneau at abinitio.com wrote:

> The Jira I filed is at:
> 
> https://javafx-jira.kenai.com/browse/RT-34850
> 
> The slight difference is that I applied the stylesheet on the scene 
> instead of the button.
> 
> 
> Neil
> 
> 
> 
> From:   Jerome Cambon <jerome.cambon at oracle.com>
> To:     openjfx-dev at openjdk.java.net
> Date:   12/12/2013 04:26 AM
> Subject:        Re: Reloading stylesheets
> Sent by:        openjfx-dev-bounces at openjdk.java.net
> 
> 
> 
> This is also impacting Scene Builder.
> 
> I have filed a Jira with a test case:
> https://javafx-jira.kenai.com/browse/RT-34863
> 
> Jerome
> 
> On 12/11/13 6:19 PM, David Grieve wrote:
>> There is clearly a bug there somewhere. Would you mind filing an issue 
> on javafx-jira.kenai.com?
>> 
>> On Dec 11, 2013, at 11:51 AM, ngalarneau at abinitio.com wrote:
>> 
>>> Hi David,
>>> 
>>> I have stylesheet SWITCHING working fine. I can switch between 2 
> different
>>> stylesheets on disk without tearing down & rebuilding my Scene. To do 
> this
>>> I simply do:
>>>        scene.stylesheets.clear()
>>>        scene.stylesheets.add(differentStylesheet)
>>> and the changes show up immediately (I'm assuming those 2 lines cause a
>>> .css recalculation & a pulse).
>>> 
>>> I would like to get stylesheet RELOADING to work in my JavaFX 8 app. By
>>> this I mean picking up changes in a single .css file. This would allow 
> the
>>> developers to tweak the stylesheet & reload to see the effects
>>> immediately.
>>> 
>>> Unfortunately, it feels like the Filename of the stylesheet is the Key 
> in
>>> a cache that isn't getting cleared by my code above. Nothing visible
>>> happens when I do:
>>>        scene.stylesheets.clear()
>>>        scene.stylesheets.add(sameStylesheet)
>>> 
>>> Given your description below, my impression is that RELOADING should 
> also
>>> work...
>>> 
>>> Thank you for any suggestions,
>>> 
>>> Neil
>>> 
>>> 
>>> 
>>> 
>>> From:   David Grieve <david.grieve at oracle.com>
>>> To:     Werner Lehmann <lehmann at media-interactive.de>
>>> Cc:     openjfx-dev at openjdk.java.net
>>> Date:   12/10/2013 11:10 AM
>>> Subject:        Re: Reloading stylesheets
>>> Sent by:        openjfx-dev-bounces at openjdk.java.net
>>> 
>>> 
>>> 
>>> The way it works in 8.0 is that there is a cache of loaded stylesheets.
>>> When a scene or parent adds a stylesheet, the stylesheet is added to 
> the
>>> cache. Any other scene or parent that uses the same stylesheet will get
>>> the one from cache. If a scene or parent later removes the stylesheet, 
> the
>>> stylesheet is removed from the cache and the css style cache for any 
> scene
>>> or parent that referenced that stylesheet is cleared (since the set of
>>> styles may have changed). Any scene or parent that referenced the now
>>> removed stylesheet is told to reapply its styles. Since the stylesheet 
> is
>>> no longer in cache, it will be re-parsed (or reloaded if there is a 
> binary
>>> version of the stylesheet) when it is called for by a scene or parent.
>>> 
>>> The way it worked in 2.x was an abomination.
>>> 
>>> On Dec 10, 2013, at 10:30 AM, Werner Lehmann
>>> <lehmann at media-interactive.de> wrote:
>>> 
>>>> Interesting. Assuming the stylesheets are still cached, how would it
>>> know when to reload and not use the cached sheet? Or has sheet 
> processing
>>> been optimized so much that caching is not necessary anymore...
>>>> On 10.12.2013 16:15, Tom Schindl wrote:
>>>>> No on FX8 you need to remove and readd them! So the only thing
>>> different
>>>>> is that you omit the reload-call on FX8.
>>> 
>>> 
>>> 
>>> 
>>> NOTICE from Ab Initio: This email (including any attachments) may 
> contain
>>> information that is subject to confidentiality obligations or is 
> legally
>>> privileged, and sender does not waive confidentiality or privilege. If
>>> received in error, please notify the sender, delete this email, and 
> make
>>> no further use, disclosure, or distribution.
> 
> 
> 
> 
> 
> NOTICE from Ab Initio: This email (including any attachments) may contain 
> information that is subject to confidentiality obligations or is legally 
> privileged, and sender does not waive confidentiality or privilege. If 
> received in error, please notify the sender, delete this email, and make 
> no further use, disclosure, or distribution. 



More information about the openjfx-dev mailing list