diff options
| author | Keith Packard <keithp@keithp.com> | 2015-06-16 23:43:53 -0700 | 
|---|---|---|
| committer | Keith Packard <keithp@keithp.com> | 2015-06-17 00:13:03 -0700 | 
| commit | 1098f7502a603a9cf80ad950f53a2c2abdf7ec93 (patch) | |
| tree | b4e95ecd5c6ad8f1d64b1c923e63847b98d12a92 | |
| parent | cdeefaba7d5ef69f28e5dfb152c5f185f8b85f2e (diff) | |
altosuilib: Create grid-bag helper functions in AltosUIFrame
This eases the burden of creating suitable GridBagConstraints values
Signed-off-by: Keith Packard <keithp@keithp.com>
| -rw-r--r-- | altosui/AltosFlightUI.java | 57 | ||||
| -rw-r--r-- | altosui/AltosIdleMonitorUI.java | 44 | ||||
| -rw-r--r-- | altosuilib/AltosUIFrame.java | 56 | 
3 files changed, 81 insertions, 76 deletions
| 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); | 
