JavaFX 9 & FXCanvas
nyssen at itemis.de
Tue Jun 14 20:16:02 UTC 2016
The Eclipse Graphical Editing Framework (GEF) project as well as other Eclipse project rely on the JavaFX-SWT-integration that is realized through FXCanvas.
We at GEF, however, do not use it out-of-the-box but have created a subclass (http://git.eclipse.org/c/gef/org.eclipse.gef4.git/tree/org.eclipse.gef4.fx.swt/src/org/eclipse/gef4/fx/swt/canvas/FXCanvasEx.java <http://git.eclipse.org/c/gef/org.eclipse.gef4.git/tree/org.eclipse.gef4.fx.swt/src/org/eclipse/gef4/fx/swt/canvas/FXCanvasEx.java>) to properly handle forwarding of touch gesture events (https://bugs.openjdk.java.net/browse/JDK-8143596 <https://bugs.openjdk.java.net/browse/JDK-8143596>) through an internal delegate (http://git.eclipse.org/c/gef/org.eclipse.gef4.git/tree/org.eclipse.gef4.fx.swt/src/org/eclipse/gef4/fx/swt/gestures/SWT2FXEventConverter.java <http://git.eclipse.org/c/gef/org.eclipse.gef4.git/tree/org.eclipse.gef4.fx.swt/src/org/eclipse/gef4/fx/swt/gestures/SWT2FXEventConverter.java>), and to add support for image cursors (https://bugs.openjdk.java.net/browse/JDK-8088147 <https://bugs.openjdk.java.net/browse/JDK-8088147>). Unfortunately, both fixes provided by us require access to internal API and will thus - AFAIK - no longer work with Jigsaw. Forwarding of SWT key events' consumption state (https://bugs.openjdk.java.net/browse/JDK-8159227 <https://bugs.openjdk.java.net/browse/JDK-8159227>) is a related issue, for which a workaround in client code would require access to internal API, too.
By following this list, I got the impression that it is not completely clear yet, if and how the JavaFX-SWT-integration will be usable in an OSGi context with Jigsaw, so let me at least point out that this is quite essential to us. And while https://bugs.openjdk.java.net/browse/JDK-8143596 <https://bugs.openjdk.java.net/browse/JDK-8143596> is being marked as only „nice-to-have“, at least for us this is not the case, as an Eclipse-integrated graphical application that does not support modern touch devices will not really be acceptable. As such, let me ask whether there is a chance we can get this functionality migrated to FXCanvas as part of JavaFX 9. I would like to support this as far as I can.
Last, I would like to point out that the unavailability of a public API to retrieve the current mouse pointer location (https://bugs.openjdk.java.net/browse/JDK-8143597 <https://bugs.openjdk.java.net/browse/JDK-8143597>) will definitely become a blocker in case the only workaround (via com.sun.glass.ui.Robot) will no longer work because of Jigsaw. Please consider to include a public API for this within JavaFX 9, even if the related Glass Robot API (https://bugs.openjdk.java.net/browse/JDK-8090763 <https://bugs.openjdk.java.net/browse/JDK-8090763>) will not be offered yet.
More information about the openjfx-dev