package pl.edu.fuw.fid.signalanalysis.dtf;
import java.awt.FlowLayout;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
/**
* Panel consisting of two labeled text fields for entering frequency range.
*
* @author ptr@mimuw.edu.pl
*/
public class DtfFrequencyRangePanel extends JPanel {
private JTextField freqMin;
private JTextField freqMax;
private DtfFrequencyRangeListener listener;
private static Double parseDoubleOrNull(String s) {
try {
return Double.valueOf(s);
} catch (NumberFormatException ex) {
return null;
}
}
public DtfFrequencyRangePanel(double freqMinDefault, double freqMaxDefault) {
super(new FlowLayout(FlowLayout.LEADING));
freqMin = new JTextField(Double.toString(freqMinDefault), 8);
freqMax = new JTextField(Double.toString(freqMaxDefault), 8);
add(new JLabel("Frequency range [Hz]:"));
add(freqMin);
add(new JLabel("–"));
add(freqMax);
DocumentListener dl = new DocumentListener() {
@Override
public void insertUpdate(DocumentEvent e) {
changedUpdate(e);
}
@Override
public void removeUpdate(DocumentEvent e) {
changedUpdate(e);
}
@Override
public void changedUpdate(DocumentEvent e) {
DtfFrequencyRangeListener list = listener;
if (list != null) {
Double min = parseDoubleOrNull(freqMin.getText());
Double max = parseDoubleOrNull(freqMax.getText());
list.frequencyRangeChanged(min, max);
}
}
};
freqMin.getDocument().addDocumentListener(dl);
freqMax.getDocument().addDocumentListener(dl);
}
public void setListener(DtfFrequencyRangeListener listener) {
this.listener = listener;
}
}