package altosui;
+import java.text.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
-import org.altusmetrum.altoslib_4.*;
-import org.altusmetrum.altosuilib_2.*;
+import org.altusmetrum.altoslib_10.*;
+import org.altusmetrum.altosuilib_10.*;
public class AltosConfigPyroUI
extends AltosUIDialog
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);
}
}
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());
}
}
return pyros;
}
+ JLabel pyro_firing_time_label;
+ JComboBox<String> pyro_firing_time_value;
+
+ static String[] pyro_firing_time_values = {
+ "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 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) {
setVisible(false);
}
- public AltosConfigPyroUI(AltosConfigUI in_owner, AltosPyro[] pyros) {
+ public AltosConfigPyroUI(AltosConfigUI in_owner, AltosPyro[] pyros, double pyro_firing_time) {
super(in_owner, "Configure Pyro Channels", false);
columns[i].set(pyros[i]);
}
+ /* Pyro firing time */
+ c = new GridBagConstraints();
+ c.gridx = 0; c.gridy = row;
+ c.gridwidth = 2;
+ c.fill = GridBagConstraints.NONE;
+ c.anchor = GridBagConstraints.LINE_START;
+ c.insets = il;
+ c.ipady = 5;
+ pyro_firing_time_label = new JLabel("Pyro Firing Time(s):");
+ pane.add(pyro_firing_time_label, c);
+
+ c = new GridBagConstraints();
+ c.gridx = 2; c.gridy = row;
+ c.gridwidth = 7;
+ c.fill = GridBagConstraints.HORIZONTAL;
+ c.weightx = 1;
+ c.anchor = GridBagConstraints.LINE_START;
+ c.insets = ir;
+ c.ipady = 5;
+ pyro_firing_time_value = new JComboBox<String>(pyro_firing_time_values);
+ pyro_firing_time_value.setEditable(true);
+ pyro_firing_time_value.addItemListener(this);
+ set_pyro_firing_time(pyro_firing_time);
+ pane.add(pyro_firing_time_value, c);
+ pyro_firing_time_value.setToolTipText("Length of extra pyro channel firing pulse");
+
c = new GridBagConstraints();
c.gridx = pyros.length*2-1;
c.fill = GridBagConstraints.HORIZONTAL;