Custom buttons with no focus

This commit is contained in:
2018-09-30 13:51:15 +01:00
parent 38e7434730
commit 3cb0471027
5 changed files with 70 additions and 46 deletions

View File

@@ -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);

View File

@@ -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);
}
}

View File

@@ -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);
}
}

View File

@@ -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()) {

View File

@@ -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);
};