Let me comment on the examples you picked.

The 1st and 2nd rely on the default skin being used (they lookup a node
based on style class and then cast it to the expected type). This code
would not work with a custom skin.


The 3rd and 5th actually don't need skin implementations to be public,
since they are just setting a default skin. So instead of

    control.setSkin(new DefaultSkinImplementation(control));

they could as well do

    control.setSkin(control.createDefaultSkin());


Number 4 seems like a legit reuse and customization of the default skin.
Too bad it still needs to do reflection to access its private field, thus
even though it keeps working for now, it can break without warning in the
future.


I now see that making skins public averts the disaster, but the code that
was problematic before stays problematic.


Regards,
Tomas

On Thu, Sep 3, 2015 at 11:03 PM, Jonathan Giles <jonathan.gi...@oracle.com>
wrote:

> Tomas,
>
> The webrev has a few examples of how skins being public will help. There
> are many more of such cases when you take into account the large number of
> projects I surveyed, but I just picked out the first few from this webrev
> for Scene Builder. The short answer is: if skins aren't public, these
> classes wouldn't compile in JDK 9.
>
> Examples include:
>
>
> http://cr.openjdk.java.net/~kcr/jep-253/webrev.00/apps/scenebuilder/SceneBuilderKit/src/com/oracle/javafx/scenebuilder/kit/editor/panel/content/driver/TableViewDesignInfoX.java.sdiff.html
>
>
> http://cr.openjdk.java.net/~kcr/jep-253/webrev.00/apps/scenebuilder/SceneBuilderKit/src/com/oracle/javafx/scenebuilder/kit/editor/panel/content/driver/TreeTableViewDesignInfoX.java.sdiff.html
>
>
> http://cr.openjdk.java.net/~kcr/jep-253/webrev.00/apps/experiments/ConferenceScheduleApp/src/main/java/com/javafx/experiments/scheduleapp/control/PopoverTreeList.java.sdiff.html
>
>
> http://cr.openjdk.java.net/~kcr/jep-253/webrev.00/apps/experiments/ConferenceScheduleApp/src/main/java/com/javafx/experiments/scheduleapp/control/ScrollPaneSkin3.java.sdiff.html
>
>
> http://cr.openjdk.java.net/~kcr/jep-253/webrev.00/apps/experiments/ConferenceScheduleApp/src/main/java/com/javafx/experiments/scheduleapp/control/SearchBox.java.sdiff.html
>
> -- Jonathan
>
> On 4/09/2015 2:55 p.m., Tomas Mikula wrote:
>
> Hi Jonathan,
>
> regarding skins, while I don't see anything immediately wrong with the
> published API, I have trouble seeing how making skin implementations public
> is going to be useful. In particular, the JEP states that one of the
> success metrics is
>
> Projects that depend on JavaFX internal APIs, in particular Scene Builder,
>> ControlsFX, and JFXtras, continue to work after updating to the new API
>> with no loss of functionality.
>
>
> Can you, or someone else from those projects, give a concrete example how
> making skins public will help?
>
> Best,
> Tomas
>
> On Thu, Sep 3, 2015 at 9:17 PM, Jonathan Giles <jonathan.gi...@oracle.com>
> wrote:
>
>> Hi folks.
>>
>> For those of you interested in JEP 253 we've got some light weekend
>> reading lined up for you. We are at a point where the JEP is basically
>> ready to merge back into a mainline (public) repo, and out of its sandbox.
>> Before we do that, we want any additional feedback from the community, if
>> there is any remaining. The two links you'll want to peruse are as follows:
>>
>> JavaDocs: http://jonathangiles.net/javafx/jdk9/jep253/7/
>> Webrev: http://cr.openjdk.java.net/~kcr/jep-253/webrev.00/
>>
>> Thanks,
>> -- Jonathan
>>
>
>
>

Reply via email to