// License: GPL. For details, see LICENSE file.
package org.openstreetmap.josm.actions.audio;
import java.awt.event.ActionEvent;
import java.io.IOException;
import org.openstreetmap.josm.Main;
import org.openstreetmap.josm.actions.JosmAction;
import org.openstreetmap.josm.tools.AudioPlayer;
import org.openstreetmap.josm.tools.Shortcut;
/**
* Abstract superclass of {@link AudioFasterAction} and {@link AudioSlowerAction}.
* @since 563
*/
public abstract class AudioFastSlowAction extends JosmAction {
private double multiplier;
/**
* Constructs a new {@code AudioFastSlowAction}.
*
* @param name the action's text as displayed on the menu (if it is added to a menu)
* @param iconName the filename of the icon to use
* @param tooltip a longer description of the action that will be displayed in the tooltip.
* @param shortcut a ready-created shortcut object.
* @param fast {@code true} to increase speed (faster audio), {@code false} to decrease it (slower audio).
*/
public AudioFastSlowAction(String name, String iconName, String tooltip, Shortcut shortcut, boolean fast) {
super(name, iconName, tooltip, shortcut, true);
multiplier = Main.pref.getDouble("audio.fastfwdmultiplier", 1.3);
if (!fast)
multiplier = 1.0 / multiplier;
}
@Override
public void actionPerformed(ActionEvent e) {
double speed = AudioPlayer.speed();
if (speed * multiplier <= 0.1)
return;
try {
if (AudioPlayer.playing() || AudioPlayer.paused())
AudioPlayer.play(AudioPlayer.url(), AudioPlayer.position(), speed * multiplier);
} catch (IOException | InterruptedException ex) {
AudioPlayer.audioMalfunction(ex);
}
}
}