Add Mini logging format. Use in EasyMini
[fw/altos] / altosui / AltosLanded.java
index 71c1066318bad9c0410e994d7b76429ab41937c5..9dab52c436098b8ea0f2a8a90bd5a8829d9276d3 100644 (file)
@@ -20,23 +20,16 @@ package altosui;
 import java.awt.*;
 import java.awt.event.*;
 import javax.swing.*;
-import javax.swing.filechooser.FileNameExtensionFilter;
-import javax.swing.table.*;
 import java.io.*;
-import java.util.*;
-import java.text.*;
-import java.util.prefs.*;
-import java.util.concurrent.LinkedBlockingQueue;
+import org.altusmetrum.altoslib_1.*;
 
 public class AltosLanded extends JComponent implements AltosFlightDisplay, ActionListener {
        GridBagLayout   layout;
-       Font            label_font;
-       Font            value_font;
 
        public class LandedValue {
                JLabel          label;
                JTextField      value;
-               void show(AltosState state, int crc_errors) {}
+               void show(AltosState state, AltosListenerState listener_state) {}
 
                void reset() {
                        value.setText("");
@@ -47,23 +40,35 @@ public class AltosLanded extends JComponent implements AltosFlightDisplay, Actio
                        value.setVisible(true);
                }
 
-               void hide() {
-                       label.setVisible(false);
-                       value.setVisible(false);
+               void show(String s) {
+                       show();
+                       value.setText(s);
+               }
+               
+               void show(AltosUnits units, double v) {
+                       show(units.show(8, v));
                }
 
                void show(String format, double v) {
-                       show();
-                       value.setText(String.format(format, v));
+                       show(String.format(format, v));
                }
 
+               public void set_font() {
+                       label.setFont(Altos.label_font);
+                       value.setFont(Altos.value_font);
+               }
+
+               void hide() {
+                       label.setVisible(false);
+                       value.setVisible(false);
+               }
 
                public LandedValue (GridBagLayout layout, int y, String text) {
                        GridBagConstraints      c = new GridBagConstraints();
                        c.weighty = 1;
 
                        label = new JLabel(text);
-                       label.setFont(label_font);
+                       label.setFont(Altos.label_font);
                        label.setHorizontalAlignment(SwingConstants.LEFT);
                        c.gridx = 0; c.gridy = y;
                        c.insets = new Insets(10, 10, 10, 10);
@@ -74,7 +79,7 @@ public class AltosLanded extends JComponent implements AltosFlightDisplay, Actio
                        add(label);
 
                        value = new JTextField(Altos.text_width);
-                       value.setFont(value_font);
+                       value.setFont(Altos.value_font);
                        value.setHorizontalAlignment(SwingConstants.RIGHT);
                        c.gridx = 1; c.gridy = y;
                        c.anchor = GridBagConstraints.WEST;
@@ -97,12 +102,11 @@ public class AltosLanded extends JComponent implements AltosFlightDisplay, Actio
        }
 
        class Lat extends LandedValue {
-               void show (AltosState state, int crc_errors) {
-                       show();
+               void show (AltosState state, AltosListenerState listener_state) {
                        if (state.gps != null && state.gps.connected)
-                               value.setText(pos(state.gps.lat,"N", "S"));
+                               show(pos(state.gps.lat,"N", "S"));
                        else
-                               value.setText("???");
+                               show("???");
                }
                public Lat (GridBagLayout layout, int y) {
                        super (layout, y, "Latitude");
@@ -112,12 +116,12 @@ public class AltosLanded extends JComponent implements AltosFlightDisplay, Actio
        Lat lat;
 
        class Lon extends LandedValue {
-               void show (AltosState state, int crc_errors) {
+               void show (AltosState state, AltosListenerState listener_state) {
                        show();
                        if (state.gps != null && state.gps.connected)
-                               value.setText(pos(state.gps.lon,"E", "W"));
+                               show(pos(state.gps.lon,"E", "W"));
                        else
-                               value.setText("???");
+                               show("???");
                }
                public Lon (GridBagLayout layout, int y) {
                        super (layout, y, "Longitude");
@@ -127,12 +131,12 @@ public class AltosLanded extends JComponent implements AltosFlightDisplay, Actio
        Lon lon;
 
        class Bearing extends LandedValue {
-               void show (AltosState state, int crc_errors) {
+               void show (AltosState state, AltosListenerState listener_state) {
                        show();
                        if (state.from_pad != null)
                                show("%3.0f°", state.from_pad.bearing);
                        else
-                               value.setText("???");
+                               show("???");
                }
                public Bearing (GridBagLayout layout, int y) {
                        super (layout, y, "Bearing");
@@ -142,12 +146,12 @@ public class AltosLanded extends JComponent implements AltosFlightDisplay, Actio
        Bearing bearing;
 
        class Distance extends LandedValue {
-               void show (AltosState state, int crc_errors) {
+               void show (AltosState state, AltosListenerState listener_state) {
                        show();
                        if (state.from_pad != null)
-                               show("%6.0f m", state.from_pad.distance);
+                               show(AltosConvert.distance, state.from_pad.distance);
                        else
-                               value.setText("???");
+                               show("???");
                }
                public Distance (GridBagLayout layout, int y) {
                        super (layout, y, "Distance");
@@ -157,8 +161,8 @@ public class AltosLanded extends JComponent implements AltosFlightDisplay, Actio
        Distance distance;
 
        class Height extends LandedValue {
-               void show (AltosState state, int crc_errors) {
-                       show("%6.0f m", state.max_height);
+               void show (AltosState state, AltosListenerState listener_state) {
+                       show(AltosConvert.height, state.max_height);
                }
                public Height (GridBagLayout layout, int y) {
                        super (layout, y, "Maximum Height");
@@ -168,8 +172,8 @@ public class AltosLanded extends JComponent implements AltosFlightDisplay, Actio
        Height  height;
 
        class Speed extends LandedValue {
-               void show (AltosState state, int crc_errors) {
-                       show("%6.0f m/s", state.max_speed);
+               void show (AltosState state, AltosListenerState listener_state) {
+                       show(AltosConvert.speed, state.max_speed());
                }
                public Speed (GridBagLayout layout, int y) {
                        super (layout, y, "Maximum Speed");
@@ -179,8 +183,8 @@ public class AltosLanded extends JComponent implements AltosFlightDisplay, Actio
        Speed   speed;
 
        class Accel extends LandedValue {
-               void show (AltosState state, int crc_errors) {
-                       show("%6.0f m/s²", state.max_acceleration);
+               void show (AltosState state, AltosListenerState listener_state) {
+                       show(AltosConvert.accel, state.max_acceleration);
                }
                public Accel (GridBagLayout layout, int y) {
                        super (layout, y, "Maximum Acceleration");
@@ -199,21 +203,31 @@ public class AltosLanded extends JComponent implements AltosFlightDisplay, Actio
                accel.reset();
        }
 
-       public void show(AltosState state, int crc_errors) {
+       public void set_font() {
+               lat.set_font();
+               lon.set_font();
+               bearing.set_font();
+               distance.set_font();
+               height.set_font();
+               speed.set_font();
+               accel.set_font();
+       }
+
+       public void show(AltosState state, AltosListenerState listener_state) {
                if (state.gps != null && state.gps.connected) {
-                       bearing.show(state, crc_errors);
-                       distance.show(state, crc_errors);
-                       lat.show(state, crc_errors);
-                       lon.show(state, crc_errors);
+                       bearing.show(state, listener_state);
+                       distance.show(state, listener_state);
+                       lat.show(state, listener_state);
+                       lon.show(state, listener_state);
                } else {
                        bearing.hide();
                        distance.hide();
                        lat.hide();
                        lon.hide();
                }
-               height.show(state, crc_errors);
-               speed.show(state, crc_errors);
-               accel.show(state, crc_errors);
+               height.show(state, listener_state);
+               speed.show(state, listener_state);
+               accel.show(state, listener_state);
                if (reader.backing_file() != null)
                        graph.setEnabled(true);
        }
@@ -236,17 +250,23 @@ public class AltosLanded extends JComponent implements AltosFlightDisplay, Actio
                                        } else if (filename.endsWith("telem")) {
                                                FileInputStream in = new FileInputStream(file);
                                                records = new AltosTelemetryIterable(in);
+                                       } else if (filename.endsWith("mega")) {
+                                               FileInputStream in = new FileInputStream(file);
+                                               records = new AltosEepromMegaIterable(in);
+                                       } else if (filename.endsWith("mini")) {
+                                               FileInputStream in = new FileInputStream(file);
+                                               records = new AltosEepromMiniIterable(in);
                                        } else {
-                                               throw new FileNotFoundException();
+                                               throw new FileNotFoundException(filename);
                                        }
                                        try {
-                                               new AltosGraphUI(records, filename);
+                                               new AltosGraphUI(records, file);
                                        } catch (InterruptedException ie) {
                                        } catch (IOException ie) {
                                        }
                                } catch (FileNotFoundException fe) {
                                        JOptionPane.showMessageDialog(null,
-                                                                     filename,
+                                                                     fe.getMessage(),
                                                                      "Cannot open file",
                                                                      JOptionPane.ERROR_MESSAGE);
                                }
@@ -254,13 +274,15 @@ public class AltosLanded extends JComponent implements AltosFlightDisplay, Actio
                }
        }
 
+       public String getName() {
+               return "Landed";
+       }
+
        public AltosLanded(AltosFlightReader in_reader) {
                layout = new GridBagLayout();
 
                reader = in_reader;
 
-               label_font = new Font("Dialog", Font.PLAIN, 22);
-               value_font = new Font("Monospaced", Font.PLAIN, 22);
                setLayout(layout);
 
                /* Elements in descent display */