001    // License: GPL. Copyright 2008 by David Earl and others
002    package org.openstreetmap.josm.actions.audio;
003    
004    import static org.openstreetmap.josm.tools.I18n.tr;
005    import static org.openstreetmap.josm.tools.I18n.trc;
006    import java.awt.event.ActionEvent;
007    import java.awt.event.KeyEvent;
008    import java.net.URL;
009    
010    import org.openstreetmap.josm.actions.JosmAction;
011    import org.openstreetmap.josm.gui.layer.markerlayer.MarkerLayer;
012    import org.openstreetmap.josm.tools.AudioPlayer;
013    import org.openstreetmap.josm.tools.Shortcut;
014    
015    public class AudioPlayPauseAction extends JosmAction {
016    
017        public AudioPlayPauseAction() {
018            super(trc("audio", "Play/Pause"), "audio-playpause", tr("Play/pause audio."),
019            Shortcut.registerShortcut("audio:pause", tr("Audio: {0}", trc("audio", "Play/Pause")), KeyEvent.VK_PERIOD, Shortcut.DIRECT), true);
020        }
021    
022        public void actionPerformed(ActionEvent e) {
023            URL url = AudioPlayer.url();
024            try {
025                if (AudioPlayer.paused() && url != null) {
026                    AudioPlayer.play(url);
027                } else if (AudioPlayer.playing()){
028                    if (AudioPlayer.speed() != 1.0)
029                        AudioPlayer.play(url, AudioPlayer.position());
030                    else
031                        AudioPlayer.pause();
032                } else {
033                    // find first audio marker to play
034                    MarkerLayer.playAudio();
035                }
036            } catch (Exception ex) {
037                AudioPlayer.audioMalfunction(ex);
038            }
039        }
040    }