use of javafx.scene.media.MediaPlayer in project Media-Library by The-Rain-Goddess.
the class ApplicationWindow method setDataTableClickEvents.
private void setDataTableClickEvents() {
dataTable.setRowFactory(tv -> {
TableRow<MediaFile> row = new TableRow<>();
row.setOnMouseClicked(event -> {
try {
if (event.getButton() == MouseButton.SECONDARY) {
ContextMenu cMenu = new ContextMenu();
MenuItem remove = new MenuItem("Remove");
remove.setOnAction((ActionEvent ev) -> {
Main.getMasterData().remove(row.getItem().getUUID());
updateDataTable();
updateFileSystem();
});
cMenu.getItems().add(remove);
row.setOnContextMenuRequested(e -> cMenu.show(row, event.getScreenX(), event.getScreenY()));
} else {
if (event.getClickCount() == 1) {
System.out.println("Clicked");
System.out.println(row.getItem());
} else if (event.getClickCount() == 2) {
System.out.println("Playing: \n" + row.getItem());
File mediaFile = new File(row.getItem().getLibraryFilePath());
Media mediaToPlay = new Media(mediaFile.toURI().toString());
artistLabel.setText(row.getItem().getArtistName() + " - " + row.getItem().getAlbumName());
songLabel.setText(row.getItem().getSongName());
player.stop();
player = new MediaPlayer(mediaToPlay);
player.setAutoPlay(true);
updatePlayer();
}
}
} catch (MediaException e) {
Stage errorWindow = new Stage();
VBox componentLayout = new VBox();
Label errorLabel = new Label(e.getMessage());
VBox.setMargin(errorLabel, new Insets(10, 10, 10, 10));
componentLayout.getChildren().addAll(errorLabel);
Scene scene = new Scene(componentLayout);
errorWindow.setScene(scene);
errorWindow.show();
}
});
return row;
});
}
use of javafx.scene.media.MediaPlayer in project Media-Library by The-Rain-Goddess.
the class ApplicationWindow method setupMediaPlayer.
//private Media Player accessors / mutators
private HBox setupMediaPlayer() {
HBox mediaSlot = new HBox();
VBox timeControls = new VBox();
VBox timeBox = new VBox();
HBox mediaControlBox = new HBox();
HBox searchBox = new HBox();
HBox fadeBox = new HBox(5);
VBox volumeControls = new VBox(10);
if (Main.getMasterDataAsList().size() != 0) {
Path path = Paths.get(Main.getMasterDataAsList().get(0).getLibraryFilePath());
Media media = new Media(path.toFile().toURI().toString());
player = new MediaPlayer(media);
} else {
//player = new MediaPlayer(new Media(Paths.get("src/com/negativevr/media_library/res/init.mp3").toFile().toURI().toString()));
}
//player.setAutoPlay(true);
MediaView mediaView = new MediaView();
mediaView.setMediaPlayer(player);
Image PlayButtonImage = new Image("com/negativevr/media_library/res/play.png");
Image PauseButtonImage = new Image("com/negativevr/media_library/res/pause.png");
ImageView imageViewPlay = new ImageView(PlayButtonImage);
ImageView imageViewPause = new ImageView(PauseButtonImage);
play = new Button();
play.setGraphic(imageViewPlay);
play.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent e) {
updateValues();
Status status = player.getStatus();
if (status == Status.PAUSED || status == Status.READY || status == Status.UNKNOWN || status == Status.STOPPED) {
player.play();
play.setGraphic(imageViewPause);
} else {
player.pause();
play.setGraphic(imageViewPlay);
}
}
});
reload = new Button();
reload.setGraphic(new ImageView(new Image("com/negativevr/media_library/res/reload.png")));
reload.setOnAction((ActionEvent e) -> {
player.seek(player.getStartTime());
});
skip = new Button();
skip.setGraphic((new ImageView(new Image("com/negativevr/media_library/res/skip.png"))));
skip.setOnAction((ActionEvent e) -> {
player.seek(player.getStopTime());
});
previous = new Button();
previous.setGraphic(new ImageView(new Image("com/negativevr/media_library/res/previous.png")));
next = new Button();
next.setGraphic(new ImageView(new Image("com/negativevr/media_library/res/next.png")));
Button repeat = new Button();
if (status == MediaStatus.REPEAT_NONE)
repeat.setGraphic(new ImageView(new Image("com/negativevr/media_library/res/repeat_none.png")));
else if (status == MediaStatus.REPEAT_SINGLE)
repeat.setGraphic(new ImageView(new Image("com/negativevr/media_library/res/repeat_single.png")));
repeat.setOnAction((ActionEvent e) -> {
if (status == MediaStatus.REPEAT_SINGLE) {
status = MediaStatus.REPEAT_NONE;
repeat.setGraphic(new ImageView(new Image("com/negativevr/media_library/res/repeat_none.png")));
} else if (status == MediaStatus.REPEAT_NONE) {
status = MediaStatus.REPEAT_SINGLE;
repeat.setGraphic(new ImageView(new Image("com/negativevr/media_library/res/repeat_single.png")));
}
});
timeSlider = new Slider();
HBox.setHgrow(timeSlider, Priority.ALWAYS);
timeSlider.setMinSize(100, 50);
timeSlider.valueProperty().addListener(new InvalidationListener() {
@Override
public void invalidated(Observable ov) {
if (timeSlider.isValueChanging()) {
Duration duration = player.getMedia().getDuration();
if (duration != null) {
player.seek(duration.multiply(timeSlider.getValue() / 100.0));
}
updateValues();
}
}
});
List<MediaFile> data = Main.getMasterDataAsList();
if (data.size() != 0) {
artistLabel = new Label(data.get(0).getArtistName() + " - " + data.get(0).getAlbumName());
songLabel = new Label(data.get(0).getSongName());
} else {
artistLabel = new Label();
songLabel = new Label();
}
player.currentTimeProperty().addListener(new InvalidationListener() {
@Override
public void invalidated(Observable ov) {
updateValues();
}
});
player.currentTimeProperty().addListener(new ChangeListener<Duration>() {
@Override
public void changed(ObservableValue<? extends Duration> arg0, Duration arg1, Duration arg2) {
updateValues();
}
});
time = new Label();
time.setTextFill(Color.BLACK);
player.setOnReady(() -> {
duration = player.getMedia().getDuration();
updateValues();
});
//volume control slider
volumeSlider = new Slider(0, 1, 0);
player.volumeProperty().bindBidirectional(volumeSlider.valueProperty());
player.setVolume(0.5);
//fade in time line
final Timeline fadeInTimeline = new Timeline(new KeyFrame(FADE_DURATION, new KeyValue(player.volumeProperty(), 1.0)));
//fade out timeline
final Timeline fadeOutTimeline = new Timeline(new KeyFrame(FADE_DURATION, new KeyValue(player.volumeProperty(), 0.0)));
//fade in button
fadeIn = new Button("Fade In");
fadeIn.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent t) {
fadeInTimeline.play();
}
});
fadeIn.setMaxWidth(Double.MAX_VALUE);
//fade out button
fadeOut = new Button("Fade Out");
fadeOut.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent t) {
fadeOutTimeline.play();
}
});
fadeOut.setMaxWidth(Double.MAX_VALUE);
player.setOnEndOfMedia(() -> {
play.setGraphic(imageViewPlay);
if (status == MediaStatus.REPEAT_NONE) {
player.seek(new Duration(0));
player.pause();
play.setGraphic(imageViewPlay);
} else if (status == MediaStatus.REPEAT_SINGLE) {
player.seek(new Duration(0));
player.play();
play.setGraphic(imageViewPause);
}
});
//volume cotrol box
fadeBox.getChildren().addAll(fadeOut, fadeIn);
fadeBox.setAlignment(Pos.CENTER);
volumeControls.getChildren().setAll(new Label("Volume"), volumeSlider, fadeBox);
volumeControls.setAlignment(Pos.CENTER);
volumeControls.disableProperty().bind(Bindings.or(Bindings.equal(Timeline.Status.RUNNING, fadeInTimeline.statusProperty()), Bindings.equal(Timeline.Status.RUNNING, fadeOutTimeline.statusProperty())));
timeControls.getChildren().addAll(songLabel, artistLabel, timeSlider);
timeControls.setAlignment(Pos.CENTER);
timeControls.setFillWidth(true);
timeControls.setMinWidth(300);
timeBox.getChildren().addAll(repeat, time);
timeBox.setAlignment(Pos.CENTER);
mediaControlBox.getChildren().addAll(previous, reload, play, skip, next);
mediaControlBox.setAlignment(Pos.CENTER);
searchBox.getChildren().addAll(new Label("Search"), search);
searchBox.setAlignment(Pos.CENTER_RIGHT);
mediaSlot.getChildren().addAll(mediaControlBox, timeBox, timeControls, volumeControls, mediaView, searchBox);
mediaSlot.setSpacing(10);
HBox.setHgrow(timeControls, Priority.ALWAYS);
return mediaSlot;
}
use of javafx.scene.media.MediaPlayer in project Gargoyle by callakrsos.
the class MediaViewerWrapper method init.
public void init() throws MalformedURLException {
if (!webm.exists() && mp4.exists()) {
Media media = new Media(mp4.toURI().toURL().toExternalForm());
mediaPlayer = new MediaPlayer(media);
mediaPlayer.setAutoPlay(true);
mediaPlayer.setOnReady(() -> {
LOGGER.debug("ready");
});
mediaPlayer.setOnEndOfMedia(() -> {
try {
close();
} catch (Exception e) {
e.printStackTrace();
}
});
mediaView = new MediaView(mediaPlayer);
mediaView.setPreserveRatio(true);
mediaView.setOnMouseClicked(ev -> {
if (ev.getClickCount() == 1) {
if (mediaPlayer.getStatus() == MediaPlayer.Status.PLAYING) {
mediaPlayer.pause();
} else if (mediaPlayer.getStatus() == MediaPlayer.Status.PAUSED) {
mediaPlayer.play();
}
}
});
setCenter(mediaView);
} else if (webm.exists() && mp4.exists()) {
Media media = new Media(webm.toURI().toURL().toExternalForm());
Media audio = new Media(mp4.toURI().toURL().toExternalForm());
mediaPlayer = new MediaPlayer(media);
audioPlayer = new MediaPlayer(audio);
mediaPlayer.setAutoPlay(false);
audioPlayer.setAutoPlay(false);
mediaPlayer.setOnReady(() -> {
LOGGER.debug("ready");
});
mediaPlayer.setOnEndOfMedia(() -> {
try {
close();
} catch (Exception e) {
e.printStackTrace();
}
});
mediaView = new MediaView(mediaPlayer);
audioView = new MediaView(audioPlayer);
mediaView.setPreserveRatio(true);
mediaView.setOnMouseClicked(ev -> {
if (ev.getClickCount() == 1) {
if (mediaPlayer.getStatus() == MediaPlayer.Status.PLAYING) {
mediaPlayer.pause();
audioPlayer.pause();
} else if (mediaPlayer.getStatus() == MediaPlayer.Status.PAUSED) {
mediaPlayer.play();
audioPlayer.play();
}
}
});
setCenter(mediaView);
}
}
use of javafx.scene.media.MediaPlayer in project SmartCity-Market by TechnionYP5777.
the class EmployeeMainScreen method initialize.
@Override
public void initialize(URL location, ResourceBundle __) {
AbstractApplicationScreen.fadeTransition(mainScreenPane);
IEmployeeScreensParameterService employeeScreensParameterService = InjectionFactory.getInstance(EmployeeScreensParameterService.class);
if (employeeScreensParameterService.getNotShowMainScreenVideo()) {
MediaPlayer player = new MediaPlayer(new Media(getClass().getResource("/EmployeeMainScreen/SmartMarketSplash.mp4").toExternalForm()));
MediaView mediaView = new MediaView(player);
mediaView.setFitWidth(1600);
mediaView.setFitHeight(900);
mediaView.setPreserveRatio(false);
mainScreenPane.getChildren().add(mediaView);
player.setMute(true);
player.setCycleCount(MediaPlayer.INDEFINITE);
player.play();
}
vbox.toFront();
vbox.setFocusTraversable(true);
}
Aggregations