1.1 --- a/rt/launcher/src/main/java/org/apidesign/bck2brwsr/launcher/impl/FXBrwsr.java Wed Mar 20 06:56:44 2013 +0100
1.2 +++ b/rt/launcher/src/main/java/org/apidesign/bck2brwsr/launcher/impl/FXBrwsr.java Wed Mar 20 08:41:24 2013 +0100
1.3 @@ -23,11 +23,11 @@
1.4 import javafx.application.Application;
1.5 import javafx.beans.value.ChangeListener;
1.6 import javafx.beans.value.ObservableValue;
1.7 -import javafx.concurrent.Worker;
1.8 import javafx.event.ActionEvent;
1.9 import javafx.event.EventHandler;
1.10 import javafx.geometry.HPos;
1.11 import javafx.geometry.Insets;
1.12 +import javafx.geometry.Pos;
1.13 import javafx.geometry.VPos;
1.14 import javafx.scene.Node;
1.15 import javafx.scene.Scene;
1.16 @@ -38,11 +38,12 @@
1.17 import javafx.scene.layout.Pane;
1.18 import javafx.scene.layout.Priority;
1.19 import javafx.scene.layout.VBox;
1.20 +import javafx.scene.text.Text;
1.21 import javafx.scene.web.WebEngine;
1.22 import javafx.scene.web.WebEvent;
1.23 import javafx.scene.web.WebView;
1.24 +import javafx.stage.Modality;
1.25 import javafx.stage.Stage;
1.26 -import javax.swing.JOptionPane;
1.27 import netscape.javascript.JSObject;
1.28
1.29 /**
1.30 @@ -76,19 +77,11 @@
1.31 view.setPrefSize(500, 400);
1.32 final WebEngine eng = view.getEngine();
1.33 final TextField locationField = new TextField();
1.34 - LOG.info("params : " + params);
1.35 + LOG.log(Level.FINE, "params : {0}", params);
1.36 if (params.size() > 0) {
1.37 - eng.getLoadWorker().stateProperty().addListener(new ChangeListener<Worker.State>() {
1.38 - @Override
1.39 - public void changed(ObservableValue<? extends Worker.State> ov, Worker.State t, Worker.State t1) {
1.40 - LOG.info("about to init bck2brwsr");
1.41 - initBck2Brwsr(eng);
1.42 - LOG.info("done init of bck2brwsr");
1.43 - }
1.44 - });
1.45 - LOG.info("loading page " + params.get(0));
1.46 + LOG.log(Level.FINE, "loading page {0}", params.get(0));
1.47 eng.load(params.get(0));
1.48 - LOG.info("done loading page ");
1.49 + LOG.fine("done loading page ");
1.50 locationField.setText(params.get(0));
1.51 }
1.52 locationField.setMaxHeight(Double.MAX_VALUE);
1.53 @@ -111,11 +104,36 @@
1.54 eng.setOnAlert(new EventHandler<WebEvent<String>>() {
1.55 @Override
1.56 public void handle(WebEvent<String> t) {
1.57 - if ("bck2brwsr".equals(t.getData())) {
1.58 - initBck2Brwsr(eng);
1.59 - return;
1.60 + if ("bck2brwsr".equals(t.getData())) { // NOI18N
1.61 + if (initBck2Brwsr(eng)) {
1.62 + // ignore initial message
1.63 + return;
1.64 + }
1.65 }
1.66 - JOptionPane.showMessageDialog(null, t.getData());
1.67 + final Stage dialogStage = new Stage();
1.68 + dialogStage.initModality(Modality.WINDOW_MODAL);
1.69 + dialogStage.setTitle("Warning");
1.70 + final Button button = new Button("Close");
1.71 + final Text text = new Text(t.getData());
1.72 +
1.73 + VBox box = new VBox();
1.74 + box.setAlignment(Pos.CENTER);
1.75 + box.setSpacing(10);
1.76 + box.setPadding(new Insets(10));
1.77 + box.getChildren().addAll(text, button);
1.78 +
1.79 + dialogStage.setScene(new Scene(box));
1.80 +
1.81 + button.setCancelButton(true);
1.82 + button.setOnAction(new EventHandler<ActionEvent>() {
1.83 + @Override
1.84 + public void handle(ActionEvent t) {
1.85 + dialogStage.close();
1.86 + }
1.87 + });
1.88 +
1.89 + dialogStage.centerOnScreen();
1.90 + dialogStage.showAndWait();
1.91 }
1.92 });
1.93 GridPane grid = new GridPane();
1.94 @@ -129,14 +147,16 @@
1.95 getChildren().add(grid);
1.96 }
1.97
1.98 - void initBck2Brwsr(WebEngine webEngine) {
1.99 + boolean initBck2Brwsr(WebEngine webEngine) {
1.100 JSObject jsobj = (JSObject) webEngine.executeScript("window");
1.101 - LOG.info("window: " + jsobj);
1.102 + LOG.log(Level.FINE, "window: {0}", jsobj);
1.103 Object prev = jsobj.getMember("bck2brwsr");
1.104 if ("undefined".equals(prev)) {
1.105 System.getProperties().put("webEngine", webEngine);
1.106 jsobj.setMember("bck2brwsr", bridge);
1.107 + return true;
1.108 }
1.109 + return false;
1.110 }
1.111
1.112 @Override