@FXML private void setVolume(MouseEvent event) { if (event.getButton() == MouseButton.PRIMARY) { if (play = true) { if (mute == false) { mp.setVolume(0.0); mute = true; } else { mp.setVolume(1.0); mute = false; } } } }
void stop(Runnable callback) { if (player != null) { new Tween(player.getVolume()) .tweenToZero( 0.06, 10L, (curVolume) -> { player.setVolume(curVolume); }, (zeroVolume) -> { isPlaying = false; try { if (currentAudioIn != null) { currentAudioIn.close(); } player.stop(); callback.run(); } catch (IOException | IllegalStateException | NullPointerException ex) { log.log(Level.ERROR, null, ex); } }); } else { callback.run(); } }
@Override public void mute() { try { savedVolume = myMusician.getVolume(); myMusician.setVolume(MUTED); } catch (Exception e) { /* does nothing if myMusician is not initialized */ } }
void decreaseVolume() { if (player == null) return; double newVolume = Settings.currentVolume - 0.05; if (newVolume < 0.0) newVolume = 0.0; Settings.currentVolume = newVolume; player.setVolume(newVolume); volumeSlider.setValue(newVolume); }
private static void playMp3(String name, boolean loop, double volume) { new javafx.embed.swing.JFXPanel(); String uriString = new File(path + name).toURI().toString(); MediaPlayer mp = new MediaPlayer(new Media(uriString)); if (loop) { mp.setCycleCount(INDEFINITE); } mp.setVolume(volume); mp.play(); mp3Map.put(name, mp); }
void resume(Runnable callback) { if (player != null) { player.setVolume(0d); player.play(); new Tween(player.getVolume()) .tweenToValue( Settings.currentVolume, 0.06, 10L, (currentVolume) -> { player.setVolume(currentVolume); }, (valueVolume) -> { player.setVolume(valueVolume); callback.run(); }); isPlaying = true; } else { callback.run(); } }
/** * Sets up muting on the scene through CTRL + M. Disables typing when control is down so that * typing m isn't displayed. * * @param scene */ private void setUpMute(Scene scene) { scene.addEventFilter( KeyEvent.KEY_PRESSED, (e -> { if (e.isControlDown()) { scene.setOnKeyTyped(null); if (e.getCode().equals(KeyCode.M)) { if (muted) { myMusician.setVolume(savedVolume); } else { mute(); } muted = !muted; } } })); }
void pause(Runnable callback) { if (player != null) { new Tween(player.getVolume()) .tweenToZero( 0.06, 10L, (curVolume) -> { player.setVolume(curVolume); }, (zeroVolume) -> { player.pause(); callback.run(); }); isPlaying = false; } else { callback.run(); } }
private void onPlay() { playButton.setImage(new Image("icon/PlayPause_button/pause.png")); mp.setOnReady( () -> { duration = mp.getMedia().getDuration(); updateValues(); }); mp.currentTimeProperty() .addListener( (Observable ov) -> { Stage stage = (Stage) root.getScene().getWindow(); if (stage.isFullScreen() == false) { full = false; } updateValues(); }); mp.setOnPaused( () -> { playButton.setImage(new Image("icon/PlayPause_button/play.png")); }); mp.setOnEndOfMedia( () -> { switch (repeat) { case 0: if (fileList.size() - 1 == 0) { mp.stop(); mp.seek(mp.getStartTime()); } else { listView.getSelectionModel().selectNext(); } break; case 1: mp.seek(Duration.ZERO); mp.setCycleCount(MediaPlayer.INDEFINITE); break; case 2: if (j == fileList.size() - 1) { if (fileList.size() - 1 == 0) { mp.setCycleCount(MediaPlayer.INDEFINITE); } else { listView.getSelectionModel().selectFirst(); } } else { listView.getSelectionModel().selectNext(); } break; } atEndOfMedia = true; }); timeSlider .valueProperty() .addListener( (Observable ov) -> { if (timeSlider.isValueChanging()) { progressBar.setProgress(timeSlider.getValue() / 100); mp.seek(duration.multiply(timeSlider.getValue() / 100.0)); } }); volumeSlider .valueProperty() .addListener( (ObservableValue<? extends Number> ov, Number old_val, Number new_val) -> { mp.setVolume(new_val.doubleValue()); volumeBar.setProgress(new_val.doubleValue()); }); play = true; volumeSlider.setMouseTransparent(!play); timeSlider.setMouseTransparent(!play); }
@Override public void initialize(URL location, ResourceBundle resources) { AppController.instance = this; this.res = resources; ObservableList<String> modeItems = FXCollections.observableArrayList( Settings.MODE_NEXT, Settings.MODE_RANDOM, Settings.MODE_SAME); modeList.setItems(modeItems); modeList.getSelectionModel().select(Settings.currentMode); modeList .valueProperty() .addListener( (ObservableValue ov, Object oldVal, Object newVal) -> { Settings.currentMode = (String) newVal; }); setupPlaylistsView(); setupPlaylistsContextMenu(); setupTracksView(); tracksView.setContextMenu(tracksContextMenu); tracksView.setOnContextMenuRequested( (ContextMenuEvent evt) -> { setupTracksContextMenu(); evt.consume(); }); tracksView .getSelectionModel() .selectedItemProperty() .addListener( (ObservableValue observable, Object oldValue, Object newValue) -> { Settings.lastTrackId = newValue != null ? ((Track) newValue).getId() : null; }); playlistsView .getSelectionModel() .selectedItemProperty() .addListener( (ObservableValue observable, Object oldValue, Object newValue) -> { loadSelectedPlaylist(); Settings.lastPlaylistId = newValue != null ? ((Playlist) newValue).getId() : null; searching = false; searchText.setText(StringUtils.EMPTY); }); volumeSlider.setCursor(Cursor.HAND); volumeSlider .valueProperty() .addListener( (ObservableValue<? extends Number> ov, Number oldVal, Number newVal) -> { if (player != null) { player.setVolume(newVal.doubleValue()); } Settings.currentVolume = newVal.doubleValue(); volumeLabel.setText( String.valueOf((int) Math.ceil(newVal.doubleValue() * 100)) + "%"); }); volumeSlider.setValue(Settings.currentVolume); imagePlay = new ImageView(new Image(getClass().getResourceAsStream("/images/button_play.png"))); imagePlay.setScaleX(0.40); imagePlay.setScaleY(0.40); imagePause = new ImageView(new Image(getClass().getResourceAsStream("/images/button_pause.png"))); imagePause.setScaleX(0.5); imagePause.setScaleY(0.5); imageSettings = new ImageView(new Image(getClass().getResourceAsStream("/images/settings.png"))); imageSettings.setScaleX(0.5); imageSettings.setScaleY(0.5); imageUpdate = new ImageView(new Image(getClass().getResourceAsStream("/images/refresh.png"))); imageUpdate.setScaleX(0.5); imageUpdate.setScaleY(0.5); imageAdd = new ImageView(new Image(getClass().getResourceAsStream("/images/add.png"))); imageAdd.setScaleX(0.5); imageAdd.setScaleY(0.5); imageRename = new ImageView(new Image(getClass().getResourceAsStream("/images/rename.png"))); imageRename.setScaleX(0.5); imageRename.setScaleY(0.5); imageDelete = new ImageView(new Image(getClass().getResourceAsStream("/images/delete.png"))); imageDelete.setScaleX(0.5); imageDelete.setScaleY(0.5); stateButton.setGraphic(imagePlay); settingsButton.setGraphic(imageSettings); refreshButton.setGraphic(imageUpdate); refreshButton.setTooltip(new Tooltip(res.getString("tooltip_sync"))); addButton.setGraphic(imageAdd); addButton.setOnAction((evt) -> createOfflinePlaylist()); addButton.setTooltip(new Tooltip(res.getString("tooltip_add_offline"))); renameButton.setGraphic(imageRename); renameButton.setOnAction(evt -> renamePlaylist()); renameButton.setTooltip(new Tooltip(res.getString("rename_playlist"))); deleteButton.setGraphic(imageDelete); deleteButton.setOnAction(evt -> deletePlaylist()); deleteButton.setTooltip(new Tooltip(res.getString("delete_playlist"))); loadProgressBar.setCursor(Cursor.HAND); volumeSlider.setCursor(Cursor.HAND); updatePlaylists(); if (Settings.lastPlaylistId != null) { currentPlaylist = ((ObservableList<Playlist>) playlistsView.getItems()) .stream() .filter((playlist) -> playlist.getId().equals(Settings.lastPlaylistId)) .findFirst() .orElse(null); playlistsView.getSelectionModel().select(currentPlaylist); playlistsView.scrollTo(currentPlaylist); Platform.runLater( () -> { if (Settings.lastTrackId != null) { currentTrack = ((ObservableList<Track>) tracksView.getItems()) .stream() .filter((track) -> track.getId().equals(Settings.lastTrackId)) .findFirst() .orElse(null); tracksView.getSelectionModel().select(currentTrack); tracksView.scrollTo(currentTrack); } }); } new Timer() .scheduleAtFixedRate( new TimerTask() { @Override public void run() { updatePlayProgress(); } }, 100, 100); setupTracksContextMenu(); setupShortcuts(); Platform.runLater( () -> { tracksView.requestFocus(); }); }
@FXML void playTrack(Track t) { if (tweenBlock) return; tweenBlock = true; stop( () -> { currentPlaylist = (Playlist) playlistsView.getSelectionModel().getSelectedItem(); currentTrack = t; if (player != null) { player.dispose(); } if (t == null) { return; } timeUpdate = 9; if (currentPlaylist != null) { Tray.announce("[" + currentPlaylist.getTitle() + "] " + t.getTitle()); } Platform.runLater( () -> { infoLabel.setText(res.getString("playing_offline") + t.getTitle()); log.info("Playing offline: " + t.getTitle()); }); try { Media media = new Media(Cache.getContent(t).toURI().toString()); player = new MediaPlayer(media); player.setVolume(Settings.currentVolume); player.play(); } catch (MediaException ex) { Platform.runLater( () -> { infoLabel.setText( String.format(res.getString("cant_play_offline_not_exist"), t.getTitle())); log.error("Can't play: seems that track does not exist - " + t.getTitle()); }); } if (player != null) { pushToPlayStack(getSelectedPlaylist(), t); player.setOnEndOfMedia( () -> { String mode = Settings.currentMode; if (mode.equals(Settings.MODE_NEXT)) { playNext(); } else if (mode.equals(Settings.MODE_RANDOM)) { playRandom(); } else if (mode.equals(Settings.MODE_SAME)) { playSame(); } }); } Platform.runLater( () -> { isPlaying = true; tweenBlock = false; titleLabel.setText(t.getTitle()); stateButton.setGraphic(imagePause); }); }); }
public static void createStartTownSaloonView() { GridPane gridPane = new GridPane(); gridPane.setHgap(2); gridPane.setVgap(2); gridPane.setId("saloonGridBackground"); Button backBtn = new Button("Back"); backBtn.setId("mainScreenBtn"); gridPane.add(backBtn, 0, 0); URL url = StartTownSaloonView.class.getClassLoader().getResource("resources/saloonPianoMusic.mp3"); assert url != null; final Media media = new Media(url.toString()); final MediaPlayer mediaPlayer = new MediaPlayer(media); mediaPlayer.setVolume(25); mediaPlayer.setCycleCount(99); mediaPlayer.play(); Scene scene = new Scene( gridPane, Main.getPrimaryStage().getScene().getWidth(), Main.getPrimaryStage().getScene().getHeight()); scene.getStylesheets().add("resources/main.css"); ArrayList<Tooltip> tooltipArrayList = new ArrayList<>(); AddKeyListenerToScene.addGeneralKeyListener(scene); /** * Need to add a bunch of collision detection rectangles for clicking on people and getting a * toolip to popup. */ scene.setOnMouseClicked( event -> { double x = event.getX(); double y = event.getY(); for (Tooltip eraseTooltip : tooltipArrayList) { eraseTooltip.hide(); } if (x >= 767.0 && x <= 814.0 && y >= 378.0 && y <= 461.0) { Tooltip bartender = new Tooltip("What can I get ya?"); bartender.setId("startTownSaloonTooltip"); bartender.show( gridPane, 776.0 + scene.getWindow().getX(), 407.0 + scene.getWindow().getY()); tooltipArrayList.add(bartender); } if (x >= 687.0 && x <= 759.0 && y >= 387.0 && y <= 507.0) { Tooltip oldManAtTheBar = new Tooltip("Whiskey, Mmm Mmm Mmm down to my belly, yum yum yum...*hiccup*"); oldManAtTheBar.setId("startTownSaloonTooltip"); oldManAtTheBar.show( gridPane, 745.0 + scene.getWindow().getX(), 432.0 + scene.getWindow().getY()); tooltipArrayList.add(oldManAtTheBar); } if (x >= 43.0 && x <= 102.0 && y >= 330.0 && y <= 545.0) { Tooltip banjoPlayerInBack = new Tooltip("Yoddle yoddleeeee yoddleeeeheeeehoooo..."); banjoPlayerInBack.setId("startTownSaloonTooltip"); banjoPlayerInBack.show( gridPane, 83.0 + scene.getWindow().getX(), 356.0 + scene.getWindow().getY()); tooltipArrayList.add(banjoPlayerInBack); } if (x >= 606.0 && x <= 662.0 && y >= 383.0 && y <= 688.0) { Tooltip secretAlienTechHintDude = new Tooltip( "I was out in the fields...staring\n" + "at the sky when suddenly a huge blinding\n" + "light shot up from the ground. Aliens man\n" + "I hope they left something behind for me to\n" + "find!"); secretAlienTechHintDude.setId("startTownSaloonTooltip"); secretAlienTechHintDude.show( gridPane, 645.0 + scene.getWindow().getX(), 428.0 + scene.getWindow().getY()); tooltipArrayList.add(secretAlienTechHintDude); } if (x >= 923.0 && x <= 1029.0 && y >= 385.0 && y <= 752.0) { Tooltip guyHittingOnGirlOnRight = new Tooltip("Sup baby gurrllllll"); guyHittingOnGirlOnRight.setId("startTownSaloonTooltip"); guyHittingOnGirlOnRight.show( gridPane, 952.0 + scene.getWindow().getX(), 427.0 + scene.getWindow().getY()); tooltipArrayList.add(guyHittingOnGirlOnRight); } /** * Set listeners for window drags. If user drags the window then hide all the tooltips or * they will stay where they are until user hides them with the other commands. Aesthetics * only really. */ scene .getWindow() .xProperty() .addListener( (observable, oldValue, newValue) -> { for (Tooltip eraseTooltip : tooltipArrayList) { eraseTooltip.hide(); } }); scene .getWindow() .yProperty() .addListener( (observable, oldValue, newValue) -> { for (Tooltip eraseTooltip : tooltipArrayList) { eraseTooltip.hide(); } }); // System.out.println(event.getX()); // System.out.println(event.getY()); }); backBtn.setOnAction( event -> { Main.getPrimaryStage().setScene(StartingTownView.getStartingTownView()); mediaPlayer.stop(); for (Tooltip eraseTooltip : tooltipArrayList) { eraseTooltip.hide(); eraseTooltip = null; } }); setStartSaloon(scene); Main.getPrimaryStage().setScene(scene); }