Guest User

JavaFXWebViewCrasher.java

a guest
Dec 19th, 2013
43
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package javafxwebviewcrasher;
  2.  
  3. import java.util.logging.Level;
  4. import java.util.logging.Logger;
  5. import javafx.application.Application;
  6. import javafx.application.Platform;
  7. import javafx.geometry.Pos;
  8. import javafx.scene.Scene;
  9. import javafx.scene.layout.HBox;
  10. import javafx.scene.layout.StackPane;
  11. import javafx.scene.web.WebEngine;
  12. import javafx.scene.web.WebView;
  13. import javafx.stage.Stage;
  14.  
  15. public class JavaFXWebViewCrasher extends Application {
  16.     private HBox mainHolder = new HBox();
  17.    
  18.     @Override
  19.     public void start(Stage primaryStage) {
  20.         StackPane root = new StackPane();
  21.         root.setAlignment(Pos.CENTER);
  22.         root.getChildren().add(mainHolder);
  23.        
  24.         Scene scene = new Scene(root, 1200, 300);
  25.        
  26.         primaryStage.setScene(scene);
  27.         primaryStage.show();
  28.        
  29.         final JavaFXWebViewCrasher thisCrasher = this;
  30.         new Thread("youTubeControllerThread") {              
  31.             public void run() {
  32.                 while (true) {
  33.                     try {
  34.                         Platform.runLater(new Runnable() {
  35.                             @Override
  36.                             public void run() {
  37.                                 thisCrasher.clearAndSetYoutube();
  38.                             }                        
  39.                         });
  40.                         Thread.sleep(1000 * 30);
  41.                     } catch (InterruptedException ex) {
  42.                         Logger.getLogger(JavaFXWebViewCrasher.class.getName()).log(Level.SEVERE, null, ex);
  43.                     }
  44.                 }
  45.             }            
  46.         }.start();
  47.     }
  48.    
  49.     private void clearAndSetYoutube() {        
  50.         mainHolder.getChildren().clear();
  51.        
  52.         String youtubeEmbedString =
  53.                 "<!DOCTYPE html>"+
  54.                 "<html>"+
  55.                 "  <body style='text-align:center;background-color:black;color:white;overflow-y:hidden;overflow-x:hidden;'>" +
  56.                 "   <div id='mainHolder'>"+
  57.                 "    <iframe width='366' height='196' id='player' frameborder='0' src='http://www.youtube.com/embed/G_GBwuYuOOs?enablejsapi=1&wmode=transparent&hd=1&iv_load_policy=3&modestbranding=1&loop=1&playlist=G_GBwuYuOOs&showinfo=0&rel=0&controls=0'></iframe>" +
  58.                 "   </div>" +
  59.                
  60.                 "    <script>" +
  61.                 "      var tag = document.createElement('script');"+
  62.                
  63.                 "      tag.src = 'https://www.youtube.com/iframe_api';"+
  64.                 "      var firstScriptTag = document.getElementsByTagName('script')[0];"+
  65.                 "      firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);" +
  66.                
  67.                 "      var player;"+
  68.                 "      function onYouTubeIframeAPIReady() {"+
  69.                 "        player = new YT.Player('player', {"+
  70.                 "          events: {"+
  71.                 "            'onReady': onPlayerReady," +
  72.                 "            'onStateChange': onPlayerStateChange," +
  73.                 "            'onError': onPlayerError"+
  74.                 "          }" +
  75.                 "        });"+
  76.                 "      }" +
  77.                
  78.                 "       function onPlayerError(errorCode) {" +
  79.                 "           alert('yt error is '+errorCode.data);" +
  80.                 "       }" +
  81.                
  82.                 "      function onPlayerReady(event) {" +
  83.                 "        event.target.setVolume(0);" +
  84.                 "        player.setVolume(0);" +
  85.                 "        player.playVideo();" +
  86.                 "        player.mute();" +
  87.                 "      }" +
  88.                
  89.                
  90.                 "      function onPlayerStateChange(event) {" +
  91.                 "      }" +
  92.                
  93.                 "    </script>"+
  94.                 "  </body>"+
  95.                 "</html>";
  96.        
  97.         for (int i = 0; i < 5; i++) {        
  98.             WebView webView = new WebView();
  99.             WebEngine webEngine = webView.getEngine();
  100.             webEngine.loadContent(youtubeEmbedString);
  101.             mainHolder.getChildren().add(webView);
  102.         }
  103.     }
  104.    
  105.     public static void main(String[] args) {
  106.         launch(args);
  107.     }
  108. }
RAW Paste Data