launcher/fx/src/main/java/org/apidesign/bck2brwsr/launcher/fximpl/BrowserToolbar.java
changeset 1167 fd8ac9eb0008
parent 1166 16555ef29e9e
child 1169 c19ac78b940e
     1.1 --- a/launcher/fx/src/main/java/org/apidesign/bck2brwsr/launcher/fximpl/BrowserToolbar.java	Thu May 30 06:09:42 2013 +0200
     1.2 +++ b/launcher/fx/src/main/java/org/apidesign/bck2brwsr/launcher/fximpl/BrowserToolbar.java	Fri May 31 09:12:10 2013 +0200
     1.3 @@ -35,6 +35,7 @@
     1.4  import javafx.scene.image.Image;
     1.5  import javafx.scene.image.ImageView;
     1.6  import javafx.scene.layout.Pane;
     1.7 +import javafx.scene.web.WebEngine;
     1.8  import javafx.scene.web.WebView;
     1.9  
    1.10  final class BrowserToolbar extends ToolBar {
    1.11 @@ -44,7 +45,7 @@
    1.12      private final ToggleGroup resizeGroup = new ToggleGroup();
    1.13      private final ComboBox<String> comboZoom = new ComboBox<String>();
    1.14      
    1.15 -    private BrowserToolbar( WebView webView, Pane container ) {
    1.16 +    BrowserToolbar(WebView webView, Pane container, boolean useFirebug) {
    1.17          this.webView = webView;
    1.18          this.container = container;
    1.19          
    1.20 @@ -87,7 +88,23 @@
    1.21                  comboZoom.setValue( newZoom );
    1.22              }
    1.23          });
    1.24 +        
    1.25 +        if (useFirebug) {
    1.26 +            getItems().add(new Separator());
    1.27  
    1.28 +            final ToggleButton firebug = new ToggleButton(null, new ImageView(
    1.29 +                new Image(BrowserToolbar.class.getResourceAsStream("firebug.png"))
    1.30 +            ));
    1.31 +            firebug.setTooltip(new Tooltip("Show/Hide firebug"));
    1.32 +            firebug.selectedProperty().addListener(new InvalidationListener() {
    1.33 +                @Override
    1.34 +                public void invalidated(Observable o) {
    1.35 +                    toggleFireBug(firebug.isSelected());
    1.36 +                }
    1.37 +            });
    1.38 +            getItems().add(firebug);
    1.39 +        }
    1.40 +        
    1.41          /*
    1.42          final ToggleButton btnSelMode = new ToggleButton( null, new ImageView(
    1.43              new Image(BrowserToolbar.class.getResourceAsStream("selectionMode.png"))
    1.44 @@ -104,10 +121,6 @@
    1.45          */
    1.46      }
    1.47  
    1.48 -    public static ToolBar create( WebView view, Pane container ) {
    1.49 -        return new BrowserToolbar( view, container );
    1.50 -    }
    1.51 -
    1.52      private String zoom( String zoomFactor ) {
    1.53          if( zoomFactor.trim().isEmpty() )
    1.54              return null;
    1.55 @@ -173,6 +186,29 @@
    1.56      private void toggleSelectionMode( boolean selMode ) {
    1.57          System.err.println( "selection mode: " + selMode );
    1.58      }
    1.59 +    
    1.60 +    final void toggleFireBug(boolean enable) {
    1.61 +        WebEngine eng = webView.getEngine();
    1.62 +        Object installed = eng.executeScript("window.Firebug");
    1.63 +        if ("undefined".equals(installed)) {
    1.64 +            StringBuilder sb = new StringBuilder();
    1.65 +            sb.append("var scr = window.document.createElement('script');\n");
    1.66 +            sb.append("scr.type = 'text/javascript';\n");
    1.67 +            sb.append("scr.src = 'https://getfirebug.com/firebug-lite.js';\n");
    1.68 +            sb.append("scr.text = '{ startOpened: true }';\n");
    1.69 +            sb.append("var head = window.document.getElementsByTagName('head')[0];");
    1.70 +            sb.append("head.appendChild(scr);\n");
    1.71 +            sb.append("var html = window.document.getElementsByTagName('html')[0];");
    1.72 +            sb.append("html.debug = true;\n");
    1.73 +            eng.executeScript(sb.toString());
    1.74 +        } else {
    1.75 +            if (enable) {
    1.76 +                eng.executeScript("Firebug.chrome.open()");
    1.77 +            } else {
    1.78 +                eng.executeScript("Firebug.chrome.close()");
    1.79 +            }
    1.80 +        }
    1.81 +    }
    1.82  
    1.83      /**
    1.84       * Button to resize the browser window.