diff -r 8d6534b67252 -r 04efef2a9c1e rt/launcher/src/main/java/org/apidesign/bck2brwsr/launcher/impl/FXBrwsr.java --- a/rt/launcher/src/main/java/org/apidesign/bck2brwsr/launcher/impl/FXBrwsr.java Wed Mar 20 08:48:06 2013 +0100 +++ b/rt/launcher/src/main/java/org/apidesign/bck2brwsr/launcher/impl/FXBrwsr.java Wed Apr 17 17:04:40 2013 +0200 @@ -18,9 +18,11 @@ package org.apidesign.bck2brwsr.launcher.impl; import java.util.List; +import java.util.TooManyListenersException; import java.util.logging.Level; import java.util.logging.Logger; import javafx.application.Application; +import javafx.application.Platform; import javafx.beans.value.ChangeListener; import javafx.beans.value.ObservableValue; import javafx.event.ActionEvent; @@ -32,7 +34,6 @@ import javafx.scene.Node; import javafx.scene.Scene; import javafx.scene.control.Button; -import javafx.scene.control.TextField; import javafx.scene.layout.ColumnConstraints; import javafx.scene.layout.GridPane; import javafx.scene.layout.Pane; @@ -77,6 +78,12 @@ view.setPrefSize(500, 400); final WebEngine eng = view.getEngine(); LOG.log(Level.FINE, "params : {0}", params); + try { + JVMBridge.addBck2BrwsrLoad(new InitBck2Brwsr(eng)); + } catch (TooManyListenersException ex) { + LOG.log(Level.SEVERE, null, ex); + } + if (params.size() > 0) { LOG.log(Level.FINE, "loading page {0}", params.get(0)); eng.load(params.get(0)); @@ -85,12 +92,6 @@ eng.setOnAlert(new EventHandler>() { @Override public void handle(WebEvent t) { - if ("bck2brwsr".equals(t.getData())) { // NOI18N - if (initBck2Brwsr(eng)) { - // ignore initial message - return; - } - } final Stage dialogStage = new Stage(); dialogStage.initModality(Modality.WINDOW_MODAL); dialogStage.setTitle("Warning"); @@ -152,6 +153,30 @@ layoutInArea(child, left, top, width - left - right, height - top - bottom, 0, Insets.EMPTY, true, true, HPos.CENTER, VPos.CENTER); } } + + private class InitBck2Brwsr implements ChangeListener, Runnable { + private final WebEngine eng; + + public InitBck2Brwsr(WebEngine eng) { + this.eng = eng; + } + + @Override + public synchronized void changed(ObservableValue ov, Void t, Void t1) { + Platform.runLater(this); + try { + wait(); + } catch (InterruptedException ex) { + LOG.log(Level.SEVERE, null, ex); + } + } + + @Override + public synchronized void run() { + initBck2Brwsr(eng); + notifyAll(); + } + } } }