1 package tim.prune.function.compress;
3 import java.awt.Component;
4 import java.awt.GridLayout;
5 import java.awt.event.ActionListener;
6 import java.awt.event.KeyListener;
8 import javax.swing.JLabel;
9 import javax.swing.JPanel;
10 import javax.swing.JTextField;
11 import javax.swing.SwingConstants;
13 import tim.prune.I18nManager;
14 import tim.prune.data.Track;
17 * Superclass for compression algorithms with a single text field parameter
19 public abstract class SingleParameterAlgorithm extends CompressionAlgorithm
21 /** Text field for entering parameter */
22 private JTextField _parameterField = null;
23 /** Listener from parent dialog */
24 private ActionListener _listener = null;
29 * @param inTrack track object
30 * @param inDetails track details object
31 * @param inListener listener to attach to activation control
33 public SingleParameterAlgorithm(Track inTrack, TrackDetails inDetails, ActionListener inListener)
35 super(inTrack, inDetails, inListener);
36 _listener = inListener;
37 _parameterField = new JTextField();
38 // Add listener to parameter field to re-run preview (and en/disable ok) when param changed
39 _parameterField.addKeyListener(new KeyListener() {
40 public void keyTyped(java.awt.event.KeyEvent arg0) {};
41 public void keyPressed(java.awt.event.KeyEvent arg0) {};
42 public void keyReleased(java.awt.event.KeyEvent arg0) {if (isActivated()) _listener.actionPerformed(null);};
47 * @return specific gui components for dialog
48 * @param inLabelKey key for label
49 * @param inParamValue initial value of parameter
51 protected Component getSpecificGuiComponents(String inLabelKey, String inParamValue)
53 // Create panel with label and text field
54 JPanel panel = new JPanel();
55 panel.setLayout(new GridLayout(0, 2));
56 JLabel label = new JLabel(I18nManager.getText(inLabelKey) + " : ");
57 label.setHorizontalAlignment(SwingConstants.RIGHT);
59 panel.add(_parameterField);
60 _parameterField.setText(inParamValue);
65 * Parse the text field to get parameter
66 * @return parameter given as double
68 protected double getParameter()
73 param = Double.parseDouble(_parameterField.getText());
75 catch (NumberFormatException nfe) {} // ignore, param stays zero
80 * @return the text field component
82 protected JTextField getTextField()
84 return _parameterField;