in boot-fx/src/main/java/org/netbeans/html/boot/fx/FXBrwsr.java [68:124]
public static synchronized WebView findWebView(final URL url, final AbstractFXPresenter onLoad) {
if (INSTANCE == null) {
final String callee = findCalleeClassName();
Executors.newFixedThreadPool(1).submit(new Runnable() {
@Override
public void run() {
if (!Platform.isFxApplicationThread()) {
try {
Platform.runLater(this);
} catch (IllegalStateException ex) {
try {
FXBrwsr.launch(FXBrwsr.class, callee);
} catch (Throwable t) {
t.printStackTrace();
} finally {
FINISHED.countDown();
}
}
} else {
FXBrwsr brwsr = new FXBrwsr();
brwsr.start(new Stage(), callee);
INSTANCE = brwsr;
FINISHED.countDown();
}
}
});
}
while (INSTANCE == null) {
try {
FXBrwsr.class.wait();
} catch (InterruptedException ex) {
// wait more
}
}
if (!Platform.isFxApplicationThread()) {
final WebView[] arr = {null};
final CountDownLatch waitForResult = new CountDownLatch(1);
Platform.runLater(new Runnable() {
@Override
public void run() {
arr[0] = INSTANCE.newView(url, onLoad);
waitForResult.countDown();
}
});
for (;;) {
try {
waitForResult.await();
break;
} catch (InterruptedException ex) {
LOG.log(Level.INFO, null, ex);
}
}
return arr[0];
} else {
return INSTANCE.newView(url, onLoad);
}
}