001// License: GPL. For details, see LICENSE file. 002package org.openstreetmap.josm.actions.audio; 003 004import static org.openstreetmap.josm.gui.help.HelpUtil.ht; 005import static org.openstreetmap.josm.tools.I18n.tr; 006import static org.openstreetmap.josm.tools.I18n.trc; 007 008import java.awt.event.ActionEvent; 009import java.awt.event.KeyEvent; 010import java.io.IOException; 011 012import org.openstreetmap.josm.gui.layer.markerlayer.MarkerLayer; 013import org.openstreetmap.josm.io.audio.AudioPlayer; 014import org.openstreetmap.josm.io.audio.AudioUtil; 015import org.openstreetmap.josm.spi.preferences.Config; 016import org.openstreetmap.josm.tools.Shortcut; 017 018/** 019 * Jump the audio backward 10 seconds and start playing if paused. 020 * @since 547 021 */ 022public class AudioBackAction extends AbstractAudioAction { 023 024 /** 025 * Constructs a new {@code AudioBackAction}. 026 */ 027 public AudioBackAction() { 028 super(trc("audio", "Back"), "audio-back", trc("audio", "Jump back."), 029 Shortcut.registerShortcut("audio:back", tr("Audio: {0}", trc("audio", "Back")), KeyEvent.VK_F6, Shortcut.DIRECT), true); 030 this.putValue("help", ht("/Action/AudioBack")); 031 } 032 033 @Override 034 public void actionPerformed(ActionEvent e) { 035 try { 036 if (AudioPlayer.playing() || AudioPlayer.paused()) 037 AudioPlayer.play(AudioPlayer.url(), AudioPlayer.position() 038 - Config.getPref().getDouble("audio.forwardbackamount", 10.0)); 039 else 040 MarkerLayer.playAudio(); 041 } catch (IOException | InterruptedException ex) { 042 AudioUtil.audioMalfunction(ex); 043 } 044 } 045}