X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=altosui%2FAltosAscent.java;h=c8e5f3af07ea61fee1e21f4b8297fd22227d91d2;hp=64bdcf3097cc5eae63ad395e96eded6ef6ad4a9f;hb=c3314dae2d3df82e188daf6ba8520cce833592c6;hpb=51c7741040d95c5deece939dae5e4136cc04afc4 diff --git a/altosui/AltosAscent.java b/altosui/AltosAscent.java index 64bdcf30..c8e5f3af 100644 --- a/altosui/AltosAscent.java +++ b/altosui/AltosAscent.java @@ -30,18 +30,36 @@ import java.util.concurrent.LinkedBlockingQueue; public class AltosAscent extends JComponent implements AltosFlightDisplay { GridBagLayout layout; + JLabel cur, max; public class AscentStatus { JLabel label; JTextField value; AltosLights lights; + void show() { + value.setVisible(true); + lights.setVisible(true); + label.setVisible(true); + } + + void hide() { + value.setVisible(false); + lights.setVisible(false); + label.setVisible(false); + } + void show(AltosState state, int crc_errors) {} void reset() { value.setText(""); lights.set(false); } + void set_font() { + label.setFont(Altos.label_font); + value.setFont(Altos.value_font); + } + public AscentStatus (GridBagLayout layout, int y, String text) { GridBagConstraints c = new GridBagConstraints(); c.weighty = 1; @@ -87,6 +105,21 @@ public class AltosAscent extends JComponent implements AltosFlightDisplay { void reset() { value.setText(""); } + + void show() { + label.setVisible(true); + value.setVisible(true); + } + + void hide() { + label.setVisible(false); + value.setVisible(false); + } + void set_font() { + label.setFont(Altos.label_font); + value.setFont(Altos.value_font); + } + public AscentValue (GridBagLayout layout, int y, String text) { GridBagConstraints c = new GridBagConstraints(); c.weighty = 1; @@ -126,14 +159,25 @@ public class AltosAscent extends JComponent implements AltosFlightDisplay { void reset() { value.setText(""); max_value.setText(""); - max = 0; + max = AltosRecord.MISSING; + } + + void set_font() { + label.setFont(Altos.label_font); + value.setFont(Altos.value_font); + max_value.setFont(Altos.value_font); } void show(String format, double v) { - value.setText(String.format(format, v)); - if (v > max) { - max_value.setText(String.format(format, v)); - max = v; + if (v == AltosRecord.MISSING) { + value.setText("Missing"); + max_value.setText("Missing"); + } else { + value.setText(String.format(format, v)); + if (v > max || max == AltosRecord.MISSING) { + max_value.setText(String.format(format, v)); + max = v; + } } } public AscentValueHold (GridBagLayout layout, int y, String text) { @@ -223,6 +267,7 @@ public class AltosAscent extends JComponent implements AltosFlightDisplay { class Apogee extends AscentStatus { void show (AltosState state, int crc_errors) { + show(); value.setText(String.format("%4.2f V", state.drogue_sense)); lights.set(state.drogue_sense > 3.2); } @@ -235,6 +280,7 @@ public class AltosAscent extends JComponent implements AltosFlightDisplay { class Main extends AscentStatus { void show (AltosState state, int crc_errors) { + show(); value.setText(String.format("%4.2f V", state.main_sense)); lights.set(state.main_sense > 3.2); } @@ -247,6 +293,7 @@ public class AltosAscent extends JComponent implements AltosFlightDisplay { class Lat extends AscentValue { void show (AltosState state, int crc_errors) { + show(); if (state.gps != null) value.setText(pos(state.gps.lat,"N", "S")); else @@ -261,6 +308,7 @@ public class AltosAscent extends JComponent implements AltosFlightDisplay { class Lon extends AscentValue { void show (AltosState state, int crc_errors) { + show(); if (state.gps != null) value.setText(pos(state.gps.lon,"E", "W")); else @@ -283,19 +331,41 @@ public class AltosAscent extends JComponent implements AltosFlightDisplay { accel.reset(); } + public void set_font() { + cur.setFont(Altos.label_font); + max.setFont(Altos.label_font); + lat.set_font(); + lon.set_font(); + main.set_font(); + apogee.set_font(); + height.set_font(); + speed.set_font(); + accel.set_font(); + } + public void show(AltosState state, int crc_errors) { - lat.show(state, crc_errors); - lon.show(state, crc_errors); + if (state.gps != null && state.gps.connected) { + lat.show(state, crc_errors); + lon.show(state, crc_errors); + } else { + lat.hide(); + lon.hide(); + } height.show(state, crc_errors); - main.show(state, crc_errors); - apogee.show(state, crc_errors); + if (state.main_sense != AltosRecord.MISSING) + main.show(state, crc_errors); + else + main.hide(); + if (state.drogue_sense != AltosRecord.MISSING) + apogee.show(state, crc_errors); + else + apogee.hide(); speed.show(state, crc_errors); accel.show(state, crc_errors); } public void labels(GridBagLayout layout, int y) { GridBagConstraints c; - JLabel cur, max; cur = new JLabel("Current"); cur.setFont(Altos.label_font);