Re: RFR: 8193445: JavaFX CSS is applied redundantly leading to significant performance degradation

2019-11-26 Thread Sverre Moe
On Tue, 26 Nov 2019 09:22:04 GMT, Kevin Rushforth  wrote:

> On Tue, 12 Nov 2019 16:45:04 GMT, Ajit Ghaisas  wrote:
> 
>> **Issue :**
>> https://bugs.openjdk.java.net/browse/JDK-8193445
>> 
>> **Background :**
>> The CSS performance improvement done in 
>> [JDK-8151756](https://bugs.openjdk.java.net/browse/JDK-8151756) had to be 
>> backed out due to functional regressions reported in 
>> [JDK-8185709](https://bugs.openjdk.java.net/browse/JDK-8185709), 
>> [JDK-8183100](https://bugs.openjdk.java.net/browse/JDK-8183100) and 
>> [JDK-8168951](https://bugs.openjdk.java.net/browse/JDK-8168951).
>> Refer to [JDK-8183100](https://bugs.openjdk.java.net/browse/JDK-8183100) for 
>> more details on this backout. 
>> 
>> **Description :**
>> This PR reintroduces the CSS performance improvement fix done in 
>> [JDK-8151756](https://bugs.openjdk.java.net/browse/JDK-8151756) while 
>> addressing the functional regressions that were reported in 
>> [JDK-8185709](https://bugs.openjdk.java.net/browse/JDK-8185709), 
>> [JDK-8183100](https://bugs.openjdk.java.net/browse/JDK-8183100) and 
>> [JDK-8168951](https://bugs.openjdk.java.net/browse/JDK-8168951).
>> For ease of review, I have made two separate commits -
>> 1) [Commit 
>> 1](https://github.com/openjdk/jfx/pull/34/commits/d964675ebc2a42f2fd6928b773819502683f2334)
>>  - Reintroduces the CSS performance improvement fix done in 
>> [JDK-8151756](https://bugs.openjdk.java.net/browse/JDK-8151756) - most of 
>> the patch applied cleanly.
>> 2) [Commit 2 
>> ](https://github.com/openjdk/jfx/pull/34/commits/12ea8220a730ff8d98d520ce870691d54f0de00f)-
>>  fixes the functional regressions keeping performance improvement intact + 
>> adds a system test
>> 
>> **Root Cause :**
>> CSS performance improvement fix proposed in [JDK-8151756 
>> ](https://bugs.openjdk.java.net/browse/JDK-8151756)correctly avoids the 
>> redundant CSS reapplication to children of a Parent. 
>> What was missed earlier in [JDK-8151756 
>> ](https://bugs.openjdk.java.net/browse/JDK-8151756) fix : "CSS reapplication 
>> to the Parent itself”. 
>> This missing piece was the root cause of all functional regressions reported 
>> against [JDK-8151756](https://bugs.openjdk.java.net/browse/JDK-8151756)
>> 
>> **Fix :**
>> Fixed the identified root cause. See commit 2.
>> 
>> **Testing :**
>> 1. All passing unit tests continue to pass
>> 2. New system test (based on 
>> [JDK-8209830](https://bugs.openjdk.java.net/browse/JDK-8209830)) added in 
>> this PR - fails before this fix and passes after the fix
>> 3. System test JDK8183100Test continues to pass
>> 4. All test cases attached to regressions 
>> [JDK-8185709](https://bugs.openjdk.java.net/browse/JDK-8185709), 
>> [JDK-8183100](https://bugs.openjdk.java.net/browse/JDK-8183100) and 
>> [JDK-8168951](https://bugs.openjdk.java.net/browse/JDK-8168951) pass with 
>> this fix
>> 
>> In addition, testing by community with specific CSS performance / 
>> functionality will be helpful.
>> 
>> 
>> 
>> Commits:
>>  - 12ea8220: Fix for functional regressions of JDK-8151756 + add a sytem test
>>  - d964675e: Reintroduce JDK-8151756 CSS performance fix
>> 
>> Changes: https://git.openjdk.java.net/jfx/pull/34/files
>>  Webrev: https://webrevs.openjdk.java.net/jfx/34/webrev.00
>>   Issue: https://bugs.openjdk.java.net/browse/JDK-8193445
>>   Stats: 121 lines in 5 files changed: 104 ins; 0 del; 17 mod
>>   Patch: https://git.openjdk.java.net/jfx/pull/34.diff
>>   Fetch: git fetch https://git.openjdk.java.net/jfx pull/34/head:pull/34
> 
> The fix itself looks good and is a much safer approach than the previous one. 
> I've done a fair bit of testing and can see no regressions as a result of 
> this fix. I did find one unrelated issue while testing (a visual bug 
> introduced back in JDK 10) that I will file separately.
> 
> The test is pretty close, but still needs a few changes. The main problem is 
> that it does not catch the performance problem, meaning if you run it without 
> the fix, it will still pass. Your test class extends 
> `javafx.application.Application`, which can cause problems, since JUnit will 
> create a new instance of the test class that is different from the one 
> created by the call to `Application.launch` in the `@BeforeClass` method. 
> This in turn leads to the `rootPane` instance used by the test method being 
> different from the one used as the root of the visible scene. The fix is to 
> use a separate nested (static) subclass of Application, and make the rootPane 
> field a static field. I have left inline comments for this and a few other 
> things I noticed.
> 
> tests/system/src/test/java/test/javafx/scene/QuadraticCssTimeTest.java line 
> 63:
> 
>> 62: 
>> 63: public class QuadraticCssTimeTest extends Application {
>> 64: 
> 
> Remove `extends Application`
> 
> tests/system/src/test/java/test/javafx/scene/QuadraticCssTimeTest.java line 
> 66:
> 
>> 65: static private CountDownLatch startupLatch;
>> 66: static private Stag

Re: Request for permission to backport fixes to jfx-11

2019-10-21 Thread Sverre Moe
Could JavaFX 11 also get backported the fix related for JDK-8193502? It
might have been solved in the fix for JDK-8179073.

I noticed this regression right after JDK 9 build 161. Recently also JavaFX
8 got this regression after update 181.

It seems this was fixed in JavaFX 13.
I asked on GitHub in #222 a while back if this could be backported.
Considering that repository is now closed, I will repeat it here.

Kevin Rushforth wrote:
> That's a good question for @johanvos -- it seems this might be a good
candidate for backport, although there is one report of a possible
regression caused by this fix when using GTK 2 as reported in #475

/Sverre

[1] https://bugs.openjdk.java.net/browse/JDK-8193502
[2] https://bugs.openjdk.java.net/browse/JDK-8179073
[3] https://github.com/javafxports/openjdk-jfx/pull/456
[4] https://github.com/javafxports/openjdk-jfx/issues/222

man. 21. okt. 2019 kl. 14:39 skrev Kevin Rushforth <
kevin.rushfo...@oracle.com>:

> +1
>
> -- Kevin
>
> On 10/21/2019 3:16 AM, Johan Vos wrote:
> > Hi Kevin,
> >
> > I request permission to backport the following issues to the jfx-11
> > repository. All patches apply clean or with minor changes (e.g.
> > build.properties must keep jfx.release.major.version to 11)
> >
> > Thanks,
> >
> > - Johan
> >
> > https://bugs.openjdk.java.net/browse/JDK-8221302 : Upgrade to gcc 8.2 on
> > Linux
> > https://bugs.openjdk.java.net/browse/JDK-8221299 : Upgrade to Visual
> Studio
> > 2017 version 15.9.6
> > https://bugs.openjdk.java.net/browse/JDK-8221300 : Upgrade to Xcode 10.1
> > https://bugs.openjdk.java.net/browse/JDK-8214716 : Record the versions
> of
> > tools used to build FX in the repo
> > https://bugs.openjdk.java.net/browse/JDK-8222788 : javafx.web build
> fails
> > on XCode 10.2
> > https://bugs.openjdk.java.net/browse/JDK-8225203 : Update SQLite to
> version
> > 3.28.0
> > https://bugs.openjdk.java.net/browse/JDK-8219362 : Update to 608.1
> version
> > of WebKit
> > https://bugs.openjdk.java.net/browse/JDK-8227079 : Cherry pick GTK
> WebKit
> > 2.24.3 changes
> > https://bugs.openjdk.java.net/browse/JDK-8230361 : [web] Cookies are not
> > enabled in WebKit v608.1
> > https://bugs.openjdk.java.net/browse/JDK-8229328 : [windows]
> > PlatformFileHandle type should be JGObject rather than void *
> > https://bugs.openjdk.java.net/browse/JDK-8227431 : [Windows] Fix
> assertion
> > failure on X86 32-bit when enabling CLOOP based JavaScript interpreter
> > https://bugs.openjdk.java.net/browse/JDK-8222912 : Websocket client
> doesn't
> > work in WebView
> > https://bugs.openjdk.java.net/browse/JDK-8226537 : Multi-level
> > Stage::initOwner can crash gnome-shell or X.org server
> > https://bugs.openjdk.java.net/browse/JDK-8212060 : [GTK3] Stage
> sometimes
> > shown at top-left before moving to correct position
> > https://bugs.openjdk.java.net/browse/JDK-8211302 : DragAndDrop no longer
> > works with GTK3
> > https://bugs.openjdk.java.net/browse/JDK-8213510 : MediaPlayer does not
> > play some mp3 with artwork stream in mjpeg
> > https://bugs.openjdk.java.net/browse/JDK-8207942: Add new protected
> > VirtualFlow methods for subclassing
>
>


Re: Bug in TreeTableView rendering

2019-10-16 Thread Sverre Moe
A comment on the JDK-8231644 issue was added by Jeanette Winzenburg
https://bugs.openjdk.java.net/browse/JDK-8231644

> hmm .. no testing done but: the data object looks pathological - it's
always problematic to have nodes as data (even though technically
possible). That will explode with the known glitches with
graphics/disclosureNode in treeTableRow

I would like to know more about what you are saying here:

1) That OurDataObject and AlsoOurDataObject as data model/type to
TreeTableView is pathological?

2) "Having nodes as data". Are you referring to using a Label node in the
Column CellValueFactory?
column.setCellValueFactory(param -> new ReadOnlyObjectWrapper<>(
new OurDataObjectLabel(param.getValue().getValue(;

Instead of using:
column.setCellValueFactory(new TreeItemPropertyValueFactory<>("name"));

The reason we are using OurDataObjectLabel, is because we want to style a
specific type of data determined by AlsoOurDataObject.

3) What known glitches?

/Sverre


Re: JavaFX dialog window size regression

2019-10-08 Thread Sverre Moe
Can we get the fix for JDK-8179073 [1] backported to JavaFX 11?
As discussed on the openjfx GitHub issue #222 [2].

It seems to have a fix already in PR #456 [3].

[1] https://bugs.openjdk.java.net/browse/JDK-8179073
[2] https://github.com/javafxports/openjdk-jfx/issues/222
[3] https://github.com/javafxports/openjdk-jfx/pull/456

/Sverre

tor. 26. apr. 2018 kl. 21:35 skrev Sverre Moe :

> I filed a bug report a while back. Since I didn't have access I could
> not comment or update in that issue.
>
> https://bugs.openjdk.java.net/browse/JDK-8179073
>
> With Java 9, a JavaFX dialogs got tiny and did not size up to its content.
> This worked fine when I was running JDK 9 build 161, but after JDK 9
> build 165 the dialog window did not size up to show any of its
> content.
>
> The code exampled I provided with that bug report still produces a
> tiny dialog window with both jdk-9.0.4 and jdk-10.0.1
>
> Setting the Dialog size to fixed width/height does not work, but if
> with setResizable(true) the Dialog gets its full size.
>
> It has been a while since I have used Java 9. Today I got the same
> problem while trying to exit SceneBuilder 9 downloaded from Gluon.
>
> I was wondering if I should re-create this bug report on the GitHub
> OpenJFX repository?
>


Re: Bug in TreeTableView rendering

2019-09-30 Thread Sverre Moe
I filed it on bugreport.java.com
> We will review your report and have assigned it an internal review ID :
9062382.

/Sverre

man. 30. sep. 2019 kl. 14:49 skrev Kevin Rushforth <
kevin.rushfo...@oracle.com>:

> Hi Sverre,
>
> Thanks for bringing this to our attention. Can you please file a bug at
> bugreport.java.com [1]?
>
> This seems like a good time to remind everyone that JBS [2] is our bug
> tracking system. This GitHub issue tracker is not actively tracked or
> managed. The official GitHub repos in the openjdk organization will not
> have the issue tracker enabled, which should help avoid this confusion.
>
> -- Kevin
>
> [1] https://bugreport.java.com/
> [2] https://bugs.openjdk.java.net/
> [3] https://github.com/openjdk/
>
> On 9/30/2019 3:08 AM, Sverre Moe wrote:
> > I have created an issue for this on GitHub.
> > https://github.com/javafxports/openjdk-jfx/issues/607
> >
> > /Sverre
> >
>
>


Re: Bug in TreeTableView rendering

2019-09-30 Thread Sverre Moe
I have created an issue for this on GitHub.
https://github.com/javafxports/openjdk-jfx/issues/607

/Sverre

man. 26. aug. 2019 kl. 20:03 skrev Sverre Moe :

> I think I have found a bug/regression with Java 11 regarding TreeTableView.
> This has worked fine on JavaFX 8, but is messed up with JavaFX 11.
> 1) The arrow button is on the text
> 2) No text indentation levels: Each row (no matter the level) is at the
> left edge of the TreeTableView.
>
> I can file an issue at GitHub if this is a real bug/regression. I just
> wanted to check first here.
>
> TreeTableColumn column = new
> TreeTableColumn<>("Column");
> column.setCellValueFactory(param -> new ReadOnlyObjectWrapper<>(new
> OurDataObjectLabel(param.getValue().getValue(;
>
> We are using Label here so we can set StyleClass based on some information
> in the OurDataObject.
>
> class OurDataObject {
> private String name;
> public String getName() { return name; }
> }
>
> class AlsoOurDataObject extends OurDataObject {
> public boolean isSomething() { ... }
> }
>
> class OurDataObjectLabel extends Label() {
> public OurDataObjectLabel(OurDataObject ourDataObject) {
> setText(ourDataObject.getName());
> if (ourDataObject instanceof AlsoOurDataObject) {
> if (((AlsoOurDataObject) ourDataObject).isSomething()) {
> getStyleClass().add("style");
> }
> }
> }
> }
>
> A workaround was to use OurDataObject for both types in the
> TreeTableColumn, create a CellFactory to do what has been done in
> OurDataObjectLabel and in addition to the CellValueFactory.
>
> Code Example for reproducing the problem:
> This is using a String instead of an Object as the data model for
> simplicity.
> I have attached a screenshot that illustrates this problem. Made with the
> example code below.
>
> import javafx.application.Application;
> import javafx.beans.property.ReadOnlyObjectWrapper;
> import javafx.scene.Scene;
> import javafx.scene.control.TreeItem;
> import javafx.scene.control.TreeTableColumn;
> import javafx.scene.control.TreeTableView;
> import javafx.scene.layout.StackPane;
> import javafx.scene.text.Text;
> import javafx.stage.Stage;
>
> public class App extends Application {
>
> public static void main(String[] args) {
> App.launch(args);
> }
>
> @Override
> public void start(Stage stage) throws Exception {
> StackPane root = new StackPane();
>
> TreeTableView treeTableView = new TreeTableView<>();
> treeTableView.setShowRoot(false);
> root.getChildren().add(treeTableView);
>
> TreeTableColumn column = new
> TreeTableColumn<>("Column");
> column.setPrefWidth(200);
> treeTableView.getColumns().add(column);
>
> column.setCellValueFactory(param -> new ReadOnlyObjectWrapper<>(
> new Text(param.getValue().getValue(;
>
> TreeItem rootItem = new TreeItem<>("");
> treeTableView.setRoot(rootItem);
>
> TreeItem item1 = new TreeItem<>("LEVEL1");
> item1.setExpanded(true);
> rootItem.getChildren().add(item1);
>
> TreeItem item2 = new TreeItem<>("LEVEL2");
> item2.setExpanded(true);
> item1.getChildren().add(item2);
>
> TreeItem item3 = new TreeItem<>("LEVEL2_1");
> item3.setExpanded(true);
> item2.getChildren().add(item3);
>
> Scene scene = new Scene(root, 250, 150);
>
> stage.setTitle("JavaFX11");
> stage.setScene(scene);
> stage.show();
> }
> }
>
>
> /Sverre
>
>


Re: JavaFX 11 Web Module Linux Requires libavcodec-ffmpeg

2019-09-19 Thread Sverre Moe
tor. 19. sep. 2019 kl. 15:36 skrev Kevin Rushforth <
kevin.rushfo...@oracle.com>:

> The dependency on libavcodec56 / libavcodec-ffmpeg56 is almost certainly
> coming from javafx.media. The javafx.web module depends on
> javafx.media, which explains why javafx.web pulls in that dependency.
>

It must have been some error on my side. Removing both the javafx.media and
javafx.web will omit the libav* Requires from my RPM package built by
jpackage.


> The javafx.media module includes dynamic libraries that are stubs for
> different versions of libav. If you download the JavaFX SDK, you will
> see them in the sdk/lib directory with the names libavplugin-NN.so and
> libavplugin-ffmpeg-NN.so.
>
> Alexander can provide more information.
>
> The runtime image produced with jlink and the JavaFX jmods do have these
so-files present in the lib directory of the runtime image. If they are
present there should not be any need to specify them as Requires on the RPM
package built by jpackage.
Does the problem then lie on the jpackage "scanning" for Linux Package
Dependencies?

What linux distribution and package where these bundled so-files built from?
The libav56 should come from ffmpeg2 package, while libav57 is from ffmpeg3
package, but none of these ffmpeg packages produce a libavcodec-ffmpeg.so.

My Linux distribution OpenSUSE, and I have checked with Fedora, do not have
the libavcodec-ffmpeg.so.
They do however have the libavcodec.so.57 which is among the requires
(version 56 and 57).

>
> On 9/19/2019 1:52 AM, Sverre Moe wrote:
> > Building an JavaFX application with the jpackage tools adds many
> additional
> > Linux RPM Requires.
> >
> > Among these are libavcodec56 and libavcodec-ffmpeg56. It is ffmpeg2 that
> > has libavcodec56, but the libavcodec-ffmpeg is nowhere to be found. It
> does
> > not seem to exist.
> >
> > If building an Java runtime image with the JavaFX 11 Web module, these
> are
> > among the RPM Requires added to the RPM package built by jpackage. One
> > could actually think it would be the media module that had these
> requires,
> > but no it doesn't.
> >
> > The jpackage tool does not have any of these Require packages itself. It
> is
> > getting them from the javafx.web module. If I omit the javafx.web from
> the
> > java runtime image, these Requires are omitted from the built RPM
> package:
> >
> > libavcodec-ffmpeg.so.56()(64bit)
> > libavcodec-ffmpeg.so.56(LIBAVCODEC_FFMPEG_56)(64bit)
> > libavcodec.so.54()(64bit)
> > libavcodec.so.54(LIBAVCODEC_54)(64bit)
> > libavcodec.so.56()(64bit)
> > libavcodec.so.56(LIBAVCODEC_56)(64bit)
> > libavcodec.so.57()(64bit)
> > libavcodec.so.57(LIBAVCODEC_57)(64bit)
> > libavformat-ffmpeg.so.56()(64bit)
> > libavformat-ffmpeg.so.56(LIBAVFORMAT_FFMPEG_56)(64bit)
> > libavformat.so.54()(64bit)
> > libavformat.so.54(LIBAVFORMAT_54)(64bit)
> > libavformat.so.56()(64bit)
> > libavformat.so.56(LIBAVFORMAT_56)(64bit)
> > libavformat.so.57()(64bit)
> > libavformat.so.57(LIBAVFORMAT_57)(64bit)
> >
> > The problem is since libavcodec-ffmpeg does not exist installing this
> built
> > package is impossible (or cumbersome at best).
> >
> > It Requires either ffmpeg2 (libavcodec56) or ffmpeg3 (libavcoded57), so
> > most Linux distributions are covered. Even if a Linux distribution has
> > ffmpeg3 it will not install the package because of libavcodec-ffmpeg.
> >
> >
> > What part of the JavaFX Web module requires ffmpeg and libavcodec? I
> would
> > like to try using this to see if the application works on Linux. Perhaps
> > the libavcodec-ffmpeg is provided by some other package or other named
> > library.
> >
> > /Sverre
>
>


JavaFX 11 Web Module Linux Requires libavcodec-ffmpeg

2019-09-19 Thread Sverre Moe
Building an JavaFX application with the jpackage tools adds many additional
Linux RPM Requires.

Among these are libavcodec56 and libavcodec-ffmpeg56. It is ffmpeg2 that
has libavcodec56, but the libavcodec-ffmpeg is nowhere to be found. It does
not seem to exist.

If building an Java runtime image with the JavaFX 11 Web module, these are
among the RPM Requires added to the RPM package built by jpackage. One
could actually think it would be the media module that had these requires,
but no it doesn't.

The jpackage tool does not have any of these Require packages itself. It is
getting them from the javafx.web module. If I omit the javafx.web from the
java runtime image, these Requires are omitted from the built RPM package:

libavcodec-ffmpeg.so.56()(64bit)
libavcodec-ffmpeg.so.56(LIBAVCODEC_FFMPEG_56)(64bit)
libavcodec.so.54()(64bit)
libavcodec.so.54(LIBAVCODEC_54)(64bit)
libavcodec.so.56()(64bit)
libavcodec.so.56(LIBAVCODEC_56)(64bit)
libavcodec.so.57()(64bit)
libavcodec.so.57(LIBAVCODEC_57)(64bit)
libavformat-ffmpeg.so.56()(64bit)
libavformat-ffmpeg.so.56(LIBAVFORMAT_FFMPEG_56)(64bit)
libavformat.so.54()(64bit)
libavformat.so.54(LIBAVFORMAT_54)(64bit)
libavformat.so.56()(64bit)
libavformat.so.56(LIBAVFORMAT_56)(64bit)
libavformat.so.57()(64bit)
libavformat.so.57(LIBAVFORMAT_57)(64bit)

The problem is since libavcodec-ffmpeg does not exist installing this built
package is impossible (or cumbersome at best).

It Requires either ffmpeg2 (libavcodec56) or ffmpeg3 (libavcoded57), so
most Linux distributions are covered. Even if a Linux distribution has
ffmpeg3 it will not install the package because of libavcodec-ffmpeg.


What part of the JavaFX Web module requires ffmpeg and libavcodec? I would
like to try using this to see if the application works on Linux. Perhaps
the libavcodec-ffmpeg is provided by some other package or other named
library.

/Sverre


Bug in TreeTableView rendering

2019-08-26 Thread Sverre Moe
I think I have found a bug/regression with Java 11 regarding TreeTableView.
This has worked fine on JavaFX 8, but is messed up with JavaFX 11.
1) The arrow button is on the text
2) No text indentation levels: Each row (no matter the level) is at the
left edge of the TreeTableView.

I can file an issue at GitHub if this is a real bug/regression. I just
wanted to check first here.

TreeTableColumn column = new
TreeTableColumn<>("Column");
column.setCellValueFactory(param -> new ReadOnlyObjectWrapper<>(new
OurDataObjectLabel(param.getValue().getValue(;

We are using Label here so we can set StyleClass based on some information
in the OurDataObject.

class OurDataObject {
private String name;
public String getName() { return name; }
}

class AlsoOurDataObject extends OurDataObject {
public boolean isSomething() { ... }
}

class OurDataObjectLabel extends Label() {
public OurDataObjectLabel(OurDataObject ourDataObject) {
setText(ourDataObject.getName());
if (ourDataObject instanceof AlsoOurDataObject) {
if (((AlsoOurDataObject) ourDataObject).isSomething()) {
getStyleClass().add("style");
}
}
}
}

A workaround was to use OurDataObject for both types in the
TreeTableColumn, create a CellFactory to do what has been done in
OurDataObjectLabel and in addition to the CellValueFactory.

Code Example for reproducing the problem:
This is using a String instead of an Object as the data model for
simplicity.
I have attached a screenshot that illustrates this problem. Made with the
example code below.

import javafx.application.Application;
import javafx.beans.property.ReadOnlyObjectWrapper;
import javafx.scene.Scene;
import javafx.scene.control.TreeItem;
import javafx.scene.control.TreeTableColumn;
import javafx.scene.control.TreeTableView;
import javafx.scene.layout.StackPane;
import javafx.scene.text.Text;
import javafx.stage.Stage;

public class App extends Application {

public static void main(String[] args) {
App.launch(args);
}

@Override
public void start(Stage stage) throws Exception {
StackPane root = new StackPane();

TreeTableView treeTableView = new TreeTableView<>();
treeTableView.setShowRoot(false);
root.getChildren().add(treeTableView);

TreeTableColumn column = new
TreeTableColumn<>("Column");
column.setPrefWidth(200);
treeTableView.getColumns().add(column);

column.setCellValueFactory(param -> new ReadOnlyObjectWrapper<>(
new Text(param.getValue().getValue(;

TreeItem rootItem = new TreeItem<>("");
treeTableView.setRoot(rootItem);

TreeItem item1 = new TreeItem<>("LEVEL1");
item1.setExpanded(true);
rootItem.getChildren().add(item1);

TreeItem item2 = new TreeItem<>("LEVEL2");
item2.setExpanded(true);
item1.getChildren().add(item2);

TreeItem item3 = new TreeItem<>("LEVEL2_1");
item3.setExpanded(true);
item2.getChildren().add(item3);

Scene scene = new Scene(root, 250, 150);

stage.setTitle("JavaFX11");
stage.setScene(scene);
stage.show();
}
}


/Sverre


Re: Distributing JavaFX 11 Application

2019-02-20 Thread Sverre Moe
You could use the new jpackage to create a native runtime of your
application.
The jpackager is now targeted for JDK 13, but can still be used to create a
native Java 11 application.

You can download an EA build of JDK 13 with jpackage
http://jdk.java.net/jpackage/

You would need to build on each platform, Linux, Windows, Mac.

You mentioned you use Maven. When Java 9 came out I had already moved over
to Gradle, so not familiar with the maven configuration.
Here is a Gradle task to create a Java 11 runtime using jlink with the Java
11 jmods

task createRuntime(type: Exec) {
dependsOn installDist

inputs.dir(installDist.outputs.files.singleFile)
outputs.dir("${buildDir}/runtime")

doFirst {
delete "${buildDir}/runtime"
}

def libDir = new File(installDist.outputs.files.singleFile, "lib").path

commandLine '/usr/java/jdk-11/bin/jlink',
'--module-path', "/usr/java/jdk-11/jmods:${libDir}",
'--add-modules', 'eu.yourmodule.application',
'--output', "${buildDir}/runtime"
}

You then use this runtime with jpackage to create a native application
image or installer.

task createPackage(type: Exec) {
dependsOn createRuntime

commandLine '/usr/java/jdk-13/bin/jpackage', 'create-installer',
'--verbose',
'--force',
'--name', project.name,
'--app-version', project.version,
'--module', "${mainClassName}",
'--resource-dir', "${buildDir}/package",
'--runtime-image', "${buildDir}/runtime",
'--output', "${buildDir}/native"
}

/Sverre

Den ons. 20. feb. 2019 kl. 19:57 skrev Nicolas Therrien <
nicolas.therr...@motorolasolutions.com>:

> Hi!
>
> What is the proper way to create distributable packages of a JavaFx
> Application?
>
> I have a Java 11 application which I build as a module. The distribution
> includes a "modules" folder with all dependencies in it, and a script to
> launch the module.
>
> This assembly works if I build it on the same machine as I am going to be
> running it on. However, I realized that depending on which build agent the
> assembly is going to be created, the platform specific javafx dependencies
> may not match the target assembly. For example, if the build agent is a
> linux build agent, the windows and mac assembly contains linux javafx
> runtime.
>
> Maven will always pull the platform-specific libraries of the system it is
> running on.
>
> This was not a problem when JavaFx was part of the JDK since the correct
> runtime libraries were installed on the system already.
>
> What is the correct way to create a windows or linux package in a build
> platform independent way?
>
> I found an article which showed how to force maven to include all platforms
> as dependencies, but then I have to add dependency on each transitive
> library. Sounds like a lot of trouble for a simple task.
>
> How do you guys package your apps for various platforms?
>
> *Nicolas Therrien*
>
> Senior Software Developer
>
> *[image:
>
> https://www.motorolasolutions.com/content/dam/msi/images/logos/corporate/msiemailsignature.png]*
>
> *o*: +1.819.931.2053
>


Re: Filling the Packager gap

2018-12-14 Thread Sverre Moe
Den fre. 14. des. 2018 kl. 13:47 skrev Johan Vos :

> Hi Sverre,
>
> Scene Builder 11 is built using that backported packager, but not
> everything was working yet.
> It is not the intention to make a real product based on this backported
> code -- we just did it to fill the gap until the jpackage tool is available.
>
> My understanding is that once the jpackage tool is released, you should be
> able to use it to bundle Java(FX) 11 based apps.
>
> The first EA version of the jpackage tool is available now, so I think
> this is now the way forward: http://jdk.java.net/jpackage/
>
> - Johan
>

Thanks for the clarification. I have been looking through the source code
of your backported jpackager to gain some insight, and I should perhaps
instead be looking at the main source code for the jpackage.

I will start using this JDK12 build of jpackager and see if it has the same
issues regarding the bundle resources.
Perhaps also the core-libs-...@openjdk.java.net is the better place to
discuss jpackage on forward. I reported some issues with jpackage some time
ago that has been added to its JDK bugs list.

/Sverre


Re: Filling the Packager gap

2018-12-13 Thread Sverre Moe
Den ons. 19. sep. 2018 kl. 10:56 skrev Johan Vos :

> Hi,
>
> As promised, we looked into an interim solution for the packager-gap. Work
> for the new Java Packager (12?) is being done in the OpenJDK sandbox repo.
> We backported the required changes to an OpenJDK 11 mirror:
> https://github.com/johanvos/openjdk-mobile11/tree/packager
>
> With this, we created modified OpenJDK 11 builds that contain the packager
> (wrapper/exe + module including native library). They can be downloaded and
> tested/used at
>
> http://download2.gluonhq.com/jpackager/11/jdk.packager-linux.zip
> http://download2.gluonhq.com/jpackager/11/jdk.packager-osx.zip
> http://download2.gluonhq.com/jpackager/11/jdk.packager-windows.zip
>
> For Windows, you have to unzip the bundle in the same directory as the JDK,
> as the packager wrapper expect to find the java binary at the same level.
>
> Note that these are not products. We use them internally to create
> installers (e.g. we're using them for Scene Builder 11 and that works
> fine), and they do what we expect them to do, but there are no guarantees
> of course so at least for now I recommend using them in development only
> (or even better, look at the changes and contribute to
> https://bugs.openjdk.java.net/browse/JDK-8200758 or to this backport)
>
> - Johan
>


Has anyone been able to use jpackager with bundle resources?
The jpackager says to put these on the class path
Using default package resource [menu icon]  (add package/linux/app.png to
the class path to customize)
Using default package resource [Menu shortcut descriptor]  (add
package/linux/app.desktop to the class path to customize)
Using default package resource [RPM spec file]  (add package/linux/app.spec
to the class path to customize)

I have mentioned on corejdk mailinglist that the help output should mention
how to do this.
The jpackager does not support any classpath argument. The old javapackager
did have an argument for setting classpath.
Editing the jpackager bash script to include "-cp
/path/to/project/build/deploy/" does not work.
Considering that jdk.packager is a java module, I even tried to add the
directory where package/linux is to the module-path.
--module-path "/path/to/project/build/deploy":${JAVA_PACKAGER_PATH}

It seems jpackager has been re-targeted for Java 13. I just hope it will
continue to be usable for package Java 11 applications. The backported
jpackager is working fine except for this resource problem.

/Sverre


Re: Filling the Packager gap

2018-11-11 Thread Sverre Moe
Johan,
has there been any new updates to jpackager in JDK12 since you backported
it?

I have found some problems with jpackager. Perhaps they might have been
fixed later.
I mentioned this to core-list-dev mailinglist on jpackager thread.

1)
The control file for debian package does not set correct description

--name test
--description This is a Test Application

/tmp/jdk.packager607148779833718376/linux/control
Package: test
Description: test

The RPM gets it correctly
Summary : test
Description :
This is a Test Application

2)
Category is not set on either DEB or RPM
  --category
  Category or group of the application.
--category "Some/Category/Application"
Group: Unspecified
Section: unknown

Perhaps I have misunderstood what this category is for, because I see this
it is set in the generated application.desktop, but It should definitely
also be set in the RPM and DEB.

/Sverre

Den ons. 19. sep. 2018 kl. 10:56 skrev Johan Vos :

> Hi,
>
> As promised, we looked into an interim solution for the packager-gap. Work
> for the new Java Packager (12?) is being done in the OpenJDK sandbox repo.
> We backported the required changes to an OpenJDK 11 mirror:
> https://github.com/johanvos/openjdk-mobile11/tree/packager
>
> With this, we created modified OpenJDK 11 builds that contain the packager
> (wrapper/exe + module including native library). They can be downloaded and
> tested/used at
>
> http://download2.gluonhq.com/jpackager/11/jdk.packager-linux.zip
> http://download2.gluonhq.com/jpackager/11/jdk.packager-osx.zip
> http://download2.gluonhq.com/jpackager/11/jdk.packager-windows.zip
>
> For Windows, you have to unzip the bundle in the same directory as the JDK,
> as the packager wrapper expect to find the java binary at the same level.
>
> Note that these are not products. We use them internally to create
> installers (e.g. we're using them for Scene Builder 11 and that works
> fine), and they do what we expect them to do, but there are no guarantees
> of course so at least for now I recommend using them in development only
> (or even better, look at the changes and contribute to
> https://bugs.openjdk.java.net/browse/JDK-8200758 or to this backport)
>
> - Johan
>


Re: Using the jpackager

2018-11-09 Thread Sverre Moe
Den fre. 9. nov. 2018 kl. 16:22 skrev Rachel Greenham :

> Build the JRE needed using JLink, supplying the needed modules. The
> JLink task referenced is actually written in Java and wraps
> ToolProvider, but it's pretty trivial and could almost-more-easily be
> done with an Exec. NB: The JLink task as written puts it in a "java"
> subdirectory of the given destinationDir.
>
>  task buildAdminJre(type: JLink) {
>  description 'Build the Client JRE for ' + nativeOsName
>  destinationDir
> rootProject.file("deploy/bindist/"+requiredJava.merusNativeAdminJreName)
>  modules = [
>  'java.base',
>  'java.desktop',
>  'java.xml',
>  'java.logging'
>  ]
>  bindServices false
>  modulePath =
> [System.properties.getProperty('java.home')+File.separatorChar+'jmods']
>  noHeaderFiles true
>  noManPages true
>  stripDebug true
>  }
>
>
> Which gradle plugin are you using that gives you type JLink?


Re: Maybe a TitledPane bug

2018-11-01 Thread Sverre Moe
I am now not so sure it is a bug. Seems the problem is the hover pseudo
state that resets the background color.
>From modena.css
.titled-pane > .title:hover {
-fx-color: -fx-hover-base;
}

Try this example:

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.TitledPane;
import javafx.scene.control.ToggleButton;
import javafx.scene.layout.Background;
import javafx.scene.layout.BackgroundFill;
import javafx.scene.layout.Region;
import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
import javafx.stage.Stage;

public class TitledPaneApplication extends Application {

public static void main(String[] args) {
launch(args);
}

@Override
public void start(Stage primaryStage) throws Exception {
final StackPane root = new StackPane();

final TitledPane titledPane = new TitledPane();
titledPane.setText("Title");
titledPane.setAnimated(false);
titledPane.setCollapsible(false);
root.getChildren().add(titledPane);

final ToggleButton button = new ToggleButton("Change");
button.setOnAction(event -> {
boolean selected = button.isSelected();
final Region titleNode = (Region) titledPane.lookup(".title");
if (selected) {
titleNode.setBackground(new Background(new
BackgroundFill(Color.GREEN, null, null)));
} else {
titleNode.setBackground(null);
}
});

button.setSelected(false);
titledPane.setContent(button);

final Scene scene = new Scene(root, 400, 400);

scene.getStylesheets().add(getClass().getResource("light.css").toExternalForm());

primaryStage.setScene(scene);
primaryStage.setTitle("TestApplication");
primaryStage.show();
}

}

Here is the CSS content for light.css
.titled-pane > .title {
-fx-color: rgb(220, 220, 220);
}

/Sverre


Den tor. 1. nov. 2018 kl. 14:45 skrev David Grieve :

> It's hard to tell without some short, self-contained, correct example.
> This sample I crafted here doesn't reproduce the issue.
>
> @Override public void start(Stage primaryStage) {
>
>  final TitledPane titledPane =new TitledPane("Button Pane",new
> Button("Button"));
>  final HBox root =new HBox();
>  root.getChildren().add(titledPane);
>
>  primaryStage.setTitle("Maybe a TitledPane bug");
>  primaryStage.setScene(new Scene(root,300,250));
>  primaryStage.show();
>
>  final Region titleNode = (Region)titledPane.lookup("*.title");
>  titleNode.setBackground(new Background(new
> BackgroundFill(Color.GREEN,null,null)));
> }
>
>
>
> On 10/31/18 6:58 PM, Sverre Moe wrote:
> > I am not sure if I have stumbled upon a bug in JavaFX, or perhaps it is
> > simply something I am doing wrong.
> >
> > After setting the TitledPane title background programmatically, then when
> > hovering the background color is reset to the previous value from CSS.
> > I get same behavior in both JavaFX 8 and JavaFX 11.
> >
> > Color color = Color.valueOf("#00ff11");
> > titleNode.setBackground(new Background(new BackgroundFill(color, null,
> > null)));
> >
> > titleNode.setStyle("-fx-background-color:#00ff11;");
> >
> > Setting the style property seems to work, but why doesn't the
> > programmatically approach work?
> >
> >
> https://stackoverflow.com/questions/53083005/javafx-titledpane-changed-title-background-is-reset-on-mouse-entered/
> >
> > /Sverre
>
>


Maybe a TitledPane bug

2018-10-31 Thread Sverre Moe
I am not sure if I have stumbled upon a bug in JavaFX, or perhaps it is
simply something I am doing wrong.

After setting the TitledPane title background programmatically, then when
hovering the background color is reset to the previous value from CSS.
I get same behavior in both JavaFX 8 and JavaFX 11.

Color color = Color.valueOf("#00ff11");
titleNode.setBackground(new Background(new BackgroundFill(color, null,
null)));

titleNode.setStyle("-fx-background-color:#00ff11;");

Setting the style property seems to work, but why doesn't the
programmatically approach work?

https://stackoverflow.com/questions/53083005/javafx-titledpane-changed-title-background-is-reset-on-mouse-entered/

/Sverre


Re: openJFX11 app deployed in browser?

2018-10-23 Thread Sverre Moe
Den tir. 23. okt. 2018 kl. 07:49 skrev Martin Ciglan :

> Thank you, I'll take a look.
>
> If you say it works up to Java 10, how does it look with browser support.
>
> Are you able to run JavaFX app in latest versions of Chrome or Firefox?
> Thanks.
>
> You don't have to contend with browser support. The application does not
run within the browser, but with Java.
The Java Web Start is about deployment. You download an JNLP file, which
you then execute using the Java Web Start utility installed with the JDK.
The application still runs in a java process started by the Java Web Start,
after it has downloaded all resources for the application.

/Sverre


Re: openJFX11 app deployed in browser?

2018-10-22 Thread Sverre Moe
You also mentioned a "up-to-date" manual.
Take a look at javafx-gradle-plugin
https://github.com/FibreFoX/javafx-gradle-plugin
You can use it to build an JavaFX 8 application with Java Web Start
deployment.

/Sverre


Den man. 22. okt. 2018 kl. 19:20 skrev Sverre Moe :

> Yes it still works with Java 8 and up to Java 10. The Java Web Start was
> removed in Java 11.
>
> /Sverre
>
>
> Den man. 22. okt. 2018 kl. 19:15 skrev Martin Ciglan :
>
>> OK.
>>
>> Is it still possible to do it with Java8?
>> Dňa 22/10/2018 o 19:14 Sverre Moe napísal(a):
>>
>> Deployment by web browser is no longer possible with Java 11 as they
>> removed Java Web Start.
>> If you want your JavaFX application to run in a web browser, take a look
>> at JPro https://www.jpro.one/.
>>
>> /Sverre
>>
>>
>> Den man. 22. okt. 2018 kl. 14:53 skrev Martin Ciglan :
>>
>>> Hi
>>>
>>> I am developing openJFX11 desktop client application and I would like to
>>> deploy it to browser, to be able to have 2 options - thick and thin
>>> client.
>>>
>>> Is there any up-to-date manual how to do it? Many thanks
>>>
>>> --
>>>
>>> Best Regards
>>>
>>>   Martin
>>>
>>> --
>>
>> S pozdravom
>>
>>  Martin
>>
>>


Re: openJFX11 app deployed in browser?

2018-10-22 Thread Sverre Moe
Yes it still works with Java 8 and up to Java 10. The Java Web Start was
removed in Java 11.

/Sverre


Den man. 22. okt. 2018 kl. 19:15 skrev Martin Ciglan :

> OK.
>
> Is it still possible to do it with Java8?
> Dňa 22/10/2018 o 19:14 Sverre Moe napísal(a):
>
> Deployment by web browser is no longer possible with Java 11 as they
> removed Java Web Start.
> If you want your JavaFX application to run in a web browser, take a look
> at JPro https://www.jpro.one/.
>
> /Sverre
>
>
> Den man. 22. okt. 2018 kl. 14:53 skrev Martin Ciglan :
>
>> Hi
>>
>> I am developing openJFX11 desktop client application and I would like to
>> deploy it to browser, to be able to have 2 options - thick and thin
>> client.
>>
>> Is there any up-to-date manual how to do it? Many thanks
>>
>> --
>>
>> Best Regards
>>
>>   Martin
>>
>> --
>
> S pozdravom
>
>  Martin
>
>


Re: openJFX11 app deployed in browser?

2018-10-22 Thread Sverre Moe
Deployment by web browser is no longer possible with Java 11 as they
removed Java Web Start.
If you want your JavaFX application to run in a web browser, take a look at
JPro https://www.jpro.one/.

/Sverre


Den man. 22. okt. 2018 kl. 14:53 skrev Martin Ciglan :

> Hi
>
> I am developing openJFX11 desktop client application and I would like to
> deploy it to browser, to be able to have 2 options - thick and thin client.
>
> Is there any up-to-date manual how to do it? Many thanks
>
> --
>
> Best Regards
>
>   Martin
>
>


Re: Window opening glitch on ubuntu 18.04

2018-10-11 Thread Sverre Moe
Den tor. 11. okt. 2018 kl. 19:32 skrev Sverre Moe :

> Den tor. 11. okt. 2018 kl. 19:17 skrev Kevin Rushforth <
> kevin.rushfo...@oracle.com>:
>
>> https://bugs.openjdk.java.net/browse/JDK-8212060
>>
>>
> I have not noticed this on OpenSUSE Leap 15. The window pop up right in
> the center of my screen in an instant.
> NVIDIA graphics with NVIDIA proprietary drivers.
>
> Running my modular test application on Java 11 and JavaFX 11.
> https://github.com/DJViking/FxMovies.git
>
> /Sverre
>
>
I did however noticed for a split second that a dialog I opened was in the
upper left corner. It was hardly noticeable.

/Sverre


Re: Window opening glitch on ubuntu 18.04

2018-10-11 Thread Sverre Moe
Den tor. 11. okt. 2018 kl. 19:17 skrev Kevin Rushforth <
kevin.rushfo...@oracle.com>:

> https://bugs.openjdk.java.net/browse/JDK-8212060
>
>
I have not noticed this on OpenSUSE Leap 15. The window pop up right in the
center of my screen in an instant.
NVIDIA graphics with NVIDIA proprietary drivers.

Running my modular test application on Java 11 and JavaFX 11.
https://github.com/DJViking/FxMovies.git

/Sverre


Re: Filling the Packager gap

2018-10-05 Thread Sverre Moe
I am having some problems accessing the jpackager from symlinks, seems it
cannot find the jdk.packager.jar

/usr/bin/jpackager -> /etc/alternatives/jpackager
/etc/alternatives/jpackager -> /usr/java/jpackager/jpackager

:/ # jpackager --help
Error occurred during initialization of boot layer
java.lang.module.FindException: Module jdk.packager not found

Though accessing the jpackager directly works fine:
/usr/java/jpackager/jpackager

Any suggestion what the problem might be and how to remedy this?

/Sverre


Re: JavaFX 11 on Android

2018-10-04 Thread Sverre Moe
Den tor. 4. okt. 2018 kl. 19:01 skrev Johan Vos :

> Hi,
>
> I worked from the openjfx/develop repository and created a version that
> works on Android (will work on iOS soon).
> This required some changes, as we're running on top of the Android VM,
> which is not really Java (not even close).
>
> How so? Didn't Google replace their own Java implementation with OpenJDK?
That switch was made in Android N two years ago.
Maybe I am off base here. I haven't been fiddling around Android much for
some years.

/Sverre


Re: Later OpenJFX Compatibilty with JDK 11 LTS

2018-09-27 Thread Sverre Moe
Den tor. 27. sep. 2018 kl. 22:38 skrev Jan Tosovsky :

> On 2018-09-27 Sverre Moe wrote:
> > Den tor. 27. sep. 2018 kl. 20:06 skrev Johan Vos  >:
> >
> > > 3. Stick with an LTS release and get commercial support to get updates
> > >
> > Thanks. Option 3 looks very interesting. It would allow us to deliver a
> > stable application on the current LTS while the same time get updates on
> > JavaFX.
>
> If I understand correctly, there will be 4th option in near future:
> 4. Bundle module based app with JDK modules you need
>
> From that moment you are becoming independent on any future FX and JDK
> releases. Especially handy if your app doesn't evolve much and it is
> distributed in controlled environment (several users within company).
> Unless your app becomes famous, I don't think it will attract attackers to
> employ any vulnerabilities found in those older versions as time goes.
>
> Jan
>
> Being a SCADA application, keeping it stable and secure is very important,
even though our application is not famous or known beyond the industry we
deliver it to.

/Sverre


Re: Later OpenJFX Compatibilty with JDK 11 LTS

2018-09-27 Thread Sverre Moe
Den tor. 27. sep. 2018 kl. 20:06 skrev Johan Vos :

> We would probably target the Java 11 because it is LTS. Changes to JDK will
>> be backported up to september 2023 by the community. If we are interested
>> in getting updates on OpenJFX also we would then need to always upgrade
>> it.
>> I reckon there will not be a OpenJFX 11 LTS.
>>
>
> Actually, there is. See
> https://gluonhq.com/javafx-11-release-and-support-plans/ for commercial
> support for JavaFX 11 LTS.
>
> Basically, you have 3 options:
> 1. Move along with the latest and greatest JavaFX releases (free)
> 2. Stick with a given release (free, unsupported)
> 3. Stick with an LTS release and get commercial support to get updates
>
> - Johan
>

Thanks. Option 3 looks very interesting. It would allow us to deliver a
stable application on the current LTS while the same time get updates on
JavaFX.

I have not seen Oracle offering an JavaFX 11 LTS, just the JDK 11 LTS. Is
Gluon the only one with a JavaFX 11 LTS?

/Sverre


Later OpenJFX Compatibilty with JDK 11 LTS

2018-09-27 Thread Sverre Moe
On tor. 27. sep. 2018 kl. 18:18 wrote Kevin Rushforth <
kevin.rushfo...@oracle.com>:
>
> I missed seeing the swing exception in your earlier message. Yes, the
Swing issue is a known problem in openjfx11, JDK-8210759 [1], and is
documented in the release notes [2].
>
> It will be fixed in openjfx12 just as soon as I push the fix for
JDK-8210092 [3] later today (the review was just finished earlier this
morning). This was one of the bugs waiting until the fix requiring JDK 11
for openjfx 12 was pushed.
>
> -- Kevin
>
> [1] https://bugs.openjdk.java.net/browse/JDK-8210759
> [2]
https://github.com/javafxports/openjdk-jfx/blob/jfx-11/doc-files/release-notes-11.md#known-issues
> [3] https://bugs.openjdk.java.net/browse/JDK-8210092
>

On tor. 27. sep. 2018 kl. 18:50 wrote Kevin Rushforth <
kevin.rushfo...@oracle.com>:
>
> Backporting this fix would mean an openjfx 11.x update release would stop
building or running with JDK 10. Not something that would be done lightly,
since it would break the "FX N runs with JDK N-1" policy we have been
discussing lately. There is an easy workaround for that bug that needs to
be done when running "jlink" to create your image. It's documented in the
release notes.
>
> -- Kevin

How can we continue to upgrade to newer OpenJFX as time goes by. Will the
later OpenJFX 13+ work with JDK 11 or is it just "FX N run JDK N-1" (one
version backward support)?

We would probably target the Java 11 because it is LTS. Changes to JDK will
be backported up to september 2023 by the community. If we are interested
in getting updates on OpenJFX also we would then need to always upgrade it.
I reckon there will not be a OpenJFX 11 LTS.

/Sverre


Re: Filling the Packager gap

2018-09-27 Thread Sverre Moe
Den tor. 27. sep. 2018 kl. 18:50 skrev Kevin Rushforth <
kevin.rushfo...@oracle.com>:

> You mean openjfx11, not JDK 11, right? Backporting this fix would mean an
> openjfx 11.x update release would stop building or running with JDK 10. Not
> something that would be done lightly, since it would break the "FX N runs
> with JDK N-1" policy we have been discussing lately. There is an easy
> workaround for that bug that needs to be done when running "jlink" to
> create your image. It's documented in the release notes.
>
> -- Kevin
>

Yes, I meant OpenJFX 11. I will take a look at the release notes to find
the workaround.

/Sverre


Re: Filling the Packager gap

2018-09-27 Thread Sverre Moe
Any chance of getting the fix for JDK-8210759 backported to JDK 11? I
remember reading the OpenJDK will be patched up to 2023 (while Oracle JDK
will be patched up to 2026).
We deliver software that our customers could be running for a decade or
more. The LTS is the version we will then target when we move away from
Java 8.

/Sverre

Den tor. 27. sep. 2018 kl. 18:18 skrev Kevin Rushforth <
kevin.rushfo...@oracle.com>:

> I missed seeing the swing exception in your earlier message. Yes, the
> Swing issue is a known problem in openjfx11, JDK-8210759 [1], and is
> documented in the release notes [2].
>
> It will be fixed in openjfx12 just as soon as I push the fix for
> JDK-8210092 [3] later today (the review was just finished earlier this
> morning). This was one of the bugs waiting until the fix requiring JDK 11
> for openjfx 12 was pushed.
>
> As for your other question, yes, if you add the javafx.* modules to your
> Java runtime image, then that runtime image contains the javafx.* modules.
> If your application were modularized, then the Java runtime image would
> contain your application, too.
>
> -- Kevin
>
> [1] https://bugs.openjdk.java.net/browse/JDK-8210759
> [2]
> https://github.com/javafxports/openjdk-jfx/blob/jfx-11/doc-files/release-notes-11.md#known-issues
> [3] https://bugs.openjdk.java.net/browse/JDK-8210092
>
>
> On 9/27/2018 9:03 AM, Sverre Moe wrote:
>
> Without the reliance on javafx-swing I was able to create an image,
> package and execute my test application.
> Is the Swing problem a known bug in JavaFX 11?
>
> The jlink runtime image I reckon now also contains the JavaFX modules?
> Seems unnecessary when they already are dependencies.
>
> /Sverre
>
> Den tor. 27. sep. 2018 kl. 10:42 skrev Sverre Moe :
>
>> Den tor. 27. sep. 2018 kl. 00:49 skrev Kevin Rushforth <
>> kevin.rushfo...@oracle.com>:
>>
>>> No, jlink won't link in a non-modular application. So the steps are:
>>>
>>> 1) Run jlink to create a Java runtime image, possibly stripped down, and
>>> include the javafx.* modules you need
>>> 2) Run jpackager to package your non-modular application with the above
>>> Java runtime image.
>>>
>>> -- Kevin
>>>
>>
>> So we have to create the image with the jlink first before we use
>> jpackager, and we have to link in with the javafx modules. We cannot use
>> the javafx dependencies in the project?
>>
>> jlink --add-modules=ALL-SYSTEM --output image
>> Error: Module ALL-SYSTEM not found
>>
>> The just to make sure we have everything we need I add the actual modules
>> jlink --add-modules=java.base --add-modules=java.desktop
>> --add-modules=java.net.http --add-modules=java.xml
>> --add-modules=java.prefs --add-modules=java.logging --output image
>>
>> Linking in with the JavaFX jmods from Gluon:
>> jlink --add-modules=java.base --add-modules=java.desktop
>> --add-modules=java.net.http --add-modules=java.xml
>> --add-modules=java.prefs --add-modules=java.logging --module-path
>> /usr/java/javafx-jmods-11/ --add-modules=javafx.base
>> --add-modules=javafx.controls --add-modules=javafx.fxml
>> --add-modules=javafx.graphics --add-modules=javafx.web
>> --add-modules=javafx.media --add-modules=javafx.swing --output image
>>
>> I managed to build our Java 8 project with Java 11, using the JavaFX
>> dependencies.
>> Then using jpackager with the runtime image from jlink
>> /usr/java/jpackager/jpackager create-installer --input
>> build/distributions/application-1.0.0-SNAPSHOT/lib/ --output outputDir
>> --runtime-image image/ --verbose --echo-mode --main-jar
>> application-1.0.0-SNAPSHOT.jar
>>
>> Running the application image from jpackager
>> First try:
>> I thought I had added all necessary modules to the runtime image, but I
>> needed one more, java.management.
>>
>> Second try:
>> InteropFactory: cannot load
>> com.sun.javafx.embed.swing.newimpl.InteropFactoryN
>> Exception in thread "GUIBuilderWorker" java.lang.IllegalAccessError:
>> class com.sun.javafx.embed.swing.oldimpl.SwingNodeInteropO (in module
>> javafx.swing) cannot access class sun.swing.JLightweightFrame (in module
>> java.desktop) because module java.desktop does not export sun.swing to
>> module javafx.swing
>>at
>> javafx.swing/com.sun.javafx.embed.swing.oldimpl.SwingNodeInteropO.(SwingNodeInteropO.java:71)
>>at
>> javafx.swing/com.sun.javafx.embed.swing.oldimpl.InteropFactoryO.createSwingNodeImpl(InteropFactoryO.java:42)
>>at
>> javafx.swing/javafx.embed.swing.SwingNode.(SwingNode.java:271)
>>at no.company.application.fx.MySwingComponent.initNode(
>> MySwingComponent.java:155)
>>
>> The module java.desktop should include the AWT/Swing.
>>
>> At least I now have been able to create an native application using both
>> jlink and the new jpackager.
>>
>> /Sverre
>>
>
>


Re: Filling the Packager gap

2018-09-27 Thread Sverre Moe
Without the reliance on javafx-swing I was able to create an image, package
and execute my test application.
Is the Swing problem a known bug in JavaFX 11?

The jlink runtime image I reckon now also contains the JavaFX modules?
Seems unnecessary when they already are dependencies.

/Sverre

Den tor. 27. sep. 2018 kl. 10:42 skrev Sverre Moe :

> Den tor. 27. sep. 2018 kl. 00:49 skrev Kevin Rushforth <
> kevin.rushfo...@oracle.com>:
>
>> No, jlink won't link in a non-modular application. So the steps are:
>>
>> 1) Run jlink to create a Java runtime image, possibly stripped down, and
>> include the javafx.* modules you need
>> 2) Run jpackager to package your non-modular application with the above
>> Java runtime image.
>>
>> -- Kevin
>>
>
> So we have to create the image with the jlink first before we use
> jpackager, and we have to link in with the javafx modules. We cannot use
> the javafx dependencies in the project?
>
> jlink --add-modules=ALL-SYSTEM --output image
> Error: Module ALL-SYSTEM not found
>
> The just to make sure we have everything we need I add the actual modules
> jlink --add-modules=java.base --add-modules=java.desktop
> --add-modules=java.net.http --add-modules=java.xml
> --add-modules=java.prefs --add-modules=java.logging --output image
>
> Linking in with the JavaFX jmods from Gluon:
> jlink --add-modules=java.base --add-modules=java.desktop
> --add-modules=java.net.http --add-modules=java.xml
> --add-modules=java.prefs --add-modules=java.logging --module-path
> /usr/java/javafx-jmods-11/ --add-modules=javafx.base
> --add-modules=javafx.controls --add-modules=javafx.fxml
> --add-modules=javafx.graphics --add-modules=javafx.web
> --add-modules=javafx.media --add-modules=javafx.swing --output image
>
> I managed to build our Java 8 project with Java 11, using the JavaFX
> dependencies.
> Then using jpackager with the runtime image from jlink
> /usr/java/jpackager/jpackager create-installer --input
> build/distributions/application-1.0.0-SNAPSHOT/lib/ --output outputDir
> --runtime-image image/ --verbose --echo-mode --main-jar
> application-1.0.0-SNAPSHOT.jar
>
> Running the application image from jpackager
> First try:
> I thought I had added all necessary modules to the runtime image, but I
> needed one more, java.management.
>
> Second try:
> InteropFactory: cannot load
> com.sun.javafx.embed.swing.newimpl.InteropFactoryN
> Exception in thread "GUIBuilderWorker" java.lang.IllegalAccessError: class
> com.sun.javafx.embed.swing.oldimpl.SwingNodeInteropO (in module
> javafx.swing) cannot access class sun.swing.JLightweightFrame (in module
> java.desktop) because module java.desktop does not export sun.swing to
> module javafx.swing
>at
> javafx.swing/com.sun.javafx.embed.swing.oldimpl.SwingNodeInteropO.(SwingNodeInteropO.java:71)
>
>at
> javafx.swing/com.sun.javafx.embed.swing.oldimpl.InteropFactoryO.createSwingNodeImpl(InteropFactoryO.java:42)
>
>at
> javafx.swing/javafx.embed.swing.SwingNode.(SwingNode.java:271)
>at no.company.application.fx.MySwingComponent.initNode(
> MySwingComponent.java:155)
>
> The module java.desktop should include the AWT/Swing.
>
> At least I now have been able to create an native application using both
> jlink and the new jpackager.
>
> /Sverre
>


Re: Filling the Packager gap

2018-09-27 Thread Sverre Moe
Den tor. 27. sep. 2018 kl. 00:49 skrev Kevin Rushforth <
kevin.rushfo...@oracle.com>:

> No, jlink won't link in a non-modular application. So the steps are:
>
> 1) Run jlink to create a Java runtime image, possibly stripped down, and
> include the javafx.* modules you need
> 2) Run jpackager to package your non-modular application with the above
> Java runtime image.
>
> -- Kevin
>

So we have to create the image with the jlink first before we use
jpackager, and we have to link in with the javafx modules. We cannot use
the javafx dependencies in the project?

jlink --add-modules=ALL-SYSTEM --output image
Error: Module ALL-SYSTEM not found

The just to make sure we have everything we need I add the actual modules
jlink --add-modules=java.base --add-modules=java.desktop
--add-modules=java.net.http --add-modules=java.xml --add-modules=java.prefs
--add-modules=java.logging --output image

Linking in with the JavaFX jmods from Gluon:
jlink --add-modules=java.base --add-modules=java.desktop
--add-modules=java.net.http --add-modules=java.xml --add-modules=java.prefs
--add-modules=java.logging --module-path /usr/java/javafx-jmods-11/
--add-modules=javafx.base --add-modules=javafx.controls
--add-modules=javafx.fxml --add-modules=javafx.graphics
--add-modules=javafx.web --add-modules=javafx.media
--add-modules=javafx.swing --output image

I managed to build our Java 8 project with Java 11, using the JavaFX
dependencies.
Then using jpackager with the runtime image from jlink
/usr/java/jpackager/jpackager create-installer --input
build/distributions/application-1.0.0-SNAPSHOT/lib/ --output outputDir
--runtime-image image/ --verbose --echo-mode --main-jar
application-1.0.0-SNAPSHOT.jar

Running the application image from jpackager
First try:
I thought I had added all necessary modules to the runtime image, but I
needed one more, java.management.

Second try:
InteropFactory: cannot load
com.sun.javafx.embed.swing.newimpl.InteropFactoryN
Exception in thread "GUIBuilderWorker" java.lang.IllegalAccessError: class
com.sun.javafx.embed.swing.oldimpl.SwingNodeInteropO (in module
javafx.swing) cannot access class sun.swing.JLightweightFrame (in module
java.desktop) because module java.desktop does not export sun.swing to
module javafx.swing
   at
javafx.swing/com.sun.javafx.embed.swing.oldimpl.SwingNodeInteropO.(SwingNodeInteropO.java:71)

   at
javafx.swing/com.sun.javafx.embed.swing.oldimpl.InteropFactoryO.createSwingNodeImpl(InteropFactoryO.java:42)

   at
javafx.swing/javafx.embed.swing.SwingNode.(SwingNode.java:271)
   at no.company.application.fx.MySwingComponent.initNode(
MySwingComponent.java:155)

The module java.desktop should include the AWT/Swing.

At least I now have been able to create an native application using both
jlink and the new jpackager.

/Sverre


Re: Filling the Packager gap

2018-09-26 Thread Sverre Moe
I have tried this jpackager a bit. It is working fine packaging a Java
modular project.
However it fails to package a none modular project. I modified my project
and removed the modularization and tried again to see if it would work to
package our legacy Java 8 project (though now built with JDK 11 and with
dependencies on openjfx 11).

I was under the impression that the jpackager should also work to package
non-modular projects.

The Gradle distribution task produces an tar archive with all the
dependencies and my own JAR, which I am using as input to the jpackager.

This produces the RPM for the modular project:
sverre@mintaka:~/workspace/movies/build/distributions/movies-1.0-SNAPSHOT/lib>
~/Downloads/jdk.packager-linux/jpackager create-installer --output outputDir
--verbose --echo-mode --module-path . --module
no.smeaworks.movies/no.smeaworks.movies.MoviesApplication

Using the jpackager to package non modular project:
sverre@mintaka:~/workspace/movies-java11/build/distributions/movies-1.0-SNAPSHOT>
~/Downloads/jdk.packager-linux/jpackager create-installer --input lib --output
outputDir --verbose --echo-mode --class
no.smeaworks.movies.MoviesApplication --main-jar movies-1.0-SNAPSHOT.jar


ECHO-MODE: Running [rpmbuild, --version]

"Adding modules: [] to runtime image."

ECHO-MODE: Running jlink [
--output =
/tmp/jdk.packager8937818818558013564/images/linux-rpm.image/movies/runtime
--module-path = [/usr/lib64/jvm/java-11-openjdk-11/jmods]
--add-modules = []
--limit-modules = []
--exclude-files = .*\.diz
--strip-native-commands = false
]
/tmp/jdk.packager8937818818558013564/images/linux-rpm.image/movies/runtime
Exception: jdk.tools.jlink.plugin.PluginException: java.io.IOException:
jdk.tools.jlink.plugin.PluginException: ModuleTarget attribute is missing
for java.base module
Config files are saved to /tmp/jdk.packager8937818818558013564/linux. Use
them to customize package.
Exception in thread "main" jdk.packager.internal.PackagerException: Error:
Bundler "RPM Bundle" (rpm) failed to produce a bundle.
   at
jdk.packager/jdk.packager.internal.Arguments.generateBundle(Arguments.java:642)

   at
jdk.packager/jdk.packager.internal.Arguments.processArguments(Arguments.java:582)

   at jdk.packager/jdk.packager.Main.run(Main.java:71)
   at jdk.packager/jdk.packager.Main.main(Main.java:47)


Is my presumption wrong that it should package also non modular projects,
or am I missing some runtime flags to jpackager?

Johan, you mentioned that Gluon is using this to package SceneBuilder 11. I
reckon that Gluon has yet to modularize SceneBuilder? Can you provide some
insight how you use jpackage to build the project? I could not find
anything on it in the Gluon SceneBuilder GitHub repository.

/Sverre

Den ons. 19. sep. 2018 kl. 10:56 skrev Johan Vos :

> Hi,
>
> As promised, we looked into an interim solution for the packager-gap. Work
> for the new Java Packager (12?) is being done in the OpenJDK sandbox repo.
> We backported the required changes to an OpenJDK 11 mirror:
> https://github.com/johanvos/openjdk-mobile11/tree/packager
>
> With this, we created modified OpenJDK 11 builds that contain the packager
> (wrapper/exe + module including native library). They can be downloaded and
> tested/used at
>
> http://download2.gluonhq.com/jpackager/11/jdk.packager-linux.zip
> http://download2.gluonhq.com/jpackager/11/jdk.packager-osx.zip
> http://download2.gluonhq.com/jpackager/11/jdk.packager-windows.zip
>
> For Windows, you have to unzip the bundle in the same directory as the JDK,
> as the packager wrapper expect to find the java binary at the same level.
>
> Note that these are not products. We use them internally to create
> installers (e.g. we're using them for Scene Builder 11 and that works
> fine), and they do what we expect them to do, but there are no guarantees
> of course so at least for now I recommend using them in development only
> (or even better, look at the changes and contribute to
> https://bugs.openjdk.java.net/browse/JDK-8200758 or to this backport)
>
> - Johan
>


Re: Cross-platform JavaFX 11 deployment

2018-09-20 Thread Sverre Moe
An all-in-one solution does exist when using OpenJFX as an SDK instead as
dependencies from Maven/Gradle.

There was a discussion about empty JARs here on the mailingslist. A problem
it seemed to be with Gradle and Eclipse

The Gradle build instruction for Java 11 suggest setting platform as a
classifier, thus taking only the one from the platform.
compile "org.openjfx:javafx-base:11:${platform}"
compile group: "org.openjfx", name: "javafx-base", version: "11",
classifier: platform
https://openjfx.io/openjfx-docs/#gradle

Den tor. 20. sep. 2018 kl. 16:20 skrev Geir Helleloid <
geir.hellel...@gmail.com>:

> I am working on moving my company's codebase from Java 8 to Java 11.
> Our build/deployment pipeline uses Maven, Jenkins, an internal Nexus
> repository, and custom deployment code. We deploy our software to
> multiple platforms (Linux, Windows, and Mac).
>
> I am wondering how to handle the JavaFX 11 dependencies for
> cross-platform deployment. I cannot just declare a dependency on (for
> example) org.openjfx:javafx-graphics:11 in our poms; the Jenkins build
> will only pull in the platform-specific
> org.openjfx:javafx-graphics:11:linux dependency, and deployment from
> Nexus to Windows or Mac will not include
> org.openjfx:javafx-graphics:11:win or
> org.openjfx:javafx-graphics:11:mac.
>
> I could explicitly declare org.openjfx:javafx-graphics:11:linux,
> org.openjfx:javafx-graphics:11:win, AND
> org.openjfx:javafx-graphics:11:mac as dependencies in our poms. Then
> all three dependencies would be deployed to every platform, but JavaFX
> would use the appropriate one at runtime. Not only is this clunky, but
> I think(?) that it fails if we switch to using the module path instead
> of the classpath, since there will be split/overlapping packages. That
> suggests that our custom deployment code needs special handling to
> only deploy the correct JavaFX artifacts for the target platform (or
> to set up the classpath to only include the correct JavaFX artifacts).
> Perhaps this is avoidable by building an uber-jar of JavaFX
> dependencies with the maven-shade-plugin, although I believe the
> maven-shade-plugin will at least spit out a lot of warnings about the
> overlapping packages.
>
> I think one solution to all of this is for OpenJFX is to provide
> org.openjfx:javafx-{name}:11:all artifacts that contain all the code,
> include the platform-specific code for each platform, but those do not
> currently exist.
>
> I would love to hear how other people are handling this situation. Am
> I misunderstanding the situation? Is there a good (obvious or
> non-obvious!) solution that I'm missing? Is there something about this
> scenario that is atypical? (My guess is that this is a very typical
> scenario.)
>
> Thanks,
> Geir Helleloid
>


Re: JavaFX 11 is released

2018-09-19 Thread Sverre Moe
Thanks for the clarification. I tried to read the GPLv2-CE license, but it
gave me a headache.

/Sverre


Den ons. 19. sep. 2018 kl. 14:51 skrev Kevin Rushforth <
kevin.rushfo...@oracle.com>:

> While this is not meant to be legal advice... The purpose of the
> Classpath exception to GPL v2 [1], both for the JDK itself and for
> JavaFX, is to allow applications to use it without requiring that the
> application itself be licensed under GPL nor requiring that the source
> for the application be provided. This applies whether you use OpenJDK 11
> + OpenJFX 11 or Oracle JDK 11 + OpenJFX 11.
>
> -- Kevin
>
> [1] http://openjdk.java.net/legal/gplv2+ce.html
>
>
> On 9/19/2018 12:22 AM, Sverre Moe wrote:
> > Great work with JavaFX 11. Looking forward to trying it out.
> >
> > About license for OpenJDK and OpenJFX:
> >
> > Given that OpenJDK has a GPLv2-CE license, is it possible to use it
> > with a commercial application, when bundling with a native runtime, or
> > do we need a commercial license from Oracle? We will not be providing
> > the source code for our application which is required when using
> > software with GPL.
> >
> > We deliver both software and hardware to our customers. The server
> > hardware running SUSE Linux Enterprise Server, which provides the
> > OpenJDK builds, comes preinstalled with our applications. SLES 15.0
> > has the OpenJDK 10 build, but I reckon later SP will probably provide
> > OpenJDK 11. We pay for SLES and are getting LTSS updates from SUSE
> > which includes the OpenJDK.
> >
> > Given that Oracle JDK which we have used up to now to build our
> > application cannot any longer be used in production without license
> > from Oracle, we then would either need a license or use the OpenJDK to
> > build and deliver with out application. Using the OpenJDK I am not
> > sure we can because of the GPLv2 license it is under.
> >
> > I guess it would not be an issue if we did not bundle the JRE runtime,
> > but required the client computer to have it installed, like we do
> > today when using Java Web Start. However with the removal of Java Web
> > Start we are looking into creating native packages for Linux, Windows
> > and Mac.
> >
> > When it comes to third party Java libraries we have been carefully to
> > only use those which is possible in a commercial application, like
> > Apache, BSD and LGPL, such as JFXtras (BSD License 2.0), Medusa
> > (Apache License v2.0) and JFreechart-FX (LGPL 2.1).
> > Now that we will provide JavaFX in the same way as a OpenJFX
> > dependency I have the same concern with it as I do with OpenJDK if it
> > also is under GPLv2.
> >
> > /Sverre
>
>


Re: JavaFX 11 is released

2018-09-19 Thread Sverre Moe
Great work with JavaFX 11. Looking forward to trying it out.

About license for OpenJDK and OpenJFX:

Given that OpenJDK has a GPLv2-CE license, is it possible to use it with a
commercial application, when bundling with a native runtime, or do we need
a commercial license from Oracle? We will not be providing the source code
for our application which is required when using software with GPL.

We deliver both software and hardware to our customers. The server hardware
running SUSE Linux Enterprise Server, which provides the OpenJDK builds,
comes preinstalled with our applications. SLES 15.0 has the OpenJDK 10
build, but I reckon later SP will probably provide OpenJDK 11. We pay for
SLES and are getting LTSS updates from SUSE which includes the OpenJDK.

Given that Oracle JDK which we have used up to now to build our application
cannot any longer be used in production without license from Oracle, we
then would either need a license or use the OpenJDK to build and deliver
with out application. Using the OpenJDK I am not sure we can because of the
GPLv2 license it is under.

I guess it would not be an issue if we did not bundle the JRE runtime, but
required the client computer to have it installed, like we do today when
using Java Web Start. However with the removal of Java Web Start we are
looking into creating native packages for Linux, Windows and Mac.

When it comes to third party Java libraries we have been carefully to only
use those which is possible in a commercial application, like Apache, BSD
and LGPL, such as JFXtras (BSD License 2.0), Medusa (Apache License v2.0)
and JFreechart-FX (LGPL 2.1).
Now that we will provide JavaFX in the same way as a OpenJFX dependency I
have the same concern with it as I do with OpenJDK if it also is under
GPLv2.

/Sverre


Re: OpenJFX status update

2018-08-07 Thread Sverre Moe
>
> The javapackager tool and associated jdk.packager and
> jdk.packager.services modules have been removed from the JDK along with
> JavaFX. They are not part of the standalone JavaFX builds.
>
> -- Kevin
>
> What options are there if one relies on the javapackager to create native
runtime images and native package installers?

We cannot then upgrade to Java 11 since it has been removed.
Neither can we use jlink instead since our application is not yet
modularized. Though jlink does not create the

There is a draft for a new jpackager tool, but when it will be ready seems
to be undetermined.
http://openjdk.java.net/jeps/8200758

Have anyone tried to build the javapackager code with OpenJDK 11 and create
a javapackager executable file? It could be used as a standalone tool until
the new jpackager is ready.

/Sverre


Re: JavaFX 11 snapshots in maven sonatype

2018-07-09 Thread Sverre Moe
I thought I replied to the list, and not just you.

Probably easier to use the module name as artifactId, but it seems odd
though and stands out against all the rest of dependencies naming using a
dash delimiter.


Den tor. 5. jul. 2018, 19:02 skrev Johan Vos :

> The name is the same name as the module (in module-info.java).
> I'm very open to discuss this though, so if you want to start a
> discussion, send it to the list? I personally have no real preference for
> naming, but it's better to change the name now instead of next year :)
>
> - Johan
>
> On Thu, Jul 5, 2018 at 6:27 PM Sverre Moe  wrote:
>
>> Great work.
>>
>> One oddity. Shouldn't artifactId be javafx-controls, instead of
>> javafx.controls?
>> Never seen any dependencies that used punctuation as delimiter in
>> artifactId.
>>
>> /Sverre
>>
>> Den tor. 5. jul. 2018 kl. 11:04 skrev Johan Vos :
>>
>>> A first batch of snapshots for the JavaFX 11 modules is now in the maven
>>> sonatype snapshot repository (see
>>> https://oss.sonatype.org/content/repositories/snapshots/org/openjfx/
>>> although
>>> you probably don't want to work with these artifacts directly but use
>>> build
>>> tools like maven or gradle to do that)
>>>
>>> This is work based on the not-yet-merged PR#83:
>>> https://github.com/javafxports/openjdk-jfx/pull/83
>>>
>>> Basically, you need to specify which modules you need (transitive
>>> dependency management will be handled by maven as the modules contain a
>>> pom.xml with the same dependencies as the module-info.java), e.g.
>>>
>>>
>>> 
>>>   org.openjfx
>>>   javafx.controls
>>>   11.0.0-SNAPSHOT
>>> 
>>>
>>>
>>> I have a few samples that show how you can use those artifacts in your
>>> maven project:
>>> https://github.com/johanvos/javafx11samples (note that this is a
>>> temporary
>>> repository)
>>> the topics/javafx3d directory contains a number of standalone samples
>>> that
>>> can be executed via
>>> mvn clean install exec:java
>>>
>>> Note that some of the samples create a build.gradle as well, but I never
>>> managed to get gradle working with the combination of classifiers and
>>> SNAPSHOT versions (it's actually the reason why I went back from gradle
>>> to
>>> maven in other projects -- e.g. dl4j related).
>>>
>>> If someone else can somehow fix the build.gradle, that would be great of
>>> course.
>>>
>>> Before PR#83 is merged, it would be nice to have a few reports from
>>> people
>>> using the snapshots.
>>>
>>> - Johan
>>>
>>


Re: Support additional video codec and container format

2018-06-24 Thread Sverre Moe
I wanted to revive this discussion when I saw Java 9 has gotten
upgraded GStreamer in JEP-257.
Also Java 11 has an upgrade to GStreamer 1.14
https://bugs.openjdk.java.net/browse/JDK-8199527

The formats supported are very few:
https://docs.oracle.com/javase/10/docs/api/javafx/scene/media/package-summary.html

What does it take to implement support for these Video formats?
It cannot be a license problem because Java 10 already has x264 as the
Only supported video format.

Is there any work scheduled to improve on this in JavaFX?



Den søn. 10. sep. 2017 kl. 20:49 skrev Sverre Moe :
>
> Some very old issues for this kind of change
> https://bugs.openjdk.java.net/browse/JDK-8091063
> https://bugs.openjdk.java.net/browse/JDK-8091656
>
> One new comment on the latter issue suggesting to add new formats like
> "Ogg/{Vorbis,Theora}, flac, matroska (MKV), Opus, VP8, 3GPP, GSM"
>
> This would be great to have on JavaFX. I seriously hope they would add it for 
> Java 10 at least, or a later Java 9 update.
>
>
>>
>> Date: Fri, 8 Sep 2017 20:51:06 +1000
>> From: John-Val Rose 
>> To: Sverre Moe 
>> Cc: openjfx-dev@openjdk.java.net
>> Subject: Re: Support additional video codec and container format
>> Message-ID: <51d7ca89-1d83-4e0f-a9f8-ef59a00b6...@gmail.com>
>> Content-Type: text/plain;   charset=us-ascii
>>
>> +1
>>
>> > On 8 Sep 2017, at 19:05, Sverre Moe  wrote:
>> >
>> > Why is JavaFX not supporting open video container and codec?
>> > From Java 9 VP6 is deprecated.
>> >
>> > The only relevant supported coded for JavaFX is H.264/AVC. The only other
>> > alternative is VP6 which has been deprecated in Java 9.
>> >
>> > We cannot use H.264 without paying lisence fee for a commercial 
>> > application.
>> >
>> > Support for Ogg Theroa/Vorbis should be considered, at least VP8 and/or VP9
>> > in place for the deprecated VP6. The MediaPlayer for Java 10 has not gotten
>> > any changes either. I reckon it is too late for Java 9 to get new formats.
>
>


Re: JavaFX and it use of GTK3

2018-06-20 Thread Sverre Moe
> > What does GTK have to say for JavaFX (disregard any AWT/Swing and SWT) ?
>
> FX is not a GTK app from a rendering perspective.
> It is used for all needed interaction with the Windowing System

Makes sense. For GUI components such as the FileChooser.
The FileChooser in JavaFX is using the system GTK theme, regardless of
Modena or any other configured styling.

> > Does it mean JavaFX supports GTK3 themes? If one have selected a
> > desktop GTK theme could it be used in the JavaFX application for
> > styling?
> No .. and no.

I was wondering because I know Eclipse have been effected in the past
by my installed GTK themes.
To be able to utilize the GTK theme would have helped to keep theme
consistent. Since dialogs such as FileChooser are using the GTK theme.

> > Has Qt ever been a consideration for JavaFX instead of GTK?
>
> No.
Why not? Would it be difficult to implement an Qt alternative for GTK
in Java? If it is even feasible.

In effect it means JavaFX will not work on systems that doesn't have
GTK installed, though OpenJDK have no install requirement on GTK.
I am running KDE which uses Qt, and apart from a very few applications
I have very little reliance on GTK.


JavaFX and it use of GTK3

2018-06-20 Thread Sverre Moe
Pardon me for asking this on the dev mailing list, but I wanted to get
this directly from the source.

I was glad to read that Java had gotten support for GTK3. Prior to
this I was oblivious with JavaFX relationship with GTK, apart from the
various Gtk-WARNING when starting applications. Then I began to
ponder, what does GTK do for JavaFX.

What does GTK have to say for JavaFX (disregard any AWT/Swing and SWT) ?

The JEP for GTK3 support mentioned the motivation for it:
* Active development is on GTK3 and GTK2 may not be available on Linux
in the future lifetime of JDK 9/10/11.
* Mixing of packages using different GTK versions causes application
failures. They mention this problem affects applications when using
Eclipse which are SWT-based. I tried running Eclipse with GTK3 enabled
without problem.

Other than that:
Does it provide better graphics with GTK3
Does it provide different visual graphics with GTK3
Does it provide better performance with GTK3

Does it mean JavaFX supports GTK3 themes? If one have selected a
desktop GTK theme could it be used in the JavaFX application for
styling?

Has Qt ever been a consideration for JavaFX instead of GTK?


Re: Removal of apps/scenebuilder from OpenJFX repo

2018-06-04 Thread Sverre Moe
Looks like Gluon has moved SceneBuilder from Bitbucket for GitHub.
https://github.com/gluonhq/scenebuilder
I like this move. GitHub is much better to work with.


Den fre. 27. apr. 2018 kl. 13:31 skrev Sverre Moe :
>
> I would like to hear from Gluon about their work on SceneBuilder.
> Do they have any plans for improve on SceneBuilder, both bug fixed and
> new features?
>
> I guess Gluon only work on their own fork of SceneBuilder, but do they
> send changes back to the OpenJFX repository?
>
> We have migrated our application from Swing to JavaFX and have thus
> begun to use SceneBuilder. I therefor hope it will be actively
> maintained further.
>
> How can we the community contribute to the continued development of
> SceneBuilder.
> Should we work against the OpenJFX SceneBuilder or the Gluon SceneBuilder?
> https://bitbucket.org/gluon-oss/scenebuilder
> https://github.com/javafxports/openjdk-jfx/tree/develop/apps/scenebuilder
>
> /Sverre
>
>
> 2018-03-13 22:11 GMT+01:00 Kevin Rushforth :
> > That will be a question for Gluon.
> >
> > -- Kevin
> >
> >
> >
> > Michael Paus wrote:
> >>
> >> How will these changes then be synchronized with the work Gluon is doing
> >> for the version
> >> distributed by them? Do they work on the same repo?
> >>
> >> Am 12.03.18 um 23:25 schrieb Kevin Rushforth:
> >>>
> >>> Hi Florian,
> >>>
> >>> By way of update, after thinking about this for a week (and getting some
> >>> offline feedback), I no longer propose doing this -- at least not for the
> >>> short-mid term. I've retargeted this RFE to tbd_major and lowered the
> >>> priority to P4.
> >>>
> >>> Having said that, we don't have any plans to modify SceneBuilder, but
> >>> will happily accept contributions.
> >>>
> >>> -- Kevin
> >>>
> >>>
> >>> Florian Brunner wrote:
> >>>>
> >>>> OK, this still comes a bit as a surprise as the source code has been
> >>>> kept in the repo and was not just provided as a ZIP file.
> >>>>
> >>>> I'm currently working on a tool based on the SceneBuilder Kit. I needed
> >>>> to work on the code a bit and was planning to donate the code back to
> >>>> OpenJFX once released, as I was under the impression OpenJFX would serve 
> >>>> as
> >>>> the master / upstream-repo for all SceneBuilder forks. I was also under 
> >>>> the
> >>>> impression that OpenJFX at least would make sure the code works with any 
> >>>> new
> >>>> JDK / JavaFX version and hoped it would get support for new controls, if 
> >>>> any
> >>>> were added to JavaFX.
> >>>>
> >>>> -Florian
> >>>>
> >>>> Am Freitag, 2. März 2018, 09:12:15 CET schrieb Kevin Rushforth:
> >>>>>
> >>>>> I filed the following JBS isuse to remova the SceneBuilder sources from
> >>>>> the OpenJFX repo.
> >>>>>
> >>>>> https://bugs.openjdk.java.net/browse/JDK-8198961
> >>>>>
> >>>>> As mentioned in the Description of that issue, the OpenJFX repo
> >>>>> contains the source code for a no-longer-maintained version of the
> >>>>> SceneBuilder tool. Active development on SceneBuilder in the OpenJFX 
> >>>>> repo
> >>>>> was stopped over three years ago. Since that time, the only changes have
> >>>>> been either jigsaw-related changes to keep it buildable and runnable, or
> >>>>> global changes that happened to touch some of the files in
> >>>>> apps/scenebuilder.
> >>>>>
> >>>>> A fork of SceneBuilder is maintained by Gluon, so anyone wanting to get
> >>>>> the latest SceneBuilder should go there.
> >>>>>
> >>>>> Before I proceed, I wanted to poll the list to see whether anyone has a
> >>>>> concern with this. I don't plan to take any action for at least a week.
> >>>>>
> >>>>> -- Kevin
> >>>>>
> >>>>>
> >>>>
> >>>>
> >>
> >


Bug in SceneBuilder 9

2018-05-02 Thread Sverre Moe
I think I have found a bug in SceneBuilder 9.

I cannot find an existing bug report for this:
https://www.oracle.com/search/results/_/N-8d?Ntt=SceneBuilder%20TitledPane&Dy=1&Nty=1&cat=bugs&Nr=106&Ntk=S3

When adding a TitledPane, its default styling is not applied.
Within SceneBuilder the TitledPane lacks the border and title
styles(background, collapsible arrow). An empty TitledPane shows only
the title and nothing more. It looks just like a Label or Text.
Running the FXML with an Java 9 application shows the TitledPane as it
should be.

Where should I submit this bug report?
bugreport.java.com, GitHub mirror or with Gluon?

/Sverre


JavaFX dialog window size regression

2018-04-26 Thread Sverre Moe
I filed a bug report a while back. Since I didn't have access I could
not comment or update in that issue.

https://bugs.openjdk.java.net/browse/JDK-8179073

With Java 9, a JavaFX dialogs got tiny and did not size up to its content.
This worked fine when I was running JDK 9 build 161, but after JDK 9
build 165 the dialog window did not size up to show any of its
content.

The code exampled I provided with that bug report still produces a
tiny dialog window with both jdk-9.0.4 and jdk-10.0.1

Setting the Dialog size to fixed width/height does not work, but if
with setResizable(true) the Dialog gets its full size.

It has been a while since I have used Java 9. Today I got the same
problem while trying to exit SceneBuilder 9 downloaded from Gluon.

I was wondering if I should re-create this bug report on the GitHub
OpenJFX repository?


Re: More community participation in JavaFX

2018-02-06 Thread Sverre Moe
>> 2018-02-06 14:29 GMT+01:00 dalibor topic :
>>>
>>>
>>>
>>> On 02.02.2018 00:26, Kevin Rushforth wrote:


 We are specifically looking to discuss ideas around the following areas:

 * Easing barriers to contribution (e.g., making JavaFX easier to build,
 better documentation, making it easier to test changes)
>>>
>>>
>>>
>>> I'd suggest explicitly asking for feedback from the maintainers of
>>> downstream builds, such as
>>>
>>> https://www.archlinux.org/packages/extra/x86_64/java-openjfx/
>>> https://packages.debian.org/source/sid/openjfx
>>> https://admin.fedoraproject.org/pkgdb/package/rpms/openjfx/
>>> https://www.freshports.org/java/openjfx8-devel
>>>
>>> In the case of the JDK, downstream builders of OpenJDK tend to provide
>>> very
>>> useful first hand feedback of barriers to building & contribution, and
>>> often
>>> end up becoming regular contributors themselves, due to the hard,
>>> fundamental nature of (build) problems one needs to resolve to be able to
>>> provide a working build for one's own operating system.
>>>
>>> cheers,
>>> dalibor topic
>>
>>
>> I wanted to see OpenSUSE among those, but sadly there is no official
>> maintainers for OpenJFX there like there are for OpenJDK.
>> https://build.opensuse.org/package/show/openSUSE%3AFactory/java-9-openjdk
>>
>> There is however several users who has built OpenJFX for OpenSUSE:
>> https://software.opensuse.org/package/java-1_8_0-openjfx
>>
>> Sadly though none have tried or provided java-9-openjfx builds at SUSE
>> OBS. Perhaps making JavaFX easier to build and provide better
>> documentation could remedy that shortcoming.
>> I was thinking of trying to build java-9-openjfx on OpenSUSE and SLES.
>> If successful perhaps it could be picked up by official SUSE
>> maintainers.
>>
>> /Sverre
>>
>
> 2018-02-06 23:38 GMT+01:00 dalibor topic :
> Yeah, there was a bug in the SUSE tracker for it. See
> https://bugzilla.opensuse.org/show_bug.cgi?id=991307 for details. ;)
>
> cheers,
> dalibor topic
>
>

Reading the comments there seems it is not an easy feat to build
OpenJFX. Also there are some mention of SUSE does not build OpenJDK,
but IcedTea which OpenJFX will not build with.
Perhaps the solution is to build the "correct" OpenJDK on SUSE, then OpenJFX.
Building both OpenJDK and OpenJFX should be so easy that IceadTea no
longer would be necessary.

/Sverre


Re: More community participation in JavaFX

2018-02-05 Thread Sverre Moe
> Date: Mon, 5 Feb 2018 08:11:05 +0100
> From: Alexander Ny?en 
> To: Kevin Rushforth 
> Cc: "openjfx-dev@openjdk.java.net" 
> Subject: Re: More community participation in JavaFX
> Message-ID: <3c5ef409-a1a6-40de-a810-6d8d63fb4...@nyssen.org>
> Content-Type: text/plain;   charset=utf-8
>
> Hi Kevin,
>
> the issue tracker is usually the first contact point for any future 
> contributor. Making it publicly accessible would IMHO be an important first 
> step. Be aware that before being appointed as author, one is not even allowed 
> to reply to questions related to those issues one has created via the web 
> interface. In my eyes that?s at least an unnecessary hurdle, maybe even a 
> deterrent.
>
> Regards,
> Alexander

Most definitely. Perhaps by opening up the OpenJDK JIRA issue tracker
a bit. I myself have submitted a few bugs, but could not contribute
further because I don't have access.

I found contribution to Jenkins much easier because it was easy to
create a user account on their JIRA issue tracker.

Regards,
Sverre


Re: javapackager feedback and questions

2017-12-01 Thread Sverre Moe
We are using the javapackager through the gradle/maven javafx plugin, to create:
* Executable JAR: When we went from Swing to JavaFX the maven jar
plugin could not create an executable JAR capable to start the JavaFX
Application.
* Native executable bundle: RPM (Linux), EXE (Windows), PKG (Mac)
* Java Web Start bundle

/Sverre

> Date: Thu, 30 Nov 2017 16:16:19 -0800
> From: Kevin Rushforth 
> To: Michael Hall 
> Cc: "jdk9-...@openjdk.java.net" ,
> "openjfx-dev@openjdk.java.net" , Mani
> Sarkar 
> Subject: Re: javapackager feedback and questions
> Message-ID: <5a209f53.6080...@oracle.com>
> Content-Type: text/plain; charset=ISO-8859-1; format=flowed
>
> Hi Michael,
>
> We realized that the javapackger CLI JEP wasn't quite ready, and was out
> of scope for JDK 10 anyway, so we withdrew it in order to file a new JEP
> later.
>
> Related to this, we are soliciting input as to how people are using the
> javapackager (see Victor's question below).
>
> So we'd love to hear how you and others are using it, and for what kind
> of applications.
>
> -- Kevin
>
>
> Michael Hall wrote:
> >> On Nov 29, 2017, at 5:18 PM, victor.droz...@oracle.com wrote:
> >>
> >> Hi, Mani.
> >>
> >> Thanks for providing the feedback!
> >> We will consider adding more examples and more details in the docs as you 
> >> proposed(there is an arg named jvmOptions but that's not mentioned in the 
> >> table).
> >> Looks like there is a bug when you specify systemWide=true on the MacOSX 
> >> in non-gui mode. Can you provide more details about that (like full cmd 
> >> line)?
> >> Actually, if you want you can clone the repo:
> >> http://hg.openjdk.java.net/openjfx/10-dev/rt/
> >> (hg clone http://hg.openjdk.java.net/openjfx/10-dev/rt/)
> >> and help to improve javapackager. Or you can just create Enhancements for 
> >> deploy/packager, as it's not always clear what users expect.
> >>
> >>
> >
> > Why was JEP 311 [1] Closed/Withdrawn?
> >
> > [1] http://openjdk.java.net/jeps/311
> >
> >


Re: JEP 311: Java Packager API & CLI (Kevin Rushforth)

2017-10-19 Thread Sverre Moe
The preliminary list of new arguments has arguments for DEB, but not RPM.
Really hope RPM is not phased out after refactoring arguments for later
removal after JDK10.

What is the reason for removing support for Java Web Start (JNLP) in the
Java Packager?

/Sverre


> Date: Wed, 18 Oct 2017 16:13:29 -0700
> From: victor.droz...@oracle.com
> To: openjfx-dev@openjdk.java.net
> Subject: JEP 311: Java Packager API & CLI
> Message-ID: <3fc4f584-a9d9-3264-107b-1630d981f...@oracle.com>
> Content-Type: text/plain; charset=utf-8; format=flowed
>
> New JEP Candidate:
>
> JEP 311: Java Packager API & CLI: http://openjdk.java.net/jeps/311
> Mailing list for further discussion: jdk-...@openjdk.java.net
>
> --Victor
>
>


Re: Support additional video codec and container format

2017-09-10 Thread Sverre Moe
Some very old issues for this kind of change
https://bugs.openjdk.java.net/browse/JDK-8091063
https://bugs.openjdk.java.net/browse/JDK-8091656

One new comment on the latter issue suggesting to add new formats like
"Ogg/{Vorbis,Theora}, flac, matroska (MKV), Opus, VP8, 3GPP, GSM"

This would be great to have on JavaFX. I seriously hope they would add it
for Java 10 at least, or a later Java 9 update.



> Date: Fri, 8 Sep 2017 20:51:06 +1000
> From: John-Val Rose 
> To: Sverre Moe 
> Cc: openjfx-dev@openjdk.java.net
> Subject: Re: Support additional video codec and container format
> Message-ID: <51d7ca89-1d83-4e0f-a9f8-ef59a00b6...@gmail.com>
> Content-Type: text/plain;   charset=us-ascii
>
> +1
>
> > On 8 Sep 2017, at 19:05, Sverre Moe  wrote:
> >
> > Why is JavaFX not supporting open video container and codec?
> > From Java 9 VP6 is deprecated.
> >
> > The only relevant supported coded for JavaFX is H.264/AVC. The only other
> > alternative is VP6 which has been deprecated in Java 9.
> >
> > We cannot use H.264 without paying lisence fee for a commercial
> application.
> >
> > Support for Ogg Theroa/Vorbis should be considered, at least VP8 and/or
> VP9
> > in place for the deprecated VP6. The MediaPlayer for Java 10 has not
> gotten
> > any changes either. I reckon it is too late for Java 9 to get new
> formats.
>


Support additional video codec and container format

2017-09-08 Thread Sverre Moe
Why is JavaFX not supporting open video container and codec?
>From Java 9 VP6 is deprecated.

The only relevant supported coded for JavaFX is H.264/AVC. The only other
alternative is VP6 which has been deprecated in Java 9.

We cannot use H.264 without paying lisence fee for a commercial application.

Support for Ogg Theroa/Vorbis should be considered, at least VP8 and/or VP9
in place for the deprecated VP6. The MediaPlayer for Java 10 has not gotten
any changes either. I reckon it is too late for Java 9 to get new formats.


JDK-8092206 : TabPane renders content of all tabs even only one is active

2017-07-13 Thread Sverre Moe
This bug has Fix Version to 10. Does that mean it will not be fixed on
JavaFX 8 or 9?

JIRA: https://bugs.openjdk.java.net/browse/JDK-8092206