diff options
| author | Keith Packard <keithp@keithp.com> | 2014-06-11 20:36:49 -0700 | 
|---|---|---|
| committer | Keith Packard <keithp@keithp.com> | 2014-06-11 20:43:54 -0700 | 
| commit | bfc0c65c9f9ec9547d71016fc897ba35bdb414f8 (patch) | |
| tree | 36e97c779e9a79bac23ba06f33bd39c39206effb | |
| parent | 2182c49298e0862a60dea104450d5f74dbeaeeb2 (diff) | |
altosuilib: Handle font and units changes in maps and stats table
Add AltosFontListener and AltosUnitsListener bits as needed
Signed-off-by: Keith Packard <keithp@keithp.com>
| -rw-r--r-- | altosui/AltosGraphUI.java | 25 | ||||
| -rw-r--r-- | altosuilib/AltosFlightStatsTable.java | 33 | ||||
| -rw-r--r-- | altosuilib/AltosUIMap.java | 2 | ||||
| -rw-r--r-- | altosuilib/AltosUIMapView.java | 5 | 
4 files changed, 53 insertions, 12 deletions
| diff --git a/altosui/AltosGraphUI.java b/altosui/AltosGraphUI.java index 0df92eae..07fe9317 100644 --- a/altosui/AltosGraphUI.java +++ b/altosui/AltosGraphUI.java @@ -21,6 +21,7 @@ import java.io.*;  import java.util.ArrayList;  import java.awt.*; +import java.awt.event.*;  import javax.swing.*;  import org.altusmetrum.altoslib_4.*;  import org.altusmetrum.altosuilib_2.*; @@ -29,7 +30,7 @@ import org.jfree.chart.ChartPanel;  import org.jfree.chart.JFreeChart;  import org.jfree.ui.RefineryUtilities; -public class AltosGraphUI extends AltosUIFrame +public class AltosGraphUI extends AltosUIFrame implements AltosFontListener, AltosUnitsListener  {  	JTabbedPane		pane;  	AltosGraph		graph; @@ -53,6 +54,15 @@ public class AltosGraphUI extends AltosUIFrame  		}  	} +	public void font_size_changed(int font_size) { +		map.font_size_changed(font_size); +		statsTable.font_size_changed(font_size); +	} + +	public void units_changed(boolean imperial_units) { +		map.units_changed(imperial_units); +	} +  	AltosGraphUI(AltosStateIterable states, File file) throws InterruptedException, IOException {  		super(file.getName());  		state = null; @@ -79,9 +89,20 @@ public class AltosGraphUI extends AltosUIFrame  		setContentPane (pane); +		AltosUIPreferences.register_font_listener(this); +		AltosPreferences.register_units_listener(this); + +		addWindowListener(new WindowAdapter() { +				@Override +				public void windowClosing(WindowEvent e) { +					setVisible(false); +					dispose(); +					AltosUIPreferences.unregister_font_listener(AltosGraphUI.this); +					AltosPreferences.unregister_units_listener(AltosGraphUI.this); +				} +			});  		pack(); -		setDefaultCloseOperation(DISPOSE_ON_CLOSE);  		setVisible(true);  		if (state != null && has_gps)  			map.centre(state); diff --git a/altosuilib/AltosFlightStatsTable.java b/altosuilib/AltosFlightStatsTable.java index ec106cf1..b32e92a0 100644 --- a/altosuilib/AltosFlightStatsTable.java +++ b/altosuilib/AltosFlightStatsTable.java @@ -19,14 +19,23 @@ package org.altusmetrum.altosuilib_2;  import java.awt.*;  import javax.swing.*; +import java.util.*;  import org.altusmetrum.altoslib_4.*; -public class AltosFlightStatsTable extends JComponent { +public class AltosFlightStatsTable extends JComponent implements AltosFontListener {  	GridBagLayout	layout; -	class FlightStat { +	LinkedList<FlightStat> flight_stats = new LinkedList<FlightStat>(); + +	class FlightStat implements AltosFontListener {  		JLabel		label; -		JTextField	value; +		JTextField[]	value; + +		public void font_size_changed(int font_size) { +			label.setFont(AltosUILib.label_font); +			for (int i = 0; i < value.length; i++) +				value[i].setFont(AltosUILib.value_font); +		}  		public FlightStat(GridBagLayout layout, int y, String label_text, String ... values) {  			GridBagConstraints	c = new GridBagConstraints(); @@ -43,21 +52,28 @@ public class AltosFlightStatsTable extends JComponent {  			layout.setConstraints(label, c);  			add(label); +			value = new JTextField[values.length];  			for (int j = 0; j < values.length; j++) { -				value = new JTextField(values[j]); -				value.setFont(AltosUILib.value_font); -				value.setHorizontalAlignment(SwingConstants.RIGHT); +				value[j] = new JTextField(values[j]); +				value[j].setFont(AltosUILib.value_font); +				value[j].setHorizontalAlignment(SwingConstants.RIGHT);  				c.gridx = j+1; c.gridy = y;  				c.anchor = GridBagConstraints.EAST;  				c.fill = GridBagConstraints.BOTH;  				c.weightx = 1; -				layout.setConstraints(value, c); -				add(value); +				layout.setConstraints(value[j], c); +				add(value[j]);  			} +			flight_stats.add(this);  		}  	} +	public void font_size_changed(int font_size) { +		for (FlightStat f : flight_stats) +			f.font_size_changed(font_size); +	} +  	static String pos(double p, String pos, String neg) {  		String	h = pos;  		if (p < 0) { @@ -147,5 +163,4 @@ public class AltosFlightStatsTable extends JComponent {  				       pos(stats.lon,"E","W"));  		}  	} -  } diff --git a/altosuilib/AltosUIMap.java b/altosuilib/AltosUIMap.java index fa974d36..91087469 100644 --- a/altosuilib/AltosUIMap.java +++ b/altosuilib/AltosUIMap.java @@ -74,7 +74,7 @@ public class AltosUIMap extends JComponent implements AltosFlightDisplay, AltosU  	}  	public void units_changed(boolean imperial_units) { -		repaint(); +		view.set_units();  	}  	JLabel	zoom_label; diff --git a/altosuilib/AltosUIMapView.java b/altosuilib/AltosUIMapView.java index c558118b..edae3e1e 100644 --- a/altosuilib/AltosUIMapView.java +++ b/altosuilib/AltosUIMapView.java @@ -68,6 +68,11 @@ public class AltosUIMapView extends Canvas implements MouseMotionListener, Mouse  		line.set_font(AltosUILib.value_font);  		for (AltosUIMapTile tile : tiles.values())  			tile.set_font(AltosUILib.value_font); +		repaint(); +	} + +	public void set_units() { +		repaint();  	}  	private boolean is_drag_event(MouseEvent e) { | 
