in boot-fx/src/main/java/org/netbeans/html/boot/fx/FXBrwsr.java [214:263]
private WebView newView(final URL url, final AbstractFXPresenter onLoad) {
final WebView view = new WebView();
view.setContextMenuEnabled(false);
Stage newStage;
BorderPane bp;
if (root == null) {
newStage = new Stage();
newStage.initOwner(stage);
bp = new BorderPane();
newStage.setScene(new Scene(bp));
newStage.show();
} else {
bp = root;
newStage = stage;
root = null;
}
attachHandlers(view, newStage);
final FXConsole fxConsole = new FXConsole(view, newStage);
bp.setCenter(view);
final Worker<Void> w = view.getEngine().getLoadWorker();
w.stateProperty().addListener(new ChangeListener<Worker.State>() {
private String previous;
@Override
public void changed(ObservableValue<? extends Worker.State> ov, Worker.State t, Worker.State newState) {
if (newState.equals(Worker.State.SUCCEEDED)) {
if (checkValid()) {
fxConsole.register(view.getEngine());
onLoad.onPageLoad();
}
}
if (newState.equals(Worker.State.FAILED)) {
throw new IllegalStateException("Failed to load " + url);
}
}
private boolean checkValid() {
final String crnt = view.getEngine().getLocation();
if (previous != null && !previous.equals(crnt)) {
w.stateProperty().removeListener(this);
return false;
}
previous = crnt;
return true;
}
});
fxConsole.observeWebViewTitle();
return view;
}