altosuilib: Create grid-bag helper functions in AltosUIFrame
authorKeith Packard <keithp@keithp.com>
Wed, 17 Jun 2015 06:43:53 +0000 (23:43 -0700)
committerKeith Packard <keithp@keithp.com>
Wed, 17 Jun 2015 07:13:03 +0000 (00:13 -0700)
This eases the burden of creating suitable GridBagConstraints values

Signed-off-by: Keith Packard <keithp@keithp.com>
altosui/AltosFlightUI.java
altosui/AltosIdleMonitorUI.java
altosuilib/AltosUIFrame.java

index 3160fd957a26672c7b32780868594a2991cbce31..009ba4adafb3eab42b2c17cd46c93bff3ab2cb16 100644 (file)
@@ -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);
 
index 4f6fdd48149bd775007fa9354e00147949aea510..7f6abbded0b5c1a9c1b7659ac6086006494c8439 100644 (file)
@@ -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);
 
index 9ee4fab41647f30877468ba17efc23fc9ff8ff1c..3f74bca65004326172b7ade140e75fa91e218355 100644 (file)
@@ -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);