]> gitweb.fperrin.net Git - GpsPrune.git/blobdiff - src/tim/prune/function/compress/SingleParameterAlgorithm.java
Moved source into separate src directory due to popular request
[GpsPrune.git] / src / tim / prune / function / compress / SingleParameterAlgorithm.java
diff --git a/src/tim/prune/function/compress/SingleParameterAlgorithm.java b/src/tim/prune/function/compress/SingleParameterAlgorithm.java
new file mode 100644 (file)
index 0000000..fbf0ccf
--- /dev/null
@@ -0,0 +1,86 @@
+package tim.prune.function.compress;
+
+import java.awt.Component;
+import java.awt.GridLayout;
+import java.awt.event.ActionListener;
+import java.awt.event.KeyListener;
+
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JTextField;
+import javax.swing.SwingConstants;
+
+import tim.prune.I18nManager;
+import tim.prune.data.Track;
+
+/**
+ * Superclass for compression algorithms with a single text field parameter
+ */
+public abstract class SingleParameterAlgorithm extends CompressionAlgorithm
+{
+       /** Text field for entering parameter */
+       private JTextField _parameterField = null;
+       /** Listener from parent dialog */
+       private ActionListener _listener = null;
+
+
+       /**
+        * Constructor
+        * @param inTrack track object
+        * @param inDetails track details object
+        * @param inListener listener to attach to activation control
+        */
+       public SingleParameterAlgorithm(Track inTrack, TrackDetails inDetails, ActionListener inListener)
+       {
+               super(inTrack, inDetails, inListener);
+               _listener = inListener;
+               _parameterField = new JTextField();
+               // Add listener to parameter field to re-run preview (and en/disable ok) when param changed
+               _parameterField.addKeyListener(new KeyListener() {
+                       public void keyTyped(java.awt.event.KeyEvent arg0) {};
+                       public void keyPressed(java.awt.event.KeyEvent arg0) {};
+                       public void keyReleased(java.awt.event.KeyEvent arg0) {if (isActivated()) _listener.actionPerformed(null);};
+               });
+       }
+
+       /**
+        * @return specific gui components for dialog
+        * @param inLabelKey key for label
+        * @param inParamValue initial value of parameter
+        */
+       protected Component getSpecificGuiComponents(String inLabelKey, String inParamValue)
+       {
+               // Create panel with label and text field
+               JPanel panel = new JPanel();
+               panel.setLayout(new GridLayout(0, 2));
+               JLabel label = new JLabel(I18nManager.getText(inLabelKey) + " : ");
+               label.setHorizontalAlignment(SwingConstants.RIGHT);
+               panel.add(label);
+               panel.add(_parameterField);
+               _parameterField.setText(inParamValue);
+               return panel;
+       }
+
+       /**
+        * Parse the text field to get parameter
+        * @return parameter given as double
+        */
+       protected double getParameter()
+       {
+               double param = 0.0;
+               try {
+                       // Parse from string
+                       param = Double.parseDouble(_parameterField.getText());
+               }
+               catch (NumberFormatException nfe) {} // ignore, param stays zero
+               return param;
+       }
+
+       /**
+        * @return the text field component
+        */
+       protected JTextField getTextField()
+       {
+               return _parameterField;
+       }
+}