altoslib: Create data file open helper in AltosLib
[fw/altos] / altosui / AltosConfigPyroUI.java
index dd4fb5055a92f353ae321e1b51928803f253f426..2d4b216c12aa155de21897f8fcee912f9e0afdab 100644 (file)
@@ -3,7 +3,8 @@
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; version 2 of the License.
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
  *
  * This program is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
 
 package altosui;
 
+import java.text.*;
 import java.awt.*;
 import java.awt.event.*;
 import javax.swing.*;
 import javax.swing.event.*;
-import org.altusmetrum.altoslib_5.*;
-import org.altusmetrum.altosuilib_3.*;
+import org.altusmetrum.altoslib_11.*;
+import org.altusmetrum.altosuilib_11.*;
 
 public class AltosConfigPyroUI
        extends AltosUIDialog
@@ -87,9 +89,9 @@ public class AltosConfigPyroUI
 
                        if (units != null) {
                                try {
-                                       double v = units.parse(value.getText(), !imperial_units);
+                                       double v = units.parse_locale(value.getText(), !imperial_units);
                                        set(enabled(), v);
-                               } catch (NumberFormatException ne) {
+                               } catch (ParseException pe) {
                                        set(enabled(), 0.0);
                                }
                        }
@@ -104,7 +106,7 @@ public class AltosConfigPyroUI
                                double  unit_value = new_value;
                                AltosUnits units = AltosPyro.pyro_to_units(flag);
                                if (units != null)
-                                       unit_value = units.value(new_value);
+                                       unit_value = units.parse_value(new_value);
                                String  format;
                                if (scale >= 100)
                                        format = "%6.2f";
@@ -129,9 +131,9 @@ public class AltosConfigPyroUI
                                AltosUnits units = AltosPyro.pyro_to_units(flag);
                                try {
                                        if (units != null)
-                                               return units.parse(value.getText());
-                                       return Double.parseDouble(value.getText());
-                               } catch (NumberFormatException e) {
+                                               return units.parse_locale(value.getText());
+                                       return AltosParse.parse_double_locale(value.getText());
+                               } catch (ParseException e) {
                                        throw new AltosConfigDataException("\"%s\": %s\n", value.getText(), e.getMessage());
                                }
                        }
@@ -285,39 +287,48 @@ public class AltosConfigPyroUI
                "0.050", "0.100", "0.250", "0.500", "1.0", "2.0"
        };
 
+       boolean initializing;
+
        public void set_pyro_firing_time(double new_pyro_firing_time) {
+               initializing = true;
                pyro_firing_time_value.setSelectedItem(Double.toString(new_pyro_firing_time));
                pyro_firing_time_value.setEnabled(new_pyro_firing_time >= 0);
+               initializing = false;
        }
 
        public double get_pyro_firing_time() throws AltosConfigDataException {
                String  v = pyro_firing_time_value.getSelectedItem().toString();
 
                try {
-                       return Double.parseDouble(v);
-               } catch (NumberFormatException e) {
+                       return AltosParse.parse_double_locale(v);
+               } catch (ParseException e) {
                        throw new AltosConfigDataException("Invalid pyro firing time \"%s\"", v);
                }
        }
 
        public void set_dirty() {
-               owner.set_dirty();
+               if (!initializing)
+                       owner.set_dirty();
        }
 
        public void itemStateChanged(ItemEvent e) {
-               owner.set_dirty();
+               if (!initializing)
+                       owner.set_dirty();
        }
 
        public void changedUpdate(DocumentEvent e) {
-               owner.set_dirty();
+               if (!initializing)
+                       owner.set_dirty();
        }
 
        public void insertUpdate(DocumentEvent e) {
-               owner.set_dirty();
+               if (!initializing)
+                       owner.set_dirty();
        }
 
        public void removeUpdate(DocumentEvent e) {
-               owner.set_dirty();
+               if (!initializing)
+                       owner.set_dirty();
        }
 
        public void units_changed(boolean imperial_units) {