Hi all,

As you might be aware, JEP 253 is all about getting private JavaFX UI control and CSS APIs out into the public. You can read all about JEP 253 at [1]. This JEP is split into three sub-projects:

1) Make UI control skins into public APIs
2) Improve support for input mapping
3) Review and make public relevant CSS APIs

Today I'm posting a first javadoc that contains a proposed set of API for project 1) and 2). The javadoc for project 3) will come in a week or two, once it is closer to completion. You can find the javadoc for the first two projects at [2].

In this javadoc you'll see three packages. Here's a few brief comments:

1) javafx.scene.control: This package is unchanged. It is only here for completeness (so you can compare control classes to skin classes).

2) javafx.scene.control.skin: This package is entirely new. It consists of many of the classes that previously inhabited com.sun.javafx.scene.control.skin. Look closely at the skin classes you are interested in - almost all classes do not resemble their original form. This is because up until now, skin classes have never been considered public API, and as such not much was done to ensure a sane API. With JDK 9 this changes, and so the amount of API on each class is significantly less than what existed previously. We will take the normal approach of growing the API as demand is shown - so if something is missing, please comment ASAP!

3) javafx.scene.input: This package contains just the new classes as part of this JEP. In general the classes here are the most preliminary of the bunch - they are likely to go under the most change between now and JDK 9 being released. Please review and comment.

The primary implementation change is that whilst Skins are mostly unchanged, they handle behaviors differently than now. Input mappings are now created by the skin and installed on the control. It is conceivable that in a future release these behaviors will themselves become public API, but for JEP 253 that is out of scope.

There are still a few things to be thought through:

1) How to document the available input mappings so they can be easily searched for at runtime (javadoc? Java API?) 2) Controls have an empty inputMap until skin is instantiated - this means manipulating the mappings can't happen as soon as the control is created.
3) No plan on how this might support Action-style API in the future.
4) There is no API to access context menus in controls such as TextField (to add / remove functionality).

I look forward to any feedback you may have. Feel free to email me on- or off- list.

[1] http://openjdk.java.net/jeps/253
[2] http://jonathangiles.net/javafx/jdk9/public-skins/2/

Thanks,
-- Jonathan

Reply via email to