1.1 --- a/rt/launcher/src/main/java/org/apidesign/bck2brwsr/launcher/impl/FXBrwsr.java Wed Mar 20 08:48:06 2013 +0100
1.2 +++ b/rt/launcher/src/main/java/org/apidesign/bck2brwsr/launcher/impl/FXBrwsr.java Wed Apr 17 17:04:40 2013 +0200
1.3 @@ -18,9 +18,11 @@
1.4 package org.apidesign.bck2brwsr.launcher.impl;
1.5
1.6 import java.util.List;
1.7 +import java.util.TooManyListenersException;
1.8 import java.util.logging.Level;
1.9 import java.util.logging.Logger;
1.10 import javafx.application.Application;
1.11 +import javafx.application.Platform;
1.12 import javafx.beans.value.ChangeListener;
1.13 import javafx.beans.value.ObservableValue;
1.14 import javafx.event.ActionEvent;
1.15 @@ -32,7 +34,6 @@
1.16 import javafx.scene.Node;
1.17 import javafx.scene.Scene;
1.18 import javafx.scene.control.Button;
1.19 -import javafx.scene.control.TextField;
1.20 import javafx.scene.layout.ColumnConstraints;
1.21 import javafx.scene.layout.GridPane;
1.22 import javafx.scene.layout.Pane;
1.23 @@ -77,6 +78,12 @@
1.24 view.setPrefSize(500, 400);
1.25 final WebEngine eng = view.getEngine();
1.26 LOG.log(Level.FINE, "params : {0}", params);
1.27 + try {
1.28 + JVMBridge.addBck2BrwsrLoad(new InitBck2Brwsr(eng));
1.29 + } catch (TooManyListenersException ex) {
1.30 + LOG.log(Level.SEVERE, null, ex);
1.31 + }
1.32 +
1.33 if (params.size() > 0) {
1.34 LOG.log(Level.FINE, "loading page {0}", params.get(0));
1.35 eng.load(params.get(0));
1.36 @@ -85,12 +92,6 @@
1.37 eng.setOnAlert(new EventHandler<WebEvent<String>>() {
1.38 @Override
1.39 public void handle(WebEvent<String> t) {
1.40 - if ("bck2brwsr".equals(t.getData())) { // NOI18N
1.41 - if (initBck2Brwsr(eng)) {
1.42 - // ignore initial message
1.43 - return;
1.44 - }
1.45 - }
1.46 final Stage dialogStage = new Stage();
1.47 dialogStage.initModality(Modality.WINDOW_MODAL);
1.48 dialogStage.setTitle("Warning");
1.49 @@ -152,6 +153,30 @@
1.50 layoutInArea(child, left, top, width - left - right, height - top - bottom, 0, Insets.EMPTY, true, true, HPos.CENTER, VPos.CENTER);
1.51 }
1.52 }
1.53 +
1.54 + private class InitBck2Brwsr implements ChangeListener<Void>, Runnable {
1.55 + private final WebEngine eng;
1.56 +
1.57 + public InitBck2Brwsr(WebEngine eng) {
1.58 + this.eng = eng;
1.59 + }
1.60 +
1.61 + @Override
1.62 + public synchronized void changed(ObservableValue<? extends Void> ov, Void t, Void t1) {
1.63 + Platform.runLater(this);
1.64 + try {
1.65 + wait();
1.66 + } catch (InterruptedException ex) {
1.67 + LOG.log(Level.SEVERE, null, ex);
1.68 + }
1.69 + }
1.70 +
1.71 + @Override
1.72 + public synchronized void run() {
1.73 + initBck2Brwsr(eng);
1.74 + notifyAll();
1.75 + }
1.76 + }
1.77 }
1.78
1.79 }