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 }