diff --git a/src/main/java/io/github/dsheirer/source/tuner/TunerViewPanel.java b/src/main/java/io/github/dsheirer/source/tuner/TunerViewPanel.java index 746e2ab3..afdbc980 100644 --- a/src/main/java/io/github/dsheirer/source/tuner/TunerViewPanel.java +++ b/src/main/java/io/github/dsheirer/source/tuner/TunerViewPanel.java @@ -29,13 +29,16 @@ import io.github.dsheirer.record.RecorderManager; import io.github.dsheirer.sample.Listener; import io.github.dsheirer.source.tuner.TunerEvent.Event; import io.github.dsheirer.source.tuner.recording.AddRecordingTunerDialog; +import io.github.dsheirer.source.tuner.recording.RecordingTuner; import net.miginfocom.swing.MigLayout; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.swing.JButton; import javax.swing.JLabel; +import javax.swing.JMenuItem; import javax.swing.JPanel; +import javax.swing.JPopupMenu; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.ListSelectionModel; @@ -144,19 +147,45 @@ public class TunerViewPanel extends JPanel @Override public void mouseClicked(MouseEvent e) { - int column = mTunerTable.columnAtPoint(e.getPoint()); + if(e.getButton() == MouseEvent.BUTTON1) //Left-Click + { + int column = mTunerTable.columnAtPoint(e.getPoint()); - if(column == TunerModel.SPECTRAL_DISPLAY_NEW) + if(column == TunerModel.SPECTRAL_DISPLAY_NEW) + { + int tableRow = mTunerTable.rowAtPoint(e.getPoint()); + int modelRow = mTunerTable.convertRowIndexToModel(tableRow); + + Tuner tuner = mTunerModel.getTuner(modelRow); + + if(tuner != null) + { + mTunerModel.broadcast(new TunerEvent(tuner, + Event.REQUEST_NEW_SPECTRAL_DISPLAY)); + } + } + } + else if(e.getButton() == MouseEvent.BUTTON3) //Right-Click { int tableRow = mTunerTable.rowAtPoint(e.getPoint()); int modelRow = mTunerTable.convertRowIndexToModel(tableRow); - Tuner tuner = mTunerModel.getTuner(modelRow); + final Tuner tuner = mTunerModel.getTuner(modelRow); - if(tuner != null) + if(tuner instanceof RecordingTuner && tuner.getChannelSourceManager().getTunerChannelCount() == 0) { - mTunerModel.broadcast(new TunerEvent(tuner, - Event.REQUEST_NEW_SPECTRAL_DISPLAY)); + JPopupMenu popupMenu = new JPopupMenu(); + JMenuItem removeTunerItem = new JMenuItem("Remove Recording Tuner"); + removeTunerItem.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + mTunerModel.removeTuner(tuner); + } + }); + popupMenu.add(removeTunerItem); + popupMenu.show(mTunerTable, e.getX(), e.getY()); } } } diff --git a/src/main/java/io/github/dsheirer/source/tuner/recording/RecordingTunerConfigurationEditor.java b/src/main/java/io/github/dsheirer/source/tuner/recording/RecordingTunerConfigurationEditor.java index b9ee8463..f1cc5e0c 100644 --- a/src/main/java/io/github/dsheirer/source/tuner/recording/RecordingTunerConfigurationEditor.java +++ b/src/main/java/io/github/dsheirer/source/tuner/recording/RecordingTunerConfigurationEditor.java @@ -30,16 +30,10 @@ import net.miginfocom.swing.MigLayout; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import javax.swing.JButton; -import javax.swing.JFileChooser; import javax.swing.JLabel; import javax.swing.JTextField; -import javax.swing.filechooser.FileFilter; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; import java.awt.event.FocusEvent; import java.awt.event.FocusListener; -import java.io.File; public class RecordingTunerConfigurationEditor extends TunerConfigurationEditor { @@ -48,7 +42,6 @@ public class RecordingTunerConfigurationEditor extends TunerConfigurationEditor private final static Logger mLog = LoggerFactory.getLogger(RecordingTunerConfigurationEditor.class); private JTextField mConfigurationName; - private JButton mRecordingChooserButton; private JLabel mRecordingPath; private boolean mLoading; @@ -105,44 +98,7 @@ public class RecordingTunerConfigurationEditor extends TunerConfigurationEditor add(new JLabel("Name:")); add(mConfigurationName, "span, wrap"); - mRecordingChooserButton = new JButton("Recording"); - mRecordingChooserButton.setEnabled(false); - mRecordingChooserButton.addActionListener(new ActionListener() - { - @Override - public void actionPerformed(ActionEvent e) - { - final JFileChooser chooser = new JFileChooser(); - chooser.setFileFilter(new FileFilter() - { - @Override - public boolean accept(File f) - { - return f.isDirectory() || f.getName().matches(".*.wav"); - } - - @Override - public String getDescription() - { - return "Baseband Recordings (*.wav)"; - } - }); - int returnVal = chooser.showOpenDialog(RecordingTunerConfigurationEditor.this); - - if (returnVal == JFileChooser.APPROVE_OPTION) - { - File file = chooser.getSelectedFile(); - - if(file != null) - { - mRecordingPath.setText(file.getAbsolutePath()); - save(); - } - } - } - }); - add(mRecordingChooserButton); - + add(new JLabel("File:")); mRecordingPath = new JLabel(); add(mRecordingPath); } @@ -156,11 +112,6 @@ public class RecordingTunerConfigurationEditor extends TunerConfigurationEditor { mConfigurationName.setEnabled(enabled); } - - if(mRecordingChooserButton.isEnabled() != enabled) - { - mRecordingChooserButton.setEnabled(enabled); - } } @Override diff --git a/src/main/java/io/github/dsheirer/source/tuner/recording/RecordingTunerController.java b/src/main/java/io/github/dsheirer/source/tuner/recording/RecordingTunerController.java index 7f156622..94e689c2 100644 --- a/src/main/java/io/github/dsheirer/source/tuner/recording/RecordingTunerController.java +++ b/src/main/java/io/github/dsheirer/source/tuner/recording/RecordingTunerController.java @@ -185,14 +185,7 @@ public class RecordingTunerController extends TunerController @Override public void setFrequency(long frequency) throws SourceException { - if(hasBufferListeners()) - { - mLog.debug("Set frequency [" + frequency + "] request ignored"); - } - else - { - super.setFrequency(frequency); - } + mLog.debug("Set frequency [" + frequency + "] request ignored"); } /**