source: trunk/src/org/expeditee/items/widgets/JfxMedia.java@ 797

Last change on this file since 797 was 797, checked in by jts21, 10 years ago

Add JfxMedia widget, isn't working for me (local files cause the player to fail to instantiate, remote files just don't load), but IDK why so I want to test it on Windows.

File size: 2.7 KB
Line 
1package org.expeditee.items.widgets;
2
3import java.io.File;
4
5import javafx.application.Platform;
6import javafx.beans.value.ChangeListener;
7import javafx.beans.value.ObservableValue;
8import javafx.embed.swing.JFXPanel;
9import javafx.scene.Group;
10import javafx.scene.Scene;
11import javafx.scene.media.Media;
12import javafx.scene.media.MediaPlayer;
13import javafx.scene.media.MediaView;
14
15import org.expeditee.items.Text;
16
17public class JfxMedia extends DataFrameWidget {
18
19 protected JFXPanel _panel;
20 protected MediaView _mediaView;
21 protected String _media;
22
23 public JfxMedia(Text source, String[] args) {
24 super(source, new JFXPanel(), -1, 500, -1, -1, 300, -1);
25
26 _panel = (JFXPanel) _swingComponent;
27 _media = (args != null && args.length > 0) ? args[0] : "";
28 System.out.println(_media);
29
30 Platform.runLater(new Runnable() {
31 @Override
32 public void run() {
33 initFx();
34 }
35 });
36 }
37
38 private void initFx() {
39 try {
40 Scene scene = new Scene(new Group());
41 _panel.setScene(scene);
42
43 Media media;
44 File f;
45 if((f = new File(this._media)).exists()) {
46 media = new Media(f.toURI().toString());
47 } else {
48 media = new Media(this._media);
49 }
50
51 // Create the player
52 final MediaPlayer mediaPlayer = new MediaPlayer(media);
53
54 System.out.println("Initial: " + mediaPlayer.getStatus());
55 mediaPlayer.statusProperty().addListener(new ChangeListener<MediaPlayer.Status>() {
56 @Override
57 public void changed(ObservableValue<? extends MediaPlayer.Status> observable, MediaPlayer.Status oldStatus, MediaPlayer.Status curStatus) {
58 System.out.println("Current: " + curStatus);
59 }
60 });
61
62 if (mediaPlayer.getError() != null) {
63 System.out.println("Initial Error: " + mediaPlayer.getError());
64 mediaPlayer.getError().printStackTrace();
65 }
66
67 mediaPlayer.setOnError(new Runnable() {
68 @Override public void run() {
69 System.out.println("Current Error: " + mediaPlayer.getError());
70 mediaPlayer.getError().printStackTrace();
71 }
72 });
73
74 // Create the view and add it to the Scene.
75 _mediaView = new MediaView(mediaPlayer);
76 ((Group) scene.getRoot()).getChildren().add(_mediaView);
77 mediaPlayer.play();
78 } catch (Exception e) {
79 e.printStackTrace();
80 }
81 }
82
83 @Override
84 protected String[] getArgs() {
85 return new String[] { this._media };
86 }
87}
Note: See TracBrowser for help on using the repository browser.