Created
November 22, 2013 01:36
-
-
Save chaschev/7593327 to your computer and use it in GitHub Desktop.
SimpleBrowser demo
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package view; | |
import javafx.application.Application; | |
import javafx.event.ActionEvent; | |
import javafx.event.EventHandler; | |
import javafx.scene.Scene; | |
import javafx.scene.control.Button; | |
import javafx.scene.control.TextField; | |
import javafx.scene.layout.HBox; | |
import javafx.scene.layout.Priority; | |
import javafx.scene.layout.VBox; | |
import javafx.scene.layout.VBoxBuilder; | |
import javafx.stage.Stage; | |
public class FXBrowser { | |
public static class TestOnClick extends Application { | |
@Override | |
public void start(Stage stage) throws Exception { | |
try { | |
SimpleBrowser browser = new SimpleBrowser() | |
.useFirebug(true); | |
final TextField location = new TextField("http://stackoverflow.com"); | |
Button go = new Button("Go"); | |
go.setOnAction(new EventHandler<ActionEvent>() { | |
@Override | |
public void handle(ActionEvent arg0) { | |
browser.load(location.getText(), new Runnable() { | |
@Override | |
public void run() { | |
System.out.println("---------------"); | |
System.out.println(browser.getHTML()); | |
} | |
}); | |
} | |
}); | |
HBox toolbar = new HBox(); | |
toolbar.getChildren().addAll(location, go); | |
toolbar.setFillHeight(true); | |
VBox vBox = VBoxBuilder.create().children(toolbar, browser) | |
.fillWidth(true) | |
.build(); | |
Scene scene = new Scene( vBox); | |
stage.setScene(scene); | |
stage.setWidth(1024); | |
stage.setHeight(768); | |
stage.show(); | |
VBox.setVgrow(browser, Priority.ALWAYS); | |
browser.load("http://stackoverflow.com"); | |
} catch (Exception e) { | |
e.printStackTrace(); | |
} | |
} | |
public static void main(String[] args) { | |
launch(args); | |
} | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package view; | |
import javafx.beans.value.ChangeListener; | |
import javafx.beans.value.ObservableValue; | |
import javafx.concurrent.Worker; | |
import javafx.scene.layout.*; | |
import javafx.scene.web.WebEngine; | |
import javafx.scene.web.WebView; | |
public class SimpleBrowser extends Pane { | |
protected final WebView webView = new WebView(); | |
protected final WebEngine webEngine = webView.getEngine(); | |
protected boolean useFirebug; | |
public WebView getWebView() { | |
return webView; | |
} | |
public WebEngine getEngine() { | |
return webView.getEngine(); | |
} | |
public SimpleBrowser load(String location) { | |
return load(location, null); | |
} | |
public SimpleBrowser load(String location, final Runnable onLoad) { | |
webEngine.load(location); | |
webEngine.getLoadWorker().stateProperty().addListener(new ChangeListener<Worker.State>() { | |
@Override | |
public void changed(ObservableValue<? extends Worker.State> ov, Worker.State t, Worker.State t1) { | |
if (t1 == Worker.State.SUCCEEDED) { | |
if(useFirebug){ | |
webEngine.executeScript("if (!document.getElementById('FirebugLite')){E = document['createElement' + 'NS'] && document.documentElement.namespaceURI;E = E ? document['createElement' + 'NS'](E, 'script') : document['createElement']('script');E['setAttribute']('id', 'FirebugLite');E['setAttribute']('src', 'https://getfirebug.com/' + 'firebug-lite.js' + '#startOpened');E['setAttribute']('FirebugLite', '4');(document['getElementsByTagName']('head')[0] || document['getElementsByTagName']('body')[0]).appendChild(E);E = new Image;E['setAttribute']('src', 'https://getfirebug.com/' + '#startOpened');}"); | |
} | |
if(onLoad != null){ | |
onLoad.run(); | |
} | |
} | |
} | |
}); | |
return this; | |
} | |
public String getHTML() { | |
return (String)webEngine.executeScript("document.getElementsByTagName('html')[0].innerHTML"); | |
} | |
public SimpleBrowser useFirebug(boolean useFirebug) { | |
this.useFirebug = useFirebug; | |
return this; | |
} | |
public SimpleBrowser() { | |
this(false); | |
} | |
public SimpleBrowser(boolean useFirebug) { | |
this.useFirebug = useFirebug; | |
getChildren().add(webView); | |
webView.prefWidthProperty().bind(widthProperty()); | |
webView.prefHeightProperty().bind(heightProperty()); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment