private WebView newView()

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;
    }