import org.altusmetrum.altoslib_4.*;
import org.altusmetrum.altosuilib_2.*;
-public class TeleGPS extends AltosUIFrame implements AltosFlightDisplay, AltosFontListener, ActionListener {
+public class TeleGPS
+ extends AltosUIFrame
+ implements AltosFlightDisplay, AltosFontListener, AltosUnitsListener, ActionListener
+{
static String[] telegps_icon_names = {
"/telegps-16.png",
}
AltosFlightReader reader;
- AltosDisplayThread thread;
+ TeleGPSDisplayThread thread;
JMenuBar menu_bar;
JTabbedPane pane;
- AltosSiteMap sitemap;
+ AltosUIMap map;
TeleGPSInfo gps_info;
AltosInfoTable info_table;
display.reset();
}
- public void set_font() {
+ public void font_size_changed(int font_size) {
for (AltosFlightDisplay display : displays)
- display.set_font();
+ display.font_size_changed(font_size);
}
- public void font_size_changed(int font_size) {
- set_font();
+ public void units_changed(boolean imperial_units) {
+ for (AltosFlightDisplay display : displays)
+ display.units_changed(imperial_units);
}
public void show(AltosState state, AltosListenerState listener_state) {
}
void load_maps() {
- new AltosSiteMapPreload(this);
+ new AltosUIMapPreload(this);
}
void disconnect() {
}
void graph() {
+ AltosDataChooser chooser;
+ chooser = new AltosDataChooser(this);
+ AltosStateIterable states = chooser.runDialog();
+ if (states == null)
+ return;
+ try {
+ new TeleGPSGraphUI(states, chooser.file());
+ } catch (InterruptedException ie) {
+ } catch (IOException ie) {
+ }
}
void flash() {
void add_frequency_menu(int serial, final AltosFlightReader reader) {
// Channel menu
+ if (frequencies != null)
+ return;
+
frequencies = new AltosFreqList(AltosUIPreferences.frequency(serial));
frequencies.set_product("Monitor");
frequencies.set_serial(serial);
void remove_frequency_menu() {
if (frequencies != null) {
menu_bar.remove(frequencies);
+ menu_bar.repaint();
frequencies = null;
}
}
public void set_reader(AltosFlightReader reader) {
setTitle(String.format("TeleGPS %s", reader.name));
- thread = new AltosDisplayThread(this, voice(), this, reader);
+ thread = new TeleGPSDisplayThread(this, voice(), this, reader);
thread.start();
}
static int number_of_windows;
+ static public void add_window() {
+ ++number_of_windows;
+ }
+
+ static public void subtract_window() {
+ --number_of_windows;
+ if (number_of_windows == 0)
+ System.exit(0);
+ }
+
private void close() {
AltosUIPreferences.unregister_font_listener(this);
+ AltosPreferences.unregister_units_listener(this);
setVisible(false);
dispose();
- --number_of_windows;
- if (number_of_windows == 0)
- System.exit(0);
+ subtract_window();
}
private void add_menu(JMenu menu, String label, String action) {
c.gridwidth = 2;
bag.add(pane, c);
- sitemap = new AltosSiteMap();
- pane.add("Site Map", sitemap);
- displays.add(sitemap);
+ map = new AltosUIMap();
+ pane.add("Map", map);
+ displays.add(map);
gps_info = new TeleGPSInfo();
pane.add("Info", gps_info);
setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
AltosUIPreferences.register_font_listener(this);
+ AltosPreferences.register_units_listener(this);
addWindowListener(new WindowAdapter() {
@Override
pack();
setVisible(true);
- ++number_of_windows;
+ add_window();
status_update = new TeleGPSStatusUpdate(telegps_status);
return new AltosReplayReader(states.iterator(), file);
}
+ static boolean process_graph(File file) {
+ AltosStateIterable states = record_iterable(file);
+ if (states == null)
+ return false;
+ try {
+ new TeleGPSGraphUI(states, file);
+ } catch (Exception e) {
+ return false;
+ }
+ return true;
+ }
+
static boolean process_replay(File file) {
AltosReplayReader new_reader = replay_file(file);
if (new_reader == null)
} else {
double lat = Double.parseDouble(args[i+1]);
double lon = Double.parseDouble(args[i+2]);
- AltosSiteMap.prefetchMaps(lat, lon);
+ AltosUIMap.prefetch_maps(lat, lon);
i += 2;
}
} else if (args[i].equals("--replay"))
else {
File file = new File(args[i]);
switch (process) {
+ case process_none:
case process_graph:
- ++errors;
+ if (!process_graph(file))
+ ++errors;
break;
- case process_none:
case process_replay:
if (!process_replay(file))
++errors;
}
if (errors != 0)
System.exit(errors);
- if (!any_created) {
+ if (number_of_windows == 0) {
java.util.List<AltosDevice> devices = AltosUSBDevice.list(AltosLib.product_basestation);
if (devices != null)
for (AltosDevice device : devices) {
new TeleGPS(device);
any_created = true;
}
- if (!any_created)
+ if (number_of_windows == 0)
new TeleGPS();
}
}