rt/launcher/src/main/java/org/apidesign/bck2brwsr/launcher/impl/FXBrwsr.java
branchfx
changeset 1004 04efef2a9c1e
parent 856 8d6534b67252
child 1005 512984207634
     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  }