diff options
| author | Keith Packard <keithp@keithp.com> | 2010-11-10 22:11:21 -0800 | 
|---|---|---|
| committer | Keith Packard <keithp@keithp.com> | 2010-11-10 22:11:21 -0800 | 
| commit | 5394548fa5c7bdbfcc01e8aa19e93e1cf6345e2a (patch) | |
| tree | 5e50323e8eb6bbb21676da20bb3654c3f2910cf0 /ao-tools | |
| parent | 891e629f6ba20654b614f3ca7211a0f1c92670cb (diff) | |
| parent | 75f7698b99a661ed17a91748a99699fa6761772a (diff) | |
Merge remote branch 'aj/buttonbox' into buttonbox
Diffstat (limited to 'ao-tools')
| -rw-r--r-- | ao-tools/altosui/AltosAscent.java | 14 | ||||
| -rw-r--r-- | ao-tools/altosui/AltosDescent.java | 56 | ||||
| -rw-r--r-- | ao-tools/altosui/AltosDisplayThread.java | 4 | ||||
| -rw-r--r-- | ao-tools/altosui/AltosFlightUI.java | 2 | ||||
| -rw-r--r-- | ao-tools/altosui/AltosGreatCircle.java | 25 | ||||
| -rw-r--r-- | ao-tools/altosui/AltosInfoTable.java | 4 | ||||
| -rw-r--r-- | ao-tools/altosui/AltosLanded.java | 6 | ||||
| -rw-r--r-- | ao-tools/altosui/AltosLights.java | 2 | ||||
| -rw-r--r-- | ao-tools/altosui/AltosPad.java | 8 | ||||
| -rw-r--r-- | ao-tools/altosui/AltosUI.java | 21 | 
10 files changed, 115 insertions, 27 deletions
diff --git a/ao-tools/altosui/AltosAscent.java b/ao-tools/altosui/AltosAscent.java index 40df7af8..51fa1a89 100644 --- a/ao-tools/altosui/AltosAscent.java +++ b/ao-tools/altosui/AltosAscent.java @@ -53,8 +53,8 @@ public class AltosAscent extends JComponent implements AltosFlightDisplay {  			layout.setConstraints(label, c);  			add(label); -			value = new JTextField(20); -			value.setFont(label_font); +			value = new JTextField(30); +			value.setFont(value_font);  			value.setHorizontalAlignment(SwingConstants.RIGHT);  			c.gridx = 1; c.gridy = y;  			c.anchor = GridBagConstraints.WEST; @@ -98,16 +98,16 @@ public class AltosAscent extends JComponent implements AltosFlightDisplay {  			layout.setConstraints(label, c);  			add(label); -			value = new JTextField(10); -			value.setFont(label_font); +			value = new JTextField(15); +			value.setFont(value_font);  			value.setHorizontalAlignment(SwingConstants.RIGHT);  			c.gridx = 1; c.gridy = y;  			c.anchor = GridBagConstraints.EAST;  			layout.setConstraints(value, c);  			add(value); -			max_value = new JTextField(10); -			max_value.setFont(label_font); +			max_value = new JTextField(15); +			max_value.setFont(value_font);  			max_value.setHorizontalAlignment(SwingConstants.RIGHT);  			c.gridx = 2; c.gridy = y;  			c.anchor = GridBagConstraints.EAST; @@ -231,7 +231,7 @@ public class AltosAscent extends JComponent implements AltosFlightDisplay {  		layout = new GridBagLayout();  		label_font = new Font("Dialog", Font.PLAIN, 24); -		value_font = new Font("Monospace", Font.PLAIN, 24); +		value_font = new Font("Monospaced", Font.PLAIN, 24);  		setLayout(layout);  		/* Elements in ascent display: diff --git a/ao-tools/altosui/AltosDescent.java b/ao-tools/altosui/AltosDescent.java index 0d3d17f0..56d3e4fe 100644 --- a/ao-tools/altosui/AltosDescent.java +++ b/ao-tools/altosui/AltosDescent.java @@ -58,10 +58,11 @@ public class AltosDescent extends JComponent implements AltosFlightDisplay {  			layout.setConstraints(label, c);  			add(label); -			value = new JTextField(20); -			value.setFont(label_font); +			value = new JTextField(30); +			value.setFont(value_font);  			value.setHorizontalAlignment(SwingConstants.RIGHT);  			c.gridx = 1; c.gridy = y; +			c.gridwidth = 2;  			c.anchor = GridBagConstraints.WEST;  			c.fill = GridBagConstraints.HORIZONTAL;  			layout.setConstraints(value, c); @@ -133,15 +134,54 @@ public class AltosDescent extends JComponent implements AltosFlightDisplay {  	Lon lon; -	class Bearing extends DescentValue { +	class Bearing { +		JLabel		label; +		JTextField	value; +		JTextField	value_deg; +        void reset () { +			value.setText(""); +			value_deg.setText(""); +        }  		void show (AltosState state, int crc_errors) { -			if (state.from_pad != null) -				show("%3.0f°", state.from_pad.bearing); -			else +			if (state.from_pad != null) { +                value.setText(state.from_pad.bearing_words( +                                AltosGreatCircle.BEARING_LONG)); +				value_deg.setText(String.format("%3.0f°", state.from_pad.bearing)); +			} else {  				value.setText("???"); +				value_deg.setText("???"); +            }  		}  		public Bearing (GridBagLayout layout, int y) { -			super (layout, y, "Bearing"); +            GridBagConstraints      c = new GridBagConstraints(); + +            label = new JLabel("Bearing"); +            label.setFont(label_font); +            label.setHorizontalAlignment(SwingConstants.LEFT); +            c.gridx = 0; c.gridy = y; +            c.insets = new Insets(10, 10, 10, 10); +            c.anchor = GridBagConstraints.WEST; +            layout.setConstraints(label, c); +            add(label); + +            value = new JTextField(30); +            value.setFont(value_font); +            value.setHorizontalAlignment(SwingConstants.RIGHT); +            c.gridx = 1; c.gridy = y; +            c.anchor = GridBagConstraints.EAST; +            c.fill = GridBagConstraints.HORIZONTAL; +            layout.setConstraints(value, c); +            add(value); + +            value_deg = new JTextField(5); +            value_deg.setFont(value_font); +            value_deg.setHorizontalAlignment(SwingConstants.RIGHT); +            c.gridx = 2; c.gridy = y; +            c.anchor = GridBagConstraints.EAST; +            c.fill = GridBagConstraints.HORIZONTAL; + +            layout.setConstraints(value_deg, c); +            add(value_deg);  		}  	} @@ -196,7 +236,7 @@ public class AltosDescent extends JComponent implements AltosFlightDisplay {  		layout = new GridBagLayout();  		label_font = new Font("Dialog", Font.PLAIN, 24); -		value_font = new Font("Monospace", Font.PLAIN, 24); +		value_font = new Font("Monospaced", Font.PLAIN, 24);  		setLayout(layout);  		/* Elements in descent display */ diff --git a/ao-tools/altosui/AltosDisplayThread.java b/ao-tools/altosui/AltosDisplayThread.java index b5b2777e..375965b9 100644 --- a/ao-tools/altosui/AltosDisplayThread.java +++ b/ao-tools/altosui/AltosDisplayThread.java @@ -69,8 +69,10 @@ public class AltosDisplayThread extends Thread {  			    state.state < Altos.ao_flight_landed &&  			    state.range >= 0)  			{ -				voice.speak("Height %d, bearing %d, elevation %d, range %d.\n", +				voice.speak("Height %d, bearing %s %d, elevation %d, range %d.\n",  					    (int) (state.height + 0.5), +                        state.from_pad.bearing_words( +                            AltosGreatCircle.BEARING_VOICE),  					    (int) (state.from_pad.bearing + 0.5),  					    (int) (state.elevation + 0.5),  					    (int) (state.range + 0.5)); diff --git a/ao-tools/altosui/AltosFlightUI.java b/ao-tools/altosui/AltosFlightUI.java index 558b0395..3581c54c 100644 --- a/ao-tools/altosui/AltosFlightUI.java +++ b/ao-tools/altosui/AltosFlightUI.java @@ -122,6 +122,8 @@ public class AltosFlightUI extends JFrame implements AltosFlightDisplay {  	}  	public AltosFlightUI(AltosVoice in_voice, AltosFlightReader in_reader, final int serial) { +        AltosPreferences.init(this); +  		voice = in_voice;  		reader = in_reader; diff --git a/ao-tools/altosui/AltosGreatCircle.java b/ao-tools/altosui/AltosGreatCircle.java index 07c02c16..aa6ae3b9 100644 --- a/ao-tools/altosui/AltosGreatCircle.java +++ b/ao-tools/altosui/AltosGreatCircle.java @@ -30,6 +30,31 @@ public class AltosGreatCircle {  	static final double rad = Math.PI / 180;  	static final double earth_radius = 6371.2 * 1000;	/* in meters */ +    static int BEARING_LONG = 0; +    static int BEARING_SHORT = 1; +    static int BEARING_VOICE = 2; +    String bearing_words(int length) { +        String [][] bearing_string = { +          { +            "North", "North North East", "North East", "East North East", +            "East", "East South East", "South East", "South South East", +            "South", "South South West", "South West", "West South West", +            "West", "West North West", "North West", "North North West" +          }, { +            "N", "NNE", "NE", "ENE", +            "E", "ESE", "SE", "SSE", +            "S", "SSW", "SW", "WSW", +            "W", "WNW", "NW", "NNW" +          }, { +            "north", "nor nor east", "north east", "east nor east", +            "east", "east sow east", "south east", "sow sow east", +            "south", "sow sow west", "south west", "west sow west", +            "west", "west nor west", "north west", "nor nor west " +          } +        }; +        return bearing_string[length][(int)((bearing / 90 * 8 + 1) / 2)%16]; +    } +  	public AltosGreatCircle (double start_lat, double start_lon,  				 double end_lat, double end_lon)  	{ diff --git a/ao-tools/altosui/AltosInfoTable.java b/ao-tools/altosui/AltosInfoTable.java index 9964ab10..2f326e07 100644 --- a/ao-tools/altosui/AltosInfoTable.java +++ b/ao-tools/altosui/AltosInfoTable.java @@ -37,8 +37,8 @@ public class AltosInfoTable {  	private AltosFlightInfoTableModel model[];  	private Box			  ibox[]; -	private Font infoLabelFont = new Font("SansSerif", Font.PLAIN, 14); -	private Font infoValueFont = new Font("Monospaced", Font.PLAIN, 14); +	private Font infoLabelFont = new Font("SansSerif", Font.PLAIN, 12); +	private Font infoValueFont = new Font("Monospaced", Font.PLAIN, 12);  	static final int info_columns = 3;  	static final int info_rows = 17; diff --git a/ao-tools/altosui/AltosLanded.java b/ao-tools/altosui/AltosLanded.java index 4b74aaa3..d170ccad 100644 --- a/ao-tools/altosui/AltosLanded.java +++ b/ao-tools/altosui/AltosLanded.java @@ -58,8 +58,8 @@ public class AltosLanded extends JComponent implements AltosFlightDisplay {  			layout.setConstraints(label, c);  			add(label); -			value = new JTextField(20); -			value.setFont(label_font); +			value = new JTextField(30); +			value.setFont(value_font);  			value.setHorizontalAlignment(SwingConstants.RIGHT);  			c.gridx = 1; c.gridy = y;  			c.anchor = GridBagConstraints.WEST; @@ -193,7 +193,7 @@ public class AltosLanded extends JComponent implements AltosFlightDisplay {  		layout = new GridBagLayout();  		label_font = new Font("Dialog", Font.PLAIN, 24); -		value_font = new Font("Monospace", Font.PLAIN, 24); +		value_font = new Font("Monospaced", Font.PLAIN, 24);  		setLayout(layout);  		/* Elements in descent display */ diff --git a/ao-tools/altosui/AltosLights.java b/ao-tools/altosui/AltosLights.java index 08e6b4f8..2fa38412 100644 --- a/ao-tools/altosui/AltosLights.java +++ b/ao-tools/altosui/AltosLights.java @@ -70,4 +70,4 @@ public class AltosLights extends JComponent {  		add(green);  		green.set(false);  	} -}
\ No newline at end of file +} diff --git a/ao-tools/altosui/AltosPad.java b/ao-tools/altosui/AltosPad.java index 7b72be20..da047072 100644 --- a/ao-tools/altosui/AltosPad.java +++ b/ao-tools/altosui/AltosPad.java @@ -64,8 +64,8 @@ public class AltosPad extends JComponent implements AltosFlightDisplay {  			layout.setConstraints(label, c);  			add(label); -			value = new JTextField(10); -			value.setFont(label_font); +			value = new JTextField(15); +			value.setFont(value_font);  			value.setHorizontalAlignment(SwingConstants.RIGHT);  			c.gridx = 2; c.gridy = y;  			c.anchor = GridBagConstraints.WEST; @@ -95,8 +95,8 @@ public class AltosPad extends JComponent implements AltosFlightDisplay {  			layout.setConstraints(label, c);  			add(label); -			value = new JTextField(20); -			value.setFont(label_font); +			value = new JTextField(30); +			value.setFont(value_font);  			value.setHorizontalAlignment(SwingConstants.RIGHT);  			c.gridx = 2; c.gridy = y;  			c.anchor = GridBagConstraints.EAST; diff --git a/ao-tools/altosui/AltosUI.java b/ao-tools/altosui/AltosUI.java index ded9e733..2861444d 100644 --- a/ao-tools/altosui/AltosUI.java +++ b/ao-tools/altosui/AltosUI.java @@ -456,7 +456,26 @@ public class AltosUI extends JFrame {  	public static void main(final String[] args) {  		int	process = 0;  		/* Handle batch-mode */ -		if (args.length > 0) { +        if (args.length == 2 && args[0].equals("--replay")) { +            String filename = args[1]; +            FileInputStream in; +            try { +                in = new FileInputStream(filename); +            } catch (Exception e) { +                System.out.printf("Failed to open file '%s'\n", filename); +                return; +            } +            AltosRecordIterable recs; +            AltosReplayReader reader; +            if (filename.endsWith("eeprom")) { +              recs = new AltosEepromIterable(in); +            } else { +              recs = new AltosTelemetryIterable(in);  +            } +            reader = new AltosReplayReader(recs.iterator(), filename); +            new AltosFlightUI(new AltosVoice(), reader); +            return; +        } else if (args.length > 0) {  			for (int i = 0; i < args.length; i++) {  				if (args[i].equals("--kml"))  					process |= process_kml;  | 
