From: Keith Packard Date: Wed, 17 Jun 2015 06:43:53 +0000 (-0700) Subject: altosuilib: Create grid-bag helper functions in AltosUIFrame X-Git-Tag: 1.6.0.3~35 X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=commitdiff_plain;h=1098f7502a603a9cf80ad950f53a2c2abdf7ec93 altosuilib: Create grid-bag helper functions in AltosUIFrame This eases the burden of creating suitable GridBagConstraints values Signed-off-by: Keith Packard --- diff --git a/altosui/AltosFlightUI.java b/altosui/AltosFlightUI.java index 3160fd95..009ba4ad 100644 --- a/altosui/AltosFlightUI.java +++ b/altosui/AltosFlightUI.java @@ -189,12 +189,12 @@ public class AltosFlightUI extends AltosUIFrame implements AltosFlightDisplay { bag = getContentPane(); bag.setLayout(new GridBagLayout()); - GridBagConstraints c = new GridBagConstraints(); - setTitle(String.format("AltOS %s", reader.name)); /* Stick channel selector at top of table for telemetry monitoring */ if (serial >= 0) { + set_inset(3); + // Frequency menu frequencies = new AltosUIFreqList(AltosUIPreferences.frequency(serial)); frequencies.set_product("Monitor"); @@ -210,14 +210,7 @@ public class AltosFlightUI extends AltosUIFrame implements AltosFlightDisplay { reader.save_frequency(); } }); - 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); + bag.add (frequencies, constraints(0, 1)); // Telemetry rate list rates = new AltosUIRateList(AltosUIPreferences.telemetry_rate(serial)); @@ -233,14 +226,7 @@ public class AltosFlightUI extends AltosUIFrame implements AltosFlightDisplay { } }); rates.setEnabled(reader.supports_telemetry_rate(AltosLib.ao_telemetry_rate_2400)); - c.gridx = 1; - 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 (rates, c); + bag.add (rates, constraints(1, 1)); // Telemetry format list if (reader.supports_telemetry(Altos.ao_telemetry_standard)) { @@ -252,14 +238,7 @@ public class AltosFlightUI extends AltosUIFrame implements AltosFlightDisplay { reader.save_telemetry(); } }); - c.gridx = 2; - c.gridy = 0; - c.weightx = 0; - c.weighty = 0; - c.fill = GridBagConstraints.NONE; - c.anchor = GridBagConstraints.WEST; - bag.add (telemetries, c); - c.insets = new Insets(0, 0, 0, 0); + bag.add (telemetries, constraints(2, 1)); } else { String version; @@ -271,26 +250,17 @@ public class AltosFlightUI extends AltosUIFrame implements AltosFlightDisplay { version = "Telemetry: None"; telemetry = new JLabel(version); - c.gridx = 2; - c.gridy = 0; - c.weightx = 0; - c.weighty = 0; - c.fill = GridBagConstraints.NONE; - c.anchor = GridBagConstraints.WEST; - bag.add (telemetry, c); - c.insets = new Insets(0, 0, 0, 0); + bag.add (telemetry, constraints(2, 1)); } + next_row(); } + set_inset(0); /* Flight status is always visible */ flightStatus = new AltosFlightStatus(); displays.add(flightStatus); - c.gridx = 0; - c.gridy = 1; - c.fill = GridBagConstraints.HORIZONTAL; - c.weightx = 1; - c.gridwidth = 3; - bag.add(flightStatus, c); + bag.add(flightStatus, constraints(0, 4, GridBagConstraints.HORIZONTAL)); + next_row(); /* The rest of the window uses a tabbed pane to * show one of the alternate data views @@ -324,12 +294,7 @@ public class AltosFlightUI extends AltosUIFrame implements AltosFlightDisplay { has_map = false; /* Make the tabbed pane use the rest of the window space */ - c.gridx = 0; - c.gridy = 2; - c.fill = GridBagConstraints.BOTH; - c.weightx = 1; - c.weighty = 1; - bag.add(pane, c); + bag.add(pane, constraints(0, 4, GridBagConstraints.BOTH)); setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); diff --git a/altosui/AltosIdleMonitorUI.java b/altosui/AltosIdleMonitorUI.java index 4f6fdd48..7f6abbde 100644 --- a/altosui/AltosIdleMonitorUI.java +++ b/altosui/AltosIdleMonitorUI.java @@ -136,6 +136,7 @@ public class AltosIdleMonitorUI extends AltosUIFrame implements AltosFlightDispl public void changedUpdate(DocumentEvent e) { if (callsign_value != null) { String callsign = callsign_value.getText(); + System.out.printf("callsign set to %s\n", callsign); thread.set_callsign(callsign); AltosUIPreferences.set_callsign(callsign); } @@ -149,30 +150,6 @@ public class AltosIdleMonitorUI extends AltosUIFrame implements AltosFlightDispl changedUpdate(e); } - int row = 0; - - public GridBagConstraints constraints (int x, int width, int fill) { - GridBagConstraints c = new GridBagConstraints(); - Insets insets = new Insets(4, 4, 4, 4); - - c.insets = insets; - c.fill = fill; - if (width == 3) - c.anchor = GridBagConstraints.CENTER; - else if (x == 2) - c.anchor = GridBagConstraints.EAST; - else - c.anchor = GridBagConstraints.WEST; - c.gridx = x; - c.gridwidth = width; - c.gridy = row; - return c; - } - - public GridBagConstraints constraints(int x, int width) { - return constraints(x, width, GridBagConstraints.NONE); - } - void idle_exception(JFrame owner, Exception e) { if (e instanceof FileNotFoundException) { JOptionPane.showMessageDialog(owner, @@ -226,11 +203,14 @@ public class AltosIdleMonitorUI extends AltosUIFrame implements AltosFlightDispl AltosSerial link; try { link = new AltosSerial(device); - link.set_frame(this); } catch (Exception ex) { idle_exception(in_owner, ex); return; } + link.set_frame(this); + + /* We let the user set the freq/callsign, so don't bother with the cancel dialog */ + link.set_cancel_enable(false); bag = getContentPane(); bag.setLayout(new GridBagLayout()); @@ -239,6 +219,8 @@ public class AltosIdleMonitorUI extends AltosUIFrame implements AltosFlightDispl /* Stick frequency selector at top of table for telemetry monitoring */ if (remote && serial >= 0) { + set_inset(3); + // Frequency menu frequencies = new AltosUIFreqList(AltosUIPreferences.frequency(serial)); frequencies.addActionListener(new ActionListener() { @@ -255,15 +237,17 @@ public class AltosIdleMonitorUI extends AltosUIFrame implements AltosFlightDispl callsign_value = new JTextField(AltosUIPreferences.callsign()); callsign_value.getDocument().addDocumentListener(this); callsign_value.setToolTipText("Callsign sent in packet mode"); - bag.add(callsign_value, constraints(2, 1, GridBagConstraints.BOTH)); - row++; + bag.add(callsign_value, constraints(2, 1, GridBagConstraints.HORIZONTAL)); + next_row(); } + set_inset(0); /* Flight status is always visible */ flightStatus = new AltosFlightStatus(); - bag.add(flightStatus, constraints(0, 3, GridBagConstraints.HORIZONTAL)); - row++; + bag.add(flightStatus, constraints(0, 4, GridBagConstraints.HORIZONTAL)); + + next_row(); /* The rest of the window uses a tabbed pane to * show one of the alternate data views @@ -281,7 +265,7 @@ public class AltosIdleMonitorUI extends AltosUIFrame implements AltosFlightDispl sitemap = new AltosUIMapNew(); /* Make the tabbed pane use the rest of the window space */ - bag.add(pane, constraints(0, 3, GridBagConstraints.BOTH)); + bag.add(pane, constraints(0, 4, GridBagConstraints.BOTH)); setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); diff --git a/altosuilib/AltosUIFrame.java b/altosuilib/AltosUIFrame.java index 9ee4fab4..3f74bca6 100644 --- a/altosuilib/AltosUIFrame.java +++ b/altosuilib/AltosUIFrame.java @@ -207,6 +207,62 @@ public class AltosUIFrame extends JFrame implements AltosUIListener, AltosPositi } } } + + int row = 0; + + public void next_row() { + row++; + } + + int inset = 0; + + public void set_inset(int i) { + inset = i; + } + + public GridBagConstraints constraints (int x, int width, int fill, int anchor, double weightx, double weighty) { + return new GridBagConstraints(x, /* x */ + row, /* y */ + width, /* width */ + 1, /* height */ + weightx, /* weightx */ + weighty, /* weighty */ + anchor, /* anchor */ + fill, /* fill */ + new Insets(inset,inset,inset,inset), /* insets */ + 0, /* ipadx */ + 0); /* ipady */ + } + + public GridBagConstraints constraints (int x, int width, int fill, int anchor) { + double weightx = 0; + double weighty = 0; + + if (fill == GridBagConstraints.NONE) { + weightx = 0; + weighty = 0; + } else if (fill == GridBagConstraints.HORIZONTAL) { + weightx = 1; + weighty = 0; + } else if (fill == GridBagConstraints.VERTICAL) { + weightx = 0; + weighty = 1; + } else if (fill == GridBagConstraints.BOTH) { + weightx = 1; + weighty = 1; + } + + return constraints (x, width, fill, anchor, weightx, weighty); + } + + public GridBagConstraints constraints (int x, int width, int fill) { + return constraints (x, width, fill, GridBagConstraints.WEST); + } + + public GridBagConstraints constraints(int x, int width) { + return constraints(x, width, GridBagConstraints.NONE); + } + void init() { AltosUIPreferences.register_ui_listener(this); AltosUIPreferences.register_position_listener(this);