X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=altosui%2FAltosIgnitor.java;h=117def093981154c6daaf35baddebafadffefbfd;hp=fcab7427f3aa060c97a37b919e1db1ba4e6fc86a;hb=5a51efd7f9b49ffadc91ccaf7a0d69566301c009;hpb=9cb10d73fee0e3f36c778fd2a9c9992b87669fe2 diff --git a/altosui/AltosIgnitor.java b/altosui/AltosIgnitor.java index fcab7427..117def09 100644 --- a/altosui/AltosIgnitor.java +++ b/altosui/AltosIgnitor.java @@ -18,143 +18,37 @@ package altosui; import java.awt.*; +import java.awt.event.*; import javax.swing.*; -import org.altusmetrum.altoslib_3.*; +import org.altusmetrum.altoslib_5.*; +import org.altusmetrum.altosuilib_3.*; -public class AltosIgnitor extends JComponent implements AltosFlightDisplay { - GridBagLayout layout; +public class AltosIgnitor extends AltosUIFlightTab { - public class LaunchStatus { - JLabel label; - JTextField value; - AltosLights lights; - - void show(AltosState state, AltosListenerState listener_state) {} - - void reset() { - value.setText(""); - lights.set(false); - } - - public void show() { - label.setVisible(true); - value.setVisible(true); - lights.setVisible(true); - } - - void show(String s) { - show(); - value.setText(s); - } - - void show(String format, double value) { - show(String.format(format, value)); - } - - void show(String format, int value) { - show(String.format(format, value)); - } - - public void hide() { - label.setVisible(false); - value.setVisible(false); - lights.setVisible(false); - } - - public void dispose() { - hide(); - } - - public void set_font() { - label.setFont(Altos.label_font); - value.setFont(Altos.value_font); - } - - public void set_label(String text) { - label.setText(text); - } - - public LaunchStatus (GridBagLayout layout, int y, String text) { - GridBagConstraints c = new GridBagConstraints(); - c.weighty = 1; - - lights = new AltosLights(); - c.gridx = 0; c.gridy = y; - c.anchor = GridBagConstraints.CENTER; - c.fill = GridBagConstraints.VERTICAL; - c.weightx = 0; - layout.setConstraints(lights, c); - add(lights); - - label = new JLabel(text); - label.setFont(Altos.label_font); - label.setHorizontalAlignment(SwingConstants.LEFT); - c.gridx = 1; c.gridy = y; - c.insets = new Insets(Altos.tab_elt_pad, Altos.tab_elt_pad, Altos.tab_elt_pad, Altos.tab_elt_pad); - c.anchor = GridBagConstraints.WEST; - c.fill = GridBagConstraints.VERTICAL; - c.weightx = 0; - layout.setConstraints(label, c); - add(label); - - value = new JTextField(Altos.text_width); - value.setFont(Altos.value_font); - value.setHorizontalAlignment(SwingConstants.RIGHT); - c.gridx = 2; c.gridy = y; - c.anchor = GridBagConstraints.WEST; - c.fill = GridBagConstraints.BOTH; - c.weightx = 1; - layout.setConstraints(value, c); - add(value); + public class Ignitor extends AltosUIUnitsIndicator { + int ignitor; + public double value(AltosState state, int i) { + if (state.ignitor_voltage == null || + state.ignitor_voltage.length < ignitor) + return AltosLib.MISSING; + return state.ignitor_voltage[ignitor]; } - } - - public static String ignitor_name(int i) { - return String.format("Ignitor %c", 'A' + i); - } - class Ignitor extends LaunchStatus { - int ignitor; + public double good() { return AltosLib.ao_igniter_good; } - void show (AltosState state, AltosListenerState listener_state) { - if (state == null || state.ignitor_voltage[ignitor] == AltosLib.MISSING) { - hide(); - } else { - show("%4.2f V", state.ignitor_voltage[ignitor]); - lights.set(state.ignitor_voltage[ignitor] >= AltosLib.ao_igniter_good); - } - } - - public Ignitor (GridBagLayout layout, int y) { - super(layout, y, String.format ("%s Voltage", ignitor_name(y))); + public Ignitor (AltosUIFlightTab container, int y) { + super(container, y, AltosConvert.voltage, String.format ("%s Voltage", AltosLib.ignitor_name(y)), 1, true, 1); ignitor = y; } } Ignitor[] ignitors; - public void reset() { - if (ignitors == null) - return; - for (int i = 0; i < ignitors.length; i++) - ignitors[i].reset(); - } - - public void set_font() { - if (ignitors == null) - return; - for (int i = 0; i < ignitors.length; i++) - ignitors[i].set_font(); - } - public void show(AltosState state, AltosListenerState listener_state) { - make_ignitors(state); - if (ignitors == null) - return; - for (int i = 0; i < ignitors.length; i++) - ignitors[i].show(state, listener_state); - return; + if (isShowing()) + make_ignitors(state); + super.show(state, listener_state); } public boolean should_show(AltosState state) { @@ -166,33 +60,32 @@ public class AltosIgnitor extends JComponent implements AltosFlightDisplay { } void make_ignitors(AltosState state) { - int n = state == null ? 0 : state.ignitor_voltage.length; + int n = (state == null || state.ignitor_voltage == null) ? 0 : state.ignitor_voltage.length; + int old_n = ignitors == null ? 0 : ignitors.length; - if (n > 0) { + if (n != old_n) { - if (ignitors == null || ignitors.length != n) { - layout = new GridBagLayout(); + if (ignitors != null) { + for (int i = 0; i < ignitors.length; i++) { + remove(ignitors[i]); + ignitors[i].remove(this); + ignitors = null; + } + } - setLayout(layout); + if (n > 0) { + setVisible(true); ignitors = new Ignitor[n]; - for (int i = 0; i < n; i++) - ignitors[i] = new Ignitor(layout, i); - } - } else { - if (ignitors != null) { - for (int i = 0; i < n; i++) - ignitors[i].dispose(); - ignitors = null; + for (int i = 0; i < n; i++) { + ignitors[i] = new Ignitor(this, i); + add(ignitors[i]); + } + } else setVisible(false); - } } } public String getName() { return "Ignitors"; } - - public AltosIgnitor() { - make_ignitors(null); - } }