docs: Document altosui "Graph Data" button
[fw/altos] / ao-tools / altosui / AltosConfigUI.java
index 605ccc8be65e9722306d75d2213f4ddd8f1fb8ae..cfa5d7b9ee7b5982d7b497d8aaeeb448ef35f38e 100644 (file)
@@ -29,19 +29,6 @@ import java.text.*;
 import java.util.prefs.*;
 import java.util.concurrent.LinkedBlockingQueue;
 
-import altosui.Altos;
-import altosui.AltosSerial;
-import altosui.AltosSerialMonitor;
-import altosui.AltosRecord;
-import altosui.AltosTelemetry;
-import altosui.AltosState;
-import altosui.AltosDeviceDialog;
-import altosui.AltosPreferences;
-import altosui.AltosLog;
-import altosui.AltosVoice;
-import altosui.AltosFlightStatusTableModel;
-import altosui.AltosFlightInfoTableModel;
-
 import libaltosJNI.*;
 
 public class AltosConfigUI
@@ -57,6 +44,7 @@ public class AltosConfigUI
        JLabel          main_deploy_label;
        JLabel          apogee_delay_label;
        JLabel          radio_channel_label;
+       JLabel          radio_calibration_label;
        JLabel          callsign_label;
 
        public boolean          dirty;
@@ -68,10 +56,12 @@ public class AltosConfigUI
        JComboBox       main_deploy_value;
        JComboBox       apogee_delay_value;
        JComboBox       radio_channel_value;
+       JTextField      radio_calibration_value;
        JTextField      callsign_value;
 
        JButton         save;
        JButton         reset;
+       JButton         reboot;
        JButton         close;
 
        ActionListener  listener;
@@ -103,12 +93,12 @@ public class AltosConfigUI
                public void windowClosing(WindowEvent e) {
                        ui.actionPerformed(new ActionEvent(e.getSource(),
                                                           ActionEvent.ACTION_PERFORMED,
-                                                          "close"));
+                                                          "Close"));
                }
        }
 
        /* Build the UI using a grid bag */
