X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=altosui%2FAltosGraphUI.java;h=2d00fb45a74be84e0198d1c7c4c8c195c8b07544;hp=b376f7de69ee29d4adea4d1d46e56b003bd21af9;hb=95d9248da78f86240dbe77e2c206420dc509c9cf;hpb=2efd3ad80d4fefa8ccc1b80a2e657dbf9ba0c60f diff --git a/altosui/AltosGraphUI.java b/altosui/AltosGraphUI.java index b376f7de..2d00fb45 100644 --- a/altosui/AltosGraphUI.java +++ b/altosui/AltosGraphUI.java @@ -1,6 +1,19 @@ - -// Copyright (c) 2010 Anthony Towns -// GPL v2 or later +/* + * Copyright © 2010 Anthony Towns + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 or any later version of the License. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + */ package altosui; @@ -8,40 +21,93 @@ import java.io.*; import java.util.ArrayList; import java.awt.*; +import java.awt.event.*; import javax.swing.*; -import org.altusmetrum.altoslib_1.*; -import org.altusmetrum.altosuilib_1.*; +import org.altusmetrum.altoslib_5.*; +import org.altusmetrum.altosuilib_3.*; 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; AltosUIEnable enable; + AltosUIMap map; + AltosState state; + AltosGraphDataSet graphDataSet; + AltosFlightStats stats; + AltosFlightStatsTable statsTable; + boolean has_gps; + + void fill_map(AltosStateIterable states) { + boolean any_gps = false; + for (AltosState state : states) { + if (state.gps != null && state.gps.locked && state.gps.nsat >= 4) { + if (map == null) + map = new AltosUIMap(); + map.show(state, null); + has_gps = true; + } + } + } + + public void font_size_changed(int font_size) { + if (map != null) + map.font_size_changed(font_size); + if (statsTable != null) + statsTable.font_size_changed(font_size); + } + + public void units_changed(boolean imperial_units) { + if (map != null) + map.units_changed(imperial_units); + } + + AltosGraphUI(AltosStateIterable states, File file) throws InterruptedException, IOException { + super(file.getName()); + state = null; - AltosGraphUI(AltosRecordIterable records, String file) throws InterruptedException, IOException { pane = new JTabbedPane(); enable = new AltosUIEnable(); - AltosGraph graph = new AltosGraph(enable); + stats = new AltosFlightStats(states); + graphDataSet = new AltosGraphDataSet(states); - graph.setDataSet(new AltosGraphDataSet(records)); + graph = new AltosGraph(enable, stats, graphDataSet); + + statsTable = new AltosFlightStatsTable(stats); pane.add("Flight Graph", graph.panel); pane.add("Configure Graph", enable); + pane.add("Flight Statistics", statsTable); - AltosFlightStatsTable stats = new AltosFlightStatsTable(new AltosFlightStats(records)); - pane.add("Flight Statistics", stats); + has_gps = false; + fill_map(states); + if (has_gps) + pane.add("Map", map); 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); } }