From: Anthony Towns Date: Sat, 20 Nov 2010 15:27:01 +0000 (+1000) Subject: AltosAscent/Descent: tidy up layout X-Git-Tag: debian/0.7.1+117+ge7954c8~13 X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=commitdiff_plain;h=89f44c5587ea4f927d5e398b6af919df0d6561c3;ds=sidebyside AltosAscent/Descent: tidy up layout --- diff --git a/ao-tools/altosui/AltosAscent.java b/ao-tools/altosui/AltosAscent.java index 38ced95e..9bba6633 100644 --- a/ao-tools/altosui/AltosAscent.java +++ b/ao-tools/altosui/AltosAscent.java @@ -69,6 +69,7 @@ public class AltosAscent extends JComponent implements AltosFlightDisplay { value.setFont(Altos.value_font); value.setHorizontalAlignment(SwingConstants.RIGHT); c.gridx = 2; c.gridy = y; + c.gridwidth = 2; c.anchor = GridBagConstraints.WEST; c.fill = GridBagConstraints.BOTH; c.weightx = 1; @@ -93,7 +94,7 @@ public class AltosAscent extends JComponent implements AltosFlightDisplay { label = new JLabel(text); label.setFont(Altos.label_font); label.setHorizontalAlignment(SwingConstants.LEFT); - c.gridx = 0; c.gridy = y; + c.gridx = 1; c.gridy = y; c.insets = new Insets(Altos.tab_elt_pad, Altos.tab_elt_pad, Altos.tab_elt_pad, Altos.tab_elt_pad); c.anchor = GridBagConstraints.WEST; c.fill = GridBagConstraints.VERTICAL; @@ -104,7 +105,7 @@ public class AltosAscent extends JComponent implements AltosFlightDisplay { value = new JTextField(30); value.setFont(Altos.value_font); value.setHorizontalAlignment(SwingConstants.RIGHT); - c.gridx = 1; c.gridy = y; + c.gridx = 2; c.gridy = y; c.anchor = GridBagConstraints.WEST; c.fill = GridBagConstraints.BOTH; c.gridwidth = 2; @@ -142,7 +143,7 @@ public class AltosAscent extends JComponent implements AltosFlightDisplay { label = new JLabel(text); label.setFont(Altos.label_font); label.setHorizontalAlignment(SwingConstants.LEFT); - c.gridx = 0; c.gridy = y; + c.gridx = 1; c.gridy = y; c.insets = new Insets(Altos.tab_elt_pad, Altos.tab_elt_pad, Altos.tab_elt_pad, Altos.tab_elt_pad); c.anchor = GridBagConstraints.WEST; c.fill = GridBagConstraints.VERTICAL; @@ -153,7 +154,7 @@ public class AltosAscent extends JComponent implements AltosFlightDisplay { value = new JTextField(15); value.setFont(Altos.value_font); value.setHorizontalAlignment(SwingConstants.RIGHT); - c.gridx = 1; c.gridy = y; + c.gridx = 2; c.gridy = y; c.anchor = GridBagConstraints.EAST; c.fill = GridBagConstraints.BOTH; c.weightx = 1; @@ -163,7 +164,7 @@ public class AltosAscent extends JComponent implements AltosFlightDisplay { max_value = new JTextField(15); max_value.setFont(Altos.value_font); max_value.setHorizontalAlignment(SwingConstants.RIGHT); - c.gridx = 2; c.gridy = y; + c.gridx = 3; c.gridy = y; c.anchor = GridBagConstraints.EAST; c.fill = GridBagConstraints.BOTH; c.weightx = 1; @@ -299,14 +300,14 @@ public class AltosAscent extends JComponent implements AltosFlightDisplay { cur = new JLabel("Current"); cur.setFont(Altos.label_font); c = new GridBagConstraints(); - c.gridx = 1; c.gridy = y; + c.gridx = 2; c.gridy = y; c.insets = new Insets(Altos.tab_elt_pad, Altos.tab_elt_pad, Altos.tab_elt_pad, Altos.tab_elt_pad); layout.setConstraints(cur, c); add(cur); max = new JLabel("Maximum"); max.setFont(Altos.label_font); - c.gridx = 2; c.gridy = y; + c.gridx = 3; c.gridy = y; layout.setConstraints(max, c); add(max); } diff --git a/ao-tools/altosui/AltosDescent.java b/ao-tools/altosui/AltosDescent.java index aacd2998..379946e1 100644 --- a/ao-tools/altosui/AltosDescent.java +++ b/ao-tools/altosui/AltosDescent.java @@ -31,12 +31,12 @@ import java.util.concurrent.LinkedBlockingQueue; public class AltosDescent extends JComponent implements AltosFlightDisplay { GridBagLayout layout; - public class DescentStatus { + public abstract class DescentStatus { JLabel label; JTextField value; AltosLights lights; - void show(AltosState state, int crc_errors) {} + abstract void show(AltosState state, int crc_errors); void reset() { value.setText(""); lights.set(false); @@ -69,6 +69,7 @@ public class AltosDescent extends JComponent implements AltosFlightDisplay { value.setFont(Altos.value_font); value.setHorizontalAlignment(SwingConstants.RIGHT); c.gridx = 2; c.gridy = y; + c.gridwidth = 2; c.anchor = GridBagConstraints.WEST; c.fill = GridBagConstraints.BOTH; c.weightx = 1; @@ -77,15 +78,17 @@ public class AltosDescent extends JComponent implements AltosFlightDisplay { } } - public class DescentValue { + + public abstract class DescentValue { JLabel label; JTextField value; - void show(AltosState state, int crc_errors) {} void reset() { value.setText(""); } + abstract void show(AltosState state, int crc_errors); + void show(String format, double v) { value.setText(String.format(format, v)); } @@ -97,7 +100,7 @@ public class AltosDescent extends JComponent implements AltosFlightDisplay { label = new JLabel(text); label.setFont(Altos.label_font); label.setHorizontalAlignment(SwingConstants.LEFT); - c.gridx = x + 0; c.gridy = y; + c.gridx = x + 1; c.gridy = y; c.insets = new Insets(Altos.tab_elt_pad, Altos.tab_elt_pad, Altos.tab_elt_pad, Altos.tab_elt_pad); c.anchor = GridBagConstraints.WEST; c.fill = GridBagConstraints.VERTICAL; @@ -108,7 +111,8 @@ public class AltosDescent extends JComponent implements AltosFlightDisplay { value = new JTextField(17); value.setFont(Altos.value_font); value.setHorizontalAlignment(SwingConstants.RIGHT); - c.gridx = x + 1; c.gridy = y; + c.gridx = x + 2; c.gridy = y; + c.gridwidth = 2; c.anchor = GridBagConstraints.WEST; c.fill = GridBagConstraints.BOTH; c.weightx = 1; @@ -117,12 +121,70 @@ public class AltosDescent extends JComponent implements AltosFlightDisplay { } } - class Height extends DescentValue { + public abstract class DescentDualValue { + JLabel label; + JTextField value1; + JTextField value2; + + void reset() { + value1.setText(""); + value2.setText(""); + } + + abstract void show(AltosState state, int crc_errors); + void show(String v1, String v2) { + value1.setText(v1); + value2.setText(v2); + } + void show(String f1, double v1, String f2, double v2) { + value1.setText(String.format(f1, v1)); + value2.setText(String.format(f2, v2)); + } + + public DescentDualValue (GridBagLayout layout, int x, int y, String text) { + GridBagConstraints c = new GridBagConstraints(); + c.weighty = 1; + + label = new JLabel(text); + label.setFont(Altos.label_font); + label.setHorizontalAlignment(SwingConstants.LEFT); + c.gridx = x + 1; c.gridy = y; + c.insets = new Insets(Altos.tab_elt_pad, Altos.tab_elt_pad, Altos.tab_elt_pad, Altos.tab_elt_pad); + c.anchor = GridBagConstraints.WEST; + c.fill = GridBagConstraints.VERTICAL; + c.weightx = 0; + layout.setConstraints(label, c); + add(label); + + value1 = new JTextField(17); + value1.setFont(Altos.value_font); + value1.setHorizontalAlignment(SwingConstants.RIGHT); + c.gridx = x + 2; c.gridy = y; + c.anchor = GridBagConstraints.WEST; + c.fill = GridBagConstraints.BOTH; + c.weightx = 1; + layout.setConstraints(value1, c); + add(value1); + + value2 = new JTextField(17); + value2.setFont(Altos.value_font); + value2.setHorizontalAlignment(SwingConstants.RIGHT); + c.gridx = x + 3; c.gridy = y; + c.anchor = GridBagConstraints.WEST; + c.fill = GridBagConstraints.BOTH; + c.weightx = 1; + layout.setConstraints(value2, c); + add(value2); + } + } + + class Height extends DescentDualValue { void show (AltosState state, int crc_errors) { - show("%6.0f m", state.height); + show("%6.0f m", state.height, + "%3.0f°", state.elevation); } public Height (GridBagLayout layout, int x, int y) { - super (layout, x, y, "Height"); + super (layout, x, y, "Height/Elevation"); } } @@ -153,33 +215,20 @@ public class AltosDescent extends JComponent implements AltosFlightDisplay { return String.format("%s %4d° %9.6f", h, deg, min); } - class Lat extends DescentValue { + class LatLon extends DescentDualValue { void show (AltosState state, int crc_errors) { if (state.gps != null) - value.setText(pos(state.gps.lat,"N", "S")); + show(pos(state.gps.lat,"N", "S"), + pos(state.gps.lon,"W", "E")); else - value.setText("???"); + show("???", "???"); } - public Lat (GridBagLayout layout, int x, int y) { - super (layout, x, y, "Latitude"); + public LatLon (GridBagLayout layout, int x, int y) { + super (layout, x, y, "Lat/Long"); } } - Lat lat; - - class Lon extends DescentValue { - void show (AltosState state, int crc_errors) { - if (state.gps != null) - value.setText(pos(state.gps.lon,"E", "W")); - else - value.setText("???"); - } - public Lon (GridBagLayout layout, int x, int y) { - super (layout, x, y, "Longitude"); - } - } - - Lon lon; + LatLon latlon; class Apogee extends DescentStatus { void show (AltosState state, int crc_errors) { @@ -205,78 +254,23 @@ public class AltosDescent extends JComponent implements AltosFlightDisplay { Main main; - class Bearing { - JLabel label; - JTextField value; - JTextField value_deg; - void reset () { - value.setText(""); - value_deg.setText(""); - } + class Bearing extends DescentDualValue { void show (AltosState state, int crc_errors) { 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)); + show( state.from_pad.bearing_words( + AltosGreatCircle.BEARING_LONG), + String.format("%3.0f°", state.from_pad.bearing)); } else { - value.setText("???"); - value_deg.setText("???"); + show("???", "???"); } } public Bearing (GridBagLayout layout, int x, int y) { - GridBagConstraints c = new GridBagConstraints(); - c.weighty = 1; - - label = new JLabel("Bearing"); - label.setFont(Altos.label_font); - label.setHorizontalAlignment(SwingConstants.LEFT); - c.gridx = x + 0; c.gridy = y; - c.insets = new Insets(Altos.tab_elt_pad, Altos.tab_elt_pad, Altos.tab_elt_pad, Altos.tab_elt_pad); - c.anchor = GridBagConstraints.WEST; - c.weightx = 0; - c.fill = GridBagConstraints.VERTICAL; - layout.setConstraints(label, c); - add(label); - - value = new JTextField(30); - value.setFont(Altos.value_font); - value.setHorizontalAlignment(SwingConstants.RIGHT); - c.gridx = x + 1; c.gridy = y; - c.anchor = GridBagConstraints.EAST; - c.weightx = 1; - c.gridwidth = 2; - c.fill = GridBagConstraints.BOTH; - layout.setConstraints(value, c); - add(value); - - value_deg = new JTextField(5); - value_deg.setFont(Altos.value_font); - value_deg.setHorizontalAlignment(SwingConstants.RIGHT); - c.gridx = x + 3; c.gridy = y; - c.anchor = GridBagConstraints.EAST; - c.weightx = 1; - c.fill = GridBagConstraints.BOTH; - layout.setConstraints(value_deg, c); - add(value_deg); - } + super (layout, x, y, "Bearing"); + } } Bearing bearing; - class Elevation extends DescentValue { - void show (AltosState state, int crc_errors) { - if (state.from_pad != null) - show("%3.0f°", state.elevation); - else - value.setText("???"); - } - public Elevation (GridBagLayout layout, int x, int y) { - super (layout, x, y, "Elevation"); - } - } - - Elevation elevation; - class Range extends DescentValue { void show (AltosState state, int crc_errors) { show("%6.0f m", state.range); @@ -289,12 +283,10 @@ public class AltosDescent extends JComponent implements AltosFlightDisplay { Range range; public void reset() { - lat.reset(); - lon.reset(); + latlon.reset(); height.reset(); speed.reset(); bearing.reset(); - elevation.reset(); range.reset(); main.reset(); apogee.reset(); @@ -304,10 +296,8 @@ public class AltosDescent extends JComponent implements AltosFlightDisplay { height.show(state, crc_errors); speed.show(state, crc_errors); bearing.show(state, crc_errors); - elevation.show(state, crc_errors); range.show(state, crc_errors); - lat.show(state, crc_errors); - lon.show(state, crc_errors); + latlon.show(state, crc_errors); main.show(state, crc_errors); apogee.show(state, crc_errors); } @@ -318,11 +308,12 @@ public class AltosDescent extends JComponent implements AltosFlightDisplay { setLayout(layout); /* Elements in descent display */ - speed = new Speed(layout, 0, 0); height = new Height(layout, 2, 0); - elevation = new Elevation(layout, 0, 1); range = new Range(layout, 2, 1); - bearing = new Bearing(layout, 0, 2); - lat = new Lat(layout, 0, 3); - lon = new Lon(layout, 0, 4); + speed = new Speed(layout, 0, 0); + height = new Height(layout, 0, 1); + range = new Range(layout, 0, 2); + bearing = new Bearing(layout, 0, 3); + latlon = new LatLon(layout, 0, 4); + apogee = new Apogee(layout, 5); main = new Main(layout, 6); }