-       public AltosConfigUI(JFrame in_owner) {
+       public AltosConfigUI(JFrame in_owner, boolean remote) {
                super (in_owner, "Configure TeleMetrum", false);
 
                owner = in_owner;
@@ -123,7 +113,7 @@ public class AltosConfigUI
                /* Product */
                c = new GridBagConstraints();
                c.gridx = 0; c.gridy = 0;
-               c.gridwidth = 3;
+               c.gridwidth = 4;
                c.fill = GridBagConstraints.NONE;
                c.anchor = GridBagConstraints.LINE_START;
                c.insets = il;
@@ -131,8 +121,8 @@ public class AltosConfigUI
                pane.add(product_label, c);
 
                c = new GridBagConstraints();
-               c.gridx = 3; c.gridy = 0;
-               c.gridwidth = 3;
+               c.gridx = 4; c.gridy = 0;
+               c.gridwidth = 4;
                c.fill = GridBagConstraints.HORIZONTAL;
                c.weightx = 1;
                c.anchor = GridBagConstraints.LINE_START;
@@ -143,7 +133,7 @@ public class AltosConfigUI
                /* Version */
                c = new GridBagConstraints();
                c.gridx = 0; c.gridy = 1;
-               c.gridwidth = 3;
+               c.gridwidth = 4;
                c.fill = GridBagConstraints.NONE;
                c.anchor = GridBagConstraints.LINE_START;
                c.insets = il;
@@ -152,8 +142,8 @@ public class AltosConfigUI
                pane.add(version_label, c);
 
                c = new GridBagConstraints();
-               c.gridx = 3; c.gridy = 1;
-               c.gridwidth = 3;
+               c.gridx = 4; c.gridy = 1;
+               c.gridwidth = 4;
                c.fill = GridBagConstraints.HORIZONTAL;
                c.weightx = 1;
                c.anchor = GridBagConstraints.LINE_START;
@@ -165,7 +155,7 @@ public class AltosConfigUI
                /* Serial */
                c = new GridBagConstraints();
                c.gridx = 0; c.gridy = 2;
-               c.gridwidth = 3;
+               c.gridwidth = 4;
                c.fill = GridBagConstraints.NONE;
                c.anchor = GridBagConstraints.LINE_START;
                c.insets = il;
@@ -174,8 +164,8 @@ public class AltosConfigUI
                pane.add(serial_label, c);
 
                c = new GridBagConstraints();
-               c.gridx = 3; c.gridy = 2;
-               c.gridwidth = 3;
+               c.gridx = 4; c.gridy = 2;
+               c.gridwidth = 4;
                c.fill = GridBagConstraints.HORIZONTAL;
                c.weightx = 1;
                c.anchor = GridBagConstraints.LINE_START;
@@ -187,7 +177,7 @@ public class AltosConfigUI
                /* Main deploy */
                c = new GridBagConstraints();
                c.gridx = 0; c.gridy = 3;
-               c.gridwidth = 3;
+               c.gridwidth = 4;
                c.fill = GridBagConstraints.NONE;
                c.anchor = GridBagConstraints.LINE_START;
                c.insets = il;
@@ -196,8 +186,8 @@ public class AltosConfigUI
                pane.add(main_deploy_label, c);
 
                c = new GridBagConstraints();
-               c.gridx = 3; c.gridy = 3;
-               c.gridwidth = 3;
+               c.gridx = 4; c.gridy = 3;
+               c.gridwidth = 4;
                c.fill = GridBagConstraints.HORIZONTAL;
                c.weightx = 1;
                c.anchor = GridBagConstraints.LINE_START;
@@ -211,7 +201,7 @@ public class AltosConfigUI
                /* Apogee delay */
                c = new GridBagConstraints();
                c.gridx = 0; c.gridy = 4;
-               c.gridwidth = 3;
+               c.gridwidth = 4;
                c.fill = GridBagConstraints.NONE;
                c.anchor = GridBagConstraints.LINE_START;
                c.insets = il;
@@ -220,8 +210,8 @@ public class AltosConfigUI
                pane.add(apogee_delay_label, c);
 
                c = new GridBagConstraints();
-               c.gridx = 3; c.gridy = 4;
-               c.gridwidth = 3;
+               c.gridx = 4; c.gridy = 4;
+               c.gridwidth = 4;
                c.fill = GridBagConstraints.HORIZONTAL;
                c.weightx = 1;
                c.anchor = GridBagConstraints.LINE_START;
@@ -235,7 +225,7 @@ public class AltosConfigUI
                /* Radio channel */
                c = new GridBagConstraints();
                c.gridx = 0; c.gridy = 5;
-               c.gridwidth = 3;
+               c.gridwidth = 4;
                c.fill = GridBagConstraints.NONE;
                c.anchor = GridBagConstraints.LINE_START;
                c.insets = il;
@@ -244,8 +234,8 @@ public class AltosConfigUI
                pane.add(radio_channel_label, c);
 
                c = new GridBagConstraints();
-               c.gridx = 3; c.gridy = 5;
-               c.gridwidth = 3;
+               c.gridx = 4; c.gridy = 5;
+               c.gridwidth = 4;
                c.fill = GridBagConstraints.HORIZONTAL;
                c.weightx = 1;
                c.anchor = GridBagConstraints.LINE_START;
@@ -254,12 +244,39 @@ public class AltosConfigUI
                radio_channel_value = new JComboBox(radio_channel_values);
                radio_channel_value.setEditable(false);
                radio_channel_value.addItemListener(this);
+               if (remote)
+                       radio_channel_value.setEnabled(false);
                pane.add(radio_channel_value, c);
 
-               /* Callsign */
+               /* Radio Calibration */
                c = new GridBagConstraints();
                c.gridx = 0; c.gridy = 6;
-               c.gridwidth = 3;
+               c.gridwidth = 4;
+               c.fill = GridBagConstraints.NONE;
+               c.anchor = GridBagConstraints.LINE_START;
+               c.insets = il;
+               c.ipady = 5;
+               radio_calibration_label = new JLabel("RF Calibration:");
+               pane.add(radio_calibration_label, c);
+
+               c = new GridBagConstraints();
+               c.gridx = 4; c.gridy = 6;
+               c.gridwidth = 4;
+               c.fill = GridBagConstraints.HORIZONTAL;
+               c.weightx = 1;
+               c.anchor = GridBagConstraints.LINE_START;
+               c.insets = ir;
+               c.ipady = 5;
+               radio_calibration_value = new JTextField(String.format("%d", 1186611));
+               radio_calibration_value.getDocument().addDocumentListener(this);
+               if (remote)
+                       radio_calibration_value.setEnabled(false);
+               pane.add(radio_calibration_value, c);
+
+               /* Callsign */
+               c = new GridBagConstraints();
+               c.gridx = 0; c.gridy = 7;
+               c.gridwidth = 4;
                c.fill = GridBagConstraints.NONE;
                c.anchor = GridBagConstraints.LINE_START;
                c.insets = il;
@@ -268,50 +285,61 @@ public class AltosConfigUI
                pane.add(callsign_label, c);
 
                c = new GridBagConstraints();
-               c.gridx = 3; c.gridy = 6;
-               c.gridwidth = 3;
+               c.gridx = 4; c.gridy = 7;
+               c.gridwidth = 4;
                c.fill = GridBagConstraints.HORIZONTAL;
                c.weightx = 1;
                c.anchor = GridBagConstraints.LINE_START;
                c.insets = ir;
                c.ipady = 5;
-               callsign_value = new JTextField("N0CALL");
+               callsign_value = new JTextField(AltosPreferences.callsign());
                callsign_value.getDocument().addDocumentListener(this);
                pane.add(callsign_value, c);
 
                /* Buttons */
                c = new GridBagConstraints();
-               c.gridx = 0; c.gridy = 7;
-               c.gridwidth = 6;
+               c.gridx = 0; c.gridy = 8;
+               c.gridwidth = 2;
                c.fill = GridBagConstraints.NONE;
                c.anchor = GridBagConstraints.LINE_START;
                c.insets = il;
                save = new JButton("Save");
                pane.add(save, c);
                save.addActionListener(this);
-               save.setActionCommand("save");
+               save.setActionCommand("Save");
 
                c = new GridBagConstraints();
-               c.gridx = 0; c.gridy = 7;
-               c.gridwidth = 6;
+               c.gridx = 2; c.gridy = 8;
+               c.gridwidth = 2;
                c.fill = GridBagConstraints.NONE;
                c.anchor = GridBagConstraints.CENTER;
                c.insets = il;
                reset = new JButton("Reset");
                pane.add(reset, c);
                reset.addActionListener(this);
-               reset.setActionCommand("reset");
+               reset.setActionCommand("Reset");
 
                c = new GridBagConstraints();
-               c.gridx = 0; c.gridy = 7;
-               c.gridwidth = 6;
+               c.gridx = 4; c.gridy = 8;
+               c.gridwidth = 2;
+               c.fill = GridBagConstraints.NONE;
+               c.anchor = GridBagConstraints.CENTER;
+               c.insets = il;
+               reboot = new JButton("Reboot");
+               pane.add(reboot, c);
+               reboot.addActionListener(this);
+               reboot.setActionCommand("Reboot");
+
+               c = new GridBagConstraints();
+               c.gridx = 6; c.gridy = 8;
+               c.gridwidth = 2;
                c.fill = GridBagConstraints.NONE;
                c.anchor = GridBagConstraints.LINE_END;
                c.insets = il;
                close = new JButton("Close");
                pane.add(close, c);
                close.addActionListener(this);
-               close.setActionCommand("close");
+               close.setActionCommand("Close");
 
                addWindowListener(new ConfigListener(this));
        }
@@ -324,12 +352,12 @@ public class AltosConfigUI
        }
 
        /* If any values have been changed, confirm before closing */
