001    // License: GPL. Copyright 2007 by Immanuel Scholz and others
002    package org.openstreetmap.josm.actions.audio;
003    
004    import java.awt.event.ActionEvent;
005    
006    import org.openstreetmap.josm.Main;
007    import org.openstreetmap.josm.actions.JosmAction;
008    import org.openstreetmap.josm.tools.AudioPlayer;
009    import org.openstreetmap.josm.tools.Shortcut;
010    
011    abstract public class AudioFastSlowAction extends JosmAction {
012    
013        private double multiplier;
014    
015        public AudioFastSlowAction(String name, String iconName, String tooltip, Shortcut shortcut, boolean fast) {
016            super(name, iconName, tooltip, shortcut, true);
017            multiplier = Main.pref.getDouble("audio.fastfwdmultiplier","1.3");
018            if (! fast)
019                multiplier = 1.0 / multiplier;
020        }
021    
022        public void actionPerformed(ActionEvent e) {
023            double speed = AudioPlayer.speed();
024            if (speed * multiplier <= 0.1)
025                return;
026            try {
027                if (AudioPlayer.playing() || AudioPlayer.paused())
028                    AudioPlayer.play(AudioPlayer.url(), AudioPlayer.position(), speed * multiplier);
029            } catch (Exception ex) {
030                AudioPlayer.audioMalfunction(ex);
031            }
032        }
033    }