altosuilib: Handle font and units changes in maps and stats table
authorKeith Packard <keithp@keithp.com>
Thu, 12 Jun 2014 03:36:49 +0000 (20:36 -0700)
committerKeith Packard <keithp@keithp.com>
Thu, 12 Jun 2014 03:43:54 +0000 (20:43 -0700)
Add AltosFontListener and AltosUnitsListener bits as needed

Signed-off-by: Keith Packard <keithp@keithp.com>
altosui/AltosGraphUI.java
altosuilib/AltosFlightStatsTable.java
altosuilib/AltosUIMap.java
altosuilib/AltosUIMapView.java

index 0df92eae922da886de55e075896a6fd085f5e341..07fe93176c33dd68d71bfec4f47e7ff8a9222c6a 100644 (file)
@@ -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);
index ec106cf1f0e973156a55a4183ed5e591b8716f84..b32e92a0ea0e15fd736a517062dd69d7318444cb 100644 (file)
@@ -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"));
                }
        }
-
 }
index fa974d36d71d1daa4043d54ef4d11853d8b4ddc9..910874692044af2b13584e744598a1259233c340 100644 (file)
@@ -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;
index c558118ba78742bab83909ed4b7a78989bfc2b8a..edae3e1e906e2bc72201ffbdd39e2102110e06cd 100644 (file)
@@ -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) {