-       public boolean check_dirty() {
+       public boolean check_dirty(String operation) {
                if (dirty) {
-                       Object[] options = { "Close anyway", "Keep editing" };
+                       Object[] options = { String.format("%s anyway", operation), "Keep editing" };
                        int i;
                        i = JOptionPane.showOptionDialog(this,
-                                                        "Configuration modified, close anyway?",
+                                                        String.format("Configuration modified. %s anyway?", operation),
                                                         "Configuration Modified",
                                                         JOptionPane.DEFAULT_OPTION,
                                                         JOptionPane.WARNING_MESSAGE,
@@ -344,11 +372,11 @@ public class AltosConfigUI
        public void actionPerformed(ActionEvent e) {
                String  cmd = e.getActionCommand();
 
-               if (cmd.equals("close"))
-                       if (!check_dirty())
+               if (cmd.equals("Close") || cmd.equals("Reboot"))
+                       if (!check_dirty(cmd))
                                return;
                listener.actionPerformed(e);
-               if (cmd.equals("close")) {
+               if (cmd.equals("Close") || cmd.equals("Reboot")) {
                        setVisible(false);
                        dispose();
                }
@@ -415,6 +443,14 @@ public class AltosConfigUI
                return radio_channel_value.getSelectedIndex();
        }
 
+       public void set_radio_calibration(int new_radio_calibration) {
+               radio_calibration_value.setText(String.format("%d", new_radio_calibration));
+       }
+
+       public int radio_calibration() {
+               return Integer.parseInt(radio_calibration_value.getText());
+       }
+
        public void set_callsign(String new_callsign) {
                callsign_value.setText(new_callsign);
        }