diff --git a/src/uk/co/majenko/audiobookrecorder/AudiobookRecorder.java b/src/uk/co/majenko/audiobookrecorder/AudiobookRecorder.java index 980cd87..7a19c77 100644 --- a/src/uk/co/majenko/audiobookrecorder/AudiobookRecorder.java +++ b/src/uk/co/majenko/audiobookrecorder/AudiobookRecorder.java @@ -362,13 +362,15 @@ public class AudiobookRecorder extends JFrame { JToolBar controlsLeft = new JToolBar(JToolBar.VERTICAL); JToolBar controlsRight = new JToolBar(JToolBar.VERTICAL); + controlsTop.setFloatable(false); controlsLeft.setFloatable(false); controlsRight.setFloatable(false); controlsLeft.add(reprocessAudioFFT); controlsLeft.add(reprocessAudioPeak); - locked = new JCheckBox("Sentence locked"); + locked = new JCheckBox("Phrase locked"); + locked.setFocusable(false); locked.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { @@ -634,7 +636,7 @@ public class AudiobookRecorder extends JFrame { JPopupMenu menu = new JPopupMenu(); JMenuObject rec = new JMenuObject("Recognise text from audio", s); - JMenu moveMenu = new JMenu("Move sentence to..."); + JMenu moveMenu = new JMenu("Move phrase to..."); for (Enumeration c = book.children(); c.hasMoreElements();) { Chapter chp = (Chapter)c.nextElement(); @@ -680,8 +682,8 @@ public class AudiobookRecorder extends JFrame { }); - JMenuObject ins = new JMenuObject("Insert sentence above", s); - JMenuObject del = new JMenuObject("Delete sentence", s); + JMenuObject ins = new JMenuObject("Insert phrase above", s); + JMenuObject del = new JMenuObject("Delete phrase", s); ins.addActionListener(new ActionListener() { @@ -741,8 +743,8 @@ public class AudiobookRecorder extends JFrame { JMenuObject moveUp = new JMenuObject("Move Up", c); JMenuObject moveDown = new JMenuObject("Move Down", c); JMenu mergeWith = new JMenu("Merge chapter with"); - JMenuObject lockAll = new JMenuObject("Lock all sentences", c); - JMenuObject unlockAll = new JMenuObject("Unlock all sentences", c); + JMenuObject lockAll = new JMenuObject("Lock all phrases", c); + JMenuObject unlockAll = new JMenuObject("Unlock all phrases", c); JMenuObject exportChapter = new JMenuObject("Export chapter", c); JMenuObject deleteChapter = new JMenuObject("Delete chapter", c); diff --git a/src/uk/co/majenko/audiobookrecorder/JButtonSpacePlay.java b/src/uk/co/majenko/audiobookrecorder/JButtonSpacePlay.java new file mode 100644 index 0000000..3dc0649 --- /dev/null +++ b/src/uk/co/majenko/audiobookrecorder/JButtonSpacePlay.java @@ -0,0 +1,21 @@ +package uk.co.majenko.audiobookrecorder; + +import javax.swing.*; +import javax.swing.event.*; +import java.awt.*; +import java.awt.event.*; + +public class JButtonSpacePlay extends JButton { + public JButtonSpacePlay(ImageIcon i, String tt, ActionListener al) { + super(i); + getInputMap(JComponent.WHEN_FOCUSED).put( + KeyStroke.getKeyStroke(KeyEvent.VK_SPACE, 0), + "startPlayback" + ); + + setToolTipText(tt); + addActionListener(al); + setFocusPainted(false); + setFocusable(false); + } +} diff --git a/src/uk/co/majenko/audiobookrecorder/JToggleButtonSpacePlay.java b/src/uk/co/majenko/audiobookrecorder/JToggleButtonSpacePlay.java new file mode 100644 index 0000000..4372cec --- /dev/null +++ b/src/uk/co/majenko/audiobookrecorder/JToggleButtonSpacePlay.java @@ -0,0 +1,21 @@ +package uk.co.majenko.audiobookrecorder; + +import javax.swing.*; +import javax.swing.event.*; +import java.awt.*; +import java.awt.event.*; + +public class JToggleButtonSpacePlay extends JToggleButton { + public JToggleButtonSpacePlay(ImageIcon i, String tt, ActionListener al) { + super(i); + getInputMap(JComponent.WHEN_FOCUSED).put( + KeyStroke.getKeyStroke(KeyEvent.VK_SPACE, 0), + "startPlayback" + ); + + setToolTipText(tt); + addActionListener(al); + setFocusPainted(false); + setFocusable(false); + } +} diff --git a/src/uk/co/majenko/audiobookrecorder/MainToolBar.java b/src/uk/co/majenko/audiobookrecorder/MainToolBar.java index 5e6280f..81f9b38 100644 --- a/src/uk/co/majenko/audiobookrecorder/MainToolBar.java +++ b/src/uk/co/majenko/audiobookrecorder/MainToolBar.java @@ -7,15 +7,15 @@ import java.awt.event.*; public class MainToolBar extends JToolBar { - JButton newBook; - JButton openBook; - JButton saveBook; - JButton newChapter; - JButton recordRoomNoise; - JButton playSentence; - JButton playonSentence; - JButton stopPlaying; - JButton eq; + JButtonSpacePlay newBook; + JButtonSpacePlay openBook; + JButtonSpacePlay saveBook; + JButtonSpacePlay newChapter; + JButtonSpacePlay recordRoomNoise; + JButtonSpacePlay playSentence; + JButtonSpacePlay playonSentence; + JButtonSpacePlay stopPlaying; + JButtonSpacePlay eq; JToggleButton mic; AudiobookRecorder root; @@ -25,27 +25,21 @@ public class MainToolBar extends JToolBar { root = r; - newBook = new JButton(Icons.newBook); - newBook.setToolTipText("New Book"); - newBook.addActionListener(new ActionListener() { + newBook = new JButtonSpacePlay(Icons.newBook, "New Book", new ActionListener() { public void actionPerformed(ActionEvent e) { root.createNewBook(); } }); add(newBook); - openBook = new JButton(Icons.openBook); - openBook.setToolTipText("Open Book"); - openBook.addActionListener(new ActionListener() { + openBook = new JButtonSpacePlay(Icons.openBook, "Open Book", new ActionListener() { public void actionPerformed(ActionEvent e) { root.openBook(); } }); add(openBook); - saveBook = new JButton(Icons.save); - saveBook.setToolTipText("Save Book"); - saveBook.addActionListener(new ActionListener() { + saveBook = new JButtonSpacePlay(Icons.save, "Save Book", new ActionListener() { public void actionPerformed(ActionEvent e) { root.saveBookStructure(); } @@ -54,18 +48,14 @@ public class MainToolBar extends JToolBar { addSeparator(); - newChapter = new JButton(Icons.newChapter); - newChapter.setToolTipText("New Chapter"); - newChapter.addActionListener(new ActionListener() { + newChapter = new JButtonSpacePlay(Icons.newChapter, "New Chapter", new ActionListener() { public void actionPerformed(ActionEvent e) { root.addChapter(); } }); add(newChapter); - recordRoomNoise = new JButton(Icons.recordRoom); - recordRoomNoise.setToolTipText("Record Room Noise"); - recordRoomNoise.addActionListener(new ActionListener() { + recordRoomNoise = new JButtonSpacePlay(Icons.recordRoom, "Record Room Noise", new ActionListener() { public void actionPerformed(ActionEvent e) { root.recordRoomNoise(); } @@ -74,27 +64,21 @@ public class MainToolBar extends JToolBar { addSeparator(); - playSentence = new JButton(Icons.play); - playSentence.setToolTipText("Play sentence"); - playSentence.addActionListener(new ActionListener() { + playSentence = new JButtonSpacePlay(Icons.play, "Play sentence", new ActionListener() { public void actionPerformed(ActionEvent e) { root.playSelectedSentence(); } }); add(playSentence); - playonSentence = new JButton(Icons.playon); - playonSentence.setToolTipText("Play from sentence"); - playonSentence.addActionListener(new ActionListener() { + playonSentence = new JButtonSpacePlay(Icons.playon, "Play from sentence", new ActionListener() { public void actionPerformed(ActionEvent e) { root.playFromSelectedSentence(); } }); add(playonSentence); - stopPlaying = new JButton(Icons.stop); - stopPlaying.setToolTipText("Stop playing / recording"); - stopPlaying.addActionListener(new ActionListener() { + stopPlaying = new JButtonSpacePlay(Icons.stop, "Stop playing", new ActionListener() { public void actionPerformed(ActionEvent e) { root.stopPlaying(); } @@ -102,9 +86,7 @@ public class MainToolBar extends JToolBar { add(stopPlaying); addSeparator(); - eq = new JButton(Icons.eq); - eq.setToolTipText("Equaliser"); - eq.addActionListener(new ActionListener() { + eq = new JButtonSpacePlay(Icons.eq, "Equaliser", new ActionListener() { public void actionPerformed(ActionEvent e) { root.showEqualiser(); } @@ -114,9 +96,7 @@ public class MainToolBar extends JToolBar { addSeparator(); - mic = new JToggleButton(Icons.mic); - mic.setToolTipText("Enable/disable microphone"); - mic.addActionListener(new ActionListener() { + mic = new JToggleButtonSpacePlay(Icons.mic, "Enable / disable microphone", new ActionListener() { public void actionPerformed(ActionEvent e) { JToggleButton b = (JToggleButton)e.getSource(); if (b.isSelected()) { diff --git a/src/uk/co/majenko/audiobookrecorder/Sentence.java b/src/uk/co/majenko/audiobookrecorder/Sentence.java index 5eb4bb0..6731485 100644 --- a/src/uk/co/majenko/audiobookrecorder/Sentence.java +++ b/src/uk/co/majenko/audiobookrecorder/Sentence.java @@ -558,10 +558,10 @@ public class Sentence extends DefaultMutableTreeNode implements Cacheable { playing = true; while ((pos < crossEndOffset * frameSize) && playing) { + AudiobookRecorder.window.sampleWaveform.setPlayMarker(pos / frameSize); int nr = eq.read(buffer); pos += nr; - AudiobookRecorder.window.sampleWaveform.setPlayMarker(pos / frameSize); play.write(buffer, 0, nr); };