JavaFX 9 & FXCanvas
nyssen at itemis.de
Wed Jun 15 05:36:51 UTC 2016
> Am 14.06.2016 um 23:00 schrieb Kevin Rushforth <kevin.rushforth at oracle.com>:
> As far as we know, FXCanvas is now usable in an OSGi context with JDK 9 + Jigsaw, so you should be able to test this with the latest JDK 9 early access build.
I will contact Tom Schindl w.r.t. this as he maintains the OSGi-integration we use at Eclipse. I have seen on this list that he was already active (but don’t know the results yet).
> You mentioned that the following bugs are critical for you:
> https://bugs.openjdk.java.net/browse/JDK-8159227 (properly forward consumption state of key events)
> https://bugs.openjdk.java.net/browse/JDK-8143596 (properly forward touch gestures)
> https://bugs.openjdk.java.net/browse/JDK-8088147 (custom cursors)
> There is still time to fix bugs for JDK 9, but I none of the above are currently targeted for 9, and it seems unlikely that they will make it. Would you be interested in contributing fixes for these bugs? If so, then please check the following OpenJDK Wiki page .
Yes, I am willing to contribute patches for these. The forwarding of touch gestures we currently provide however is based on an initial contribution (under the terms of EPL) by Jan Köhnlein to our project (based on the code he mentioned in https://bugs.openjdk.java.net/browse/JDK-8088262). We then applied a couple of fixes to it to make it properly work and augmented it with a fix to https://bugs.openjdk.java.net/browse/JDK-8088147. That leads me to two questions:
1) How would I have to handle the copyright? Jan Köhnlein already stated in https://bugs.openjdk.java.net/browse/JDK-8088262 that he was willing to contribute the necessary code. Would it require he (as well as all GEF committers that worked on the mentioned fixes) would have to sign the OCA as well? Is there any experience on how to transfer EPL-licensed code already?
2) Up to when could patches be accepted for JavaFX 9?
> You also mentioned the following RFE:
> https://bugs.openjdk.java.net/browse/JDK-8143597 (API to access current mouse pointer location)
> There is a vanishingly small amount of time to add replacement API for internal methods that will be hidden by the module system. It would need to be a simple, well-defined API and we need good justification to do this. Is the above needed as part of your workarounds for the three bugs mentioned earlier or is there some other reason that you need this?
This RFE unrelated to the three issues mentioned before. On all platforms except Mac it seems to be possible to use java.awt.MouseInfo as a workaround (while we had a bit of struggle to get it work in the context of OSGi; we have to manipulate the awt headless mode property by means of reflection). On Mac, this does not work, so here com.sun.glass.ui.Robot is the only option. While it would in principle be possible to track the mouse location by some global event filter as well to mimic this functionality in client code, this would IMHO be a quite ugly solution.
> -- Kevin
>  http://openjdk.java.net/contribute/
> Alexander Nyßen wrote:
>> 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.
Dr. Alexander Nyßen
Telefon: +49 (0) 231 / 98 60-202
Telefax: +49 (0) 231 / 98 60-211
Mobil: +49 (0) 151 / 17396743
alexander.nyssen at itemis.de
Am Brambusch 15-24
Amtsgericht Dortmund, HRB 20621
Vorstand: Jens Wagener (Vors.), Wolfgang Neuhaus
Aufsichtsrat: Prof. Dr. Burkhard Igel (Vors.), Michael Neuhaus, Jennifer Fiorentino
More information about the openjfx-dev