package tim.prune.correlate; import java.awt.BorderLayout; import java.awt.GridLayout; import javax.swing.BorderFactory; import javax.swing.ButtonGroup; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JRadioButton; import javax.swing.border.EtchedBorder; import tim.prune.I18nManager; /** * GUI element to allow the selection of timestamp options * for audio clip correlation */ public class AudioTimestampSelector extends JPanel { /** Array of radio buttons */ private JRadioButton[] _radios = new JRadioButton[3]; /** * Constructor * @param inTopLabelKey key for description label at top * @param inLowerLabelKey key for description label at bottom, if any */ public AudioTimestampSelector(String inTopLabelKey, String inLowerLabelKey) { createComponents(inTopLabelKey, inLowerLabelKey); setBorder(BorderFactory.createCompoundBorder( BorderFactory.createEtchedBorder(EtchedBorder.LOWERED), BorderFactory.createEmptyBorder(4, 4, 4, 4)) ); } /** * Create the GUI components * @param inTopLabelKey key for description label at top * @param inLowerLabelKey key for description label at bottom, if any */ private void createComponents(String inTopLabelKey, String inLowerLabelKey) { setLayout(new BorderLayout()); add(new JLabel(I18nManager.getText(inTopLabelKey)), BorderLayout.NORTH); // panel for the radio buttons JPanel gridPanel = new JPanel(); gridPanel.setLayout(new GridLayout(0, 3, 15, 3)); final String[] keys = {"beginning", "middle", "end"}; ButtonGroup group = new ButtonGroup(); for (int i=0; i<3; i++) { _radios[i] = new JRadioButton(I18nManager.getText("dialog.correlate.timestamp." + keys[i])); group.add(_radios[i]); gridPanel.add(_radios[i]); } _radios[0].setSelected(true); add(gridPanel, BorderLayout.CENTER); if (inLowerLabelKey != null) { add(new JLabel(I18nManager.getText(inLowerLabelKey)), BorderLayout.SOUTH); } } /** * Get the option selected by the user * @return 0 for beginning, 1 for middle or 2 for end */ public int getSelectedOption() { for (int i=0; i<_radios.length; i++) if (_radios[i].isSelected()) {return i;} return 0; } }