package envoy.client.ui.control; import java.util.logging.*; import javafx.scene.control.*; import javafx.scene.control.Alert.AlertType; import javafx.scene.layout.HBox; import envoy.exception.EnvoyException; import envoy.util.EnvoyLog; import envoy.client.data.audio.AudioPlayer; /** * Enables the play back of audio clips through a button. * * @author Kai S. K. Engelbart * @since Envoy Client v0.1-beta */ public final class AudioControl extends HBox { private final AudioPlayer player = new AudioPlayer(); private static final Logger logger = EnvoyLog.getLogger(AudioControl.class); /** * Initializes the audio control. * * @param audioData the audio data to play. * @since Envoy Client v0.1-beta */ public AudioControl(byte[] audioData) { var button = new Button("Play"); button.setOnAction(e -> { try { player.play(audioData); } catch (EnvoyException ex) { logger.log(Level.SEVERE, "Could not play back audio: ", ex); new Alert(AlertType.ERROR, "Could not play back audio").showAndWait(); } }); getChildren().add(button); } }