Toggle button to enable/disable Firebug
authorJaroslav Tulach <jaroslav.tulach@apidesign.org>
Fri, 31 May 2013 09:12:10 +0200
changeset 1167fd8ac9eb0008
parent 1166 16555ef29e9e
child 1168 3e510c4e3768
Toggle button to enable/disable Firebug
launcher/fx/src/main/java/org/apidesign/bck2brwsr/launcher/FXBrwsrLauncher.java
launcher/fx/src/main/java/org/apidesign/bck2brwsr/launcher/fximpl/BrowserToolbar.java
launcher/fx/src/main/java/org/apidesign/bck2brwsr/launcher/fximpl/FXBrwsr.java
launcher/fx/src/main/resources/org/apidesign/bck2brwsr/launcher/fximpl/firebug.png
     1.1 --- a/launcher/fx/src/main/java/org/apidesign/bck2brwsr/launcher/FXBrwsrLauncher.java	Thu May 30 06:09:42 2013 +0200
     1.2 +++ b/launcher/fx/src/main/java/org/apidesign/bck2brwsr/launcher/FXBrwsrLauncher.java	Fri May 31 09:12:10 2013 +0200
     1.3 @@ -24,6 +24,7 @@
     1.4  import java.net.URI;
     1.5  import java.net.URL;
     1.6  import java.net.URLClassLoader;
     1.7 +import java.util.ArrayList;
     1.8  import java.util.Enumeration;
     1.9  import java.util.List;
    1.10  
    1.11 @@ -67,11 +68,13 @@
    1.12                  public void run() {
    1.13                      LOG.log(Level.INFO, "In FX thread. Launching!");
    1.14                      try {
    1.15 +                        List<String> params = new ArrayList<String>();
    1.16 +                        params.add(url.toString());
    1.17                          if (isDebugged()) {
    1.18 -                            FXBrwsr.launch(FXBrwsr.class, url.toString(), "--toolbar=true");
    1.19 -                        } else {
    1.20 -                            FXBrwsr.launch(FXBrwsr.class, url.toString());
    1.21 +                            params.add("--toolbar=true");
    1.22 +                            params.add("--firebug=true");
    1.23                          }
    1.24 +                        FXBrwsr.launch(FXBrwsr.class, params.toArray(new String[params.size()]));
    1.25                          LOG.log(Level.INFO, "Launcher is back. Closing");
    1.26                          close();
    1.27                          System.exit(0);
    1.28 @@ -91,17 +94,6 @@
    1.29          sb.append("(function() {\n"
    1.30              + "  var impl = this.bck2brwsr;\n"
    1.31              + "  this.bck2brwsr = function() { return impl; };\n");
    1.32 -        if (isDebugged()) {
    1.33 -            sb.append("var scr = window.document.createElement('script');\n");
    1.34 -            sb.append("scr.type = 'text/javascript';\n");
    1.35 -            sb.append("scr.src = 'https://getfirebug.com/firebug-lite.js';\n");
    1.36 -            sb.append("scr.text = '{ startOpened: true }';\n");
    1.37 -            sb.append("var head = window.document.getElementsByTagName('head')[0];");
    1.38 -            sb.append("head.appendChild(scr);\n");
    1.39 -            sb.append("var html = window.document.getElementsByTagName('html')[0];");
    1.40 -            sb.append("html.debug = true;\n");
    1.41 -        }
    1.42 -        
    1.43          sb.append("})(window);\n");
    1.44          JVMBridge.onBck2BrwsrLoad();
    1.45      }
     2.1 --- a/launcher/fx/src/main/java/org/apidesign/bck2brwsr/launcher/fximpl/BrowserToolbar.java	Thu May 30 06:09:42 2013 +0200
     2.2 +++ b/launcher/fx/src/main/java/org/apidesign/bck2brwsr/launcher/fximpl/BrowserToolbar.java	Fri May 31 09:12:10 2013 +0200
     2.3 @@ -35,6 +35,7 @@
     2.4  import javafx.scene.image.Image;
     2.5  import javafx.scene.image.ImageView;
     2.6  import javafx.scene.layout.Pane;
     2.7 +import javafx.scene.web.WebEngine;
     2.8  import javafx.scene.web.WebView;
     2.9  
    2.10  final class BrowserToolbar extends ToolBar {
    2.11 @@ -44,7 +45,7 @@
    2.12      private final ToggleGroup resizeGroup = new ToggleGroup();
    2.13      private final ComboBox<String> comboZoom = new ComboBox<String>();
    2.14      
    2.15 -    private BrowserToolbar( WebView webView, Pane container ) {
    2.16 +    BrowserToolbar(WebView webView, Pane container, boolean useFirebug) {
    2.17          this.webView = webView;
    2.18          this.container = container;
    2.19          
    2.20 @@ -87,7 +88,23 @@
    2.21                  comboZoom.setValue( newZoom );
    2.22              }
    2.23          });
    2.24 +        
    2.25 +        if (useFirebug) {
    2.26 +            getItems().add(new Separator());
    2.27  
    2.28 +            final ToggleButton firebug = new ToggleButton(null, new ImageView(
    2.29 +                new Image(BrowserToolbar.class.getResourceAsStream("firebug.png"))
    2.30 +            ));
    2.31 +            firebug.setTooltip(new Tooltip("Show/Hide firebug"));
    2.32 +            firebug.selectedProperty().addListener(new InvalidationListener() {
    2.33 +                @Override
    2.34 +                public void invalidated(Observable o) {
    2.35 +                    toggleFireBug(firebug.isSelected());
    2.36 +                }
    2.37 +            });
    2.38 +            getItems().add(firebug);
    2.39 +        }
    2.40 +        
    2.41          /*
    2.42          final ToggleButton btnSelMode = new ToggleButton( null, new ImageView(
    2.43              new Image(BrowserToolbar.class.getResourceAsStream("selectionMode.png"))
    2.44 @@ -104,10 +121,6 @@
    2.45          */
    2.46      }
    2.47  
    2.48 -    public static ToolBar create( WebView view, Pane container ) {
    2.49 -        return new BrowserToolbar( view, container );
    2.50 -    }
    2.51 -
    2.52      private String zoom( String zoomFactor ) {
    2.53          if( zoomFactor.trim().isEmpty() )
    2.54              return null;
    2.55 @@ -173,6 +186,29 @@
    2.56      private void toggleSelectionMode( boolean selMode ) {
    2.57          System.err.println( "selection mode: " + selMode );
    2.58      }
    2.59 +    
    2.60 +    final void toggleFireBug(boolean enable) {
    2.61 +        WebEngine eng = webView.getEngine();
    2.62 +        Object installed = eng.executeScript("window.Firebug");
    2.63 +        if ("undefined".equals(installed)) {
    2.64 +            StringBuilder sb = new StringBuilder();
    2.65 +            sb.append("var scr = window.document.createElement('script');\n");
    2.66 +            sb.append("scr.type = 'text/javascript';\n");
    2.67 +            sb.append("scr.src = 'https://getfirebug.com/firebug-lite.js';\n");
    2.68 +            sb.append("scr.text = '{ startOpened: true }';\n");
    2.69 +            sb.append("var head = window.document.getElementsByTagName('head')[0];");
    2.70 +            sb.append("head.appendChild(scr);\n");
    2.71 +            sb.append("var html = window.document.getElementsByTagName('html')[0];");
    2.72 +            sb.append("html.debug = true;\n");
    2.73 +            eng.executeScript(sb.toString());
    2.74 +        } else {
    2.75 +            if (enable) {
    2.76 +                eng.executeScript("Firebug.chrome.open()");
    2.77 +            } else {
    2.78 +                eng.executeScript("Firebug.chrome.close()");
    2.79 +            }
    2.80 +        }
    2.81 +    }
    2.82  
    2.83      /**
    2.84       * Button to resize the browser window.
     3.1 --- a/launcher/fx/src/main/java/org/apidesign/bck2brwsr/launcher/fximpl/FXBrwsr.java	Thu May 30 06:09:42 2013 +0200
     3.2 +++ b/launcher/fx/src/main/java/org/apidesign/bck2brwsr/launcher/fximpl/FXBrwsr.java	Fri May 31 09:12:10 2013 +0200
     3.3 @@ -76,8 +76,10 @@
     3.4          vbox.getChildren().add(view);
     3.5  
     3.6          BorderPane root = new BorderPane();
     3.7 -        if ("true".equals(this.getParameters().getNamed().get("toolbar"))) { // NOI18N
     3.8 -            final ToolBar toolbar = BrowserToolbar.create(view, vbox);
     3.9 +        final boolean showToolbar = "true".equals(this.getParameters().getNamed().get("toolbar")); // NOI18N
    3.10 +        final boolean useFirebug = "true".equals(this.getParameters().getNamed().get("firebug")); // NOI18N
    3.11 +        if (showToolbar) {
    3.12 +            final ToolBar toolbar = new BrowserToolbar(view, vbox, useFirebug);
    3.13              root.setTop( toolbar );
    3.14          }
    3.15          root.setCenter(hbox);
     4.1 Binary file launcher/fx/src/main/resources/org/apidesign/bck2brwsr/launcher/fximpl/firebug.png has changed