X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=altosui%2FAltosFlightUI.java;h=dcf852776a0904f4dd78850bb9300c3056440b6c;hb=8610fdae8f47e1e8b6e8525227cc912664ecfafd;hp=517680463c4f794ffb89ccdc7555c0e22e7c44f0;hpb=c7f540330c040c521f9d7626009a406e704a5e41;p=fw%2Faltos diff --git a/altosui/AltosFlightUI.java b/altosui/AltosFlightUI.java index 51768046..dcf85277 100644 --- a/altosui/AltosFlightUI.java +++ b/altosui/AltosFlightUI.java @@ -28,7 +28,22 @@ import java.text.*; import java.util.prefs.*; import java.util.concurrent.*; -public class AltosFlightUI extends JFrame implements AltosFlightDisplay { +class AltosFlightStatusUpdate implements ActionListener { + + public AltosState saved_state; + AltosFlightStatus flightStatus; + + public void actionPerformed (ActionEvent e) { + if (saved_state != null) + flightStatus.show(saved_state, 0); + } + + public AltosFlightStatusUpdate (AltosFlightStatus in_flightStatus) { + flightStatus = in_flightStatus; + } +} + +public class AltosFlightUI extends AltosFrame implements AltosFlightDisplay, AltosFontListener { AltosVoice voice; AltosFlightReader reader; AltosDisplayThread thread; @@ -83,7 +98,26 @@ public class AltosFlightUI extends JFrame implements AltosFlightDisplay { sitemap.reset(); } + public void set_font() { + pad.set_font(); + ascent.set_font(); + descent.set_font(); + landed.set_font(); + flightStatus.set_font(); + flightInfo.set_font(); + sitemap.set_font(); + companion.set_font(); + } + + public void font_size_changed(int font_size) { + set_font(); + } + + + AltosFlightStatusUpdate status_update; + public void show(AltosState state, int crc_errors) { + status_update.saved_state = state; JComponent tab = which_tab(state); try { pad.show(state, crc_errors); @@ -136,6 +170,8 @@ public class AltosFlightUI extends JFrame implements AltosFlightDisplay { AltosFreqList frequencies; JComboBox telemetries; + ActionListener show_timer; + public AltosFlightUI(AltosVoice in_voice, AltosFlightReader in_reader, final int serial) { AltosPreferences.set_component(this); @@ -172,7 +208,10 @@ public class AltosFlightUI extends JFrame implements AltosFlightDisplay { }); c.gridx = 0; c.gridy = 0; + c.weightx = 0; + c.weighty = 0; c.insets = new Insets(3, 3, 3, 3); + c.fill = GridBagConstraints.NONE; c.anchor = GridBagConstraints.WEST; bag.add (frequencies, c); @@ -186,6 +225,8 @@ public class AltosFlightUI extends JFrame implements AltosFlightDisplay { telemetry = Altos.ao_telemetry_standard; telemetries.setSelectedIndex(telemetry - 1); telemetries.setMaximumRowCount(Altos.ao_telemetry_max); + telemetries.setPreferredSize(null); + telemetries.revalidate(); telemetries.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int telemetry = telemetries.getSelectedIndex() + 1; @@ -195,6 +236,8 @@ public class AltosFlightUI extends JFrame implements AltosFlightDisplay { }); c.gridx = 1; c.gridy = 0; + c.weightx = 0; + c.weighty = 0; c.fill = GridBagConstraints.NONE; c.anchor = GridBagConstraints.WEST; bag.add (telemetries, c); @@ -247,12 +290,16 @@ public class AltosFlightUI extends JFrame implements AltosFlightDisplay { bag.add(pane, c); setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); + + AltosPreferences.register_font_listener(this); + addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { disconnect(); setVisible(false); dispose(); + AltosPreferences.unregister_font_listener(AltosFlightUI.this); if (exit_on_close) System.exit(0); } @@ -263,6 +310,10 @@ public class AltosFlightUI extends JFrame implements AltosFlightDisplay { thread = new AltosDisplayThread(this, voice, this, reader); + status_update = new AltosFlightStatusUpdate(flightStatus); + + new javax.swing.Timer(100, status_update).start(); + thread.start(); }