JMenu monitor_menu;
JMenu device_menu;
AltosFreqList frequencies;
+ ActionListener frequency_listener;
Container bag;
TeleGPSStatus telegps_status;
TeleGPSStatusUpdate status_update;
+ javax.swing.Timer status_timer;
JTabbedPane pane;
AltosUIMap map;
TeleGPSInfo gps_info;
+ TeleGPSState gps_state;
AltosInfoTable info_table;
LinkedList<AltosFlightDisplay> displays;
/* File menu */
final static String new_command = "new";
- final static String preferences_command = "preferences";
+ final static String graph_command = "graph";
+ final static String export_command = "export";
final static String load_maps_command = "loadmaps";
+ final static String preferences_command = "preferences";
final static String close_command = "close";
final static String exit_command = "exit";
static final String[][] file_menu_entries = new String[][] {
{ "New Window", new_command },
- { "Preferences", preferences_command },
+ { "Graph Data", graph_command },
+ { "Export Data", export_command },
{ "Load Maps", load_maps_command },
+ { "Preferences", preferences_command },
{ "Close", close_command },
{ "Exit", exit_command },
};
/* Monitor menu */
- final static String monitor_command = "monitor";
+ final static String connect_command = "connect";
final static String disconnect_command = "disconnect";
final static String scan_command = "scan";
static final String[][] monitor_menu_entries = new String[][] {
- { "Monitor Device", monitor_command },
+ { "Connect Device", connect_command },
{ "Disconnect", disconnect_command },
{ "Scan Channels", scan_command },
};
/* Device menu */
final static String download_command = "download";
- final static String export_command = "export";
- final static String graph_command = "graph";
final static String configure_command = "configure";
final static String flash_command = "flash";
static final String[][] device_menu_entries = new String[][] {
{ "Download Data", download_command },
{ "Configure Device", configure_command },
- { "Export Data", export_command },
- { "Graph Data", graph_command },
{ "Flash Device", flash_command },
};
void disconnect() {
setTitle("TeleGPS");
stop_display();
- remove_frequency_menu();
+ if (status_timer != null) {
+ status_timer.stop();
+ status_timer = null;
+ status_update = null;
+ }
+
+ telegps_status.disable_receive();
+ disable_frequency_menu();
}
void connect(AltosDevice device) {
disconnect();
try {
AltosFlightReader reader = new AltosTelemetryReader(new AltosSerial(device));
- set_reader(reader);
- add_frequency_menu(device.getSerial(), reader);
+ set_reader(reader, device);
} catch (FileNotFoundException ee) {
JOptionPane.showMessageDialog(this,
ee.getMessage(),
}
}
- void monitor() {
+ void connect() {
AltosDevice device = AltosDeviceUIDialog.show(this,
AltosLib.product_basestation);
if (device == null)
System.exit(0);
/* Monitor menu */
- if (monitor_command.equals(ev.getActionCommand())) {
- monitor();
+ if (connect_command.equals(ev.getActionCommand())) {
+ connect();
return;
}
if (disconnect_command.equals(ev.getActionCommand())) {
}
}
- void add_frequency_menu(int serial, final AltosFlightReader reader) {
- // Channel menu
- if (frequencies != null)
- return;
+ void enable_frequency_menu(int serial, final AltosFlightReader reader) {
- frequencies = new AltosFreqList(AltosUIPreferences.frequency(serial));
- frequencies.set_product("Monitor");
- frequencies.set_serial(serial);
- frequencies.addActionListener(new ActionListener() {
+ if (frequency_listener != null)
+ disable_frequency_menu();
+
+ frequency_listener = new ActionListener() {
public void actionPerformed(ActionEvent e) {
double frequency = frequencies.frequency();
try {
}
reader.save_frequency();
}
- });
- menu_bar.add(frequencies);
+ };
+
+ frequencies.addActionListener(frequency_listener);
+ frequencies.set_product("Monitor");
+ frequencies.set_serial(serial);
+ frequencies.set_frequency(AltosUIPreferences.frequency(serial));
+ frequencies.setEnabled(true);
+
}
- void remove_frequency_menu() {
- if (frequencies != null) {
- menu_bar.remove(frequencies);
- menu_bar.repaint();
- frequencies = null;
+ void disable_frequency_menu() {
+ if (frequency_listener != null) {
+ frequencies.removeActionListener(frequency_listener);
+ frequencies.setEnabled(false);
+ frequency_listener = null;
}
+
}
- public void set_reader(AltosFlightReader reader) {
+ public void set_reader(AltosFlightReader reader, AltosDevice device) {
+ status_update = new TeleGPSStatusUpdate(telegps_status);
+
+ status_timer = new javax.swing.Timer(100, status_update);
+ status_timer.start();
+
setTitle(String.format("TeleGPS %s", reader.name));
thread = new TeleGPSDisplayThread(this, voice(), this, reader);
thread.start();
+
+ if (device != null)
+ enable_frequency_menu(device.getSerial(), reader);
}
static int number_of_windows;
file_menu = make_menu("File", file_menu_entries);
monitor_menu = make_menu("Monitor", monitor_menu_entries);
device_menu = make_menu("Device", device_menu_entries);
+ frequencies = new AltosFreqList();
+ frequencies.setEnabled(false);
+ menu_bar.add(frequencies);
+
displays = new LinkedList<AltosFlightDisplay>();
int serial = -1;
bag.add(pane, c);
map = new AltosUIMap();
- pane.add("Map", map);
+ pane.add(map.getName(), map);
displays.add(map);
gps_info = new TeleGPSInfo();
- pane.add("Info", gps_info);
+ pane.add(gps_info.getName(), gps_info);
displays.add(gps_info);
+ gps_state = new TeleGPSState();
+ pane.add(gps_state.getName(), gps_state);
+ displays.add(gps_state);
+
info_table = new AltosInfoTable();
pane.add("Table", info_table);
displays.add(info_table);
setVisible(true);
add_window();
-
- status_update = new TeleGPSStatusUpdate(telegps_status);
-
- new javax.swing.Timer(100, status_update).start();
}
public TeleGPS(AltosFlightReader reader) {
this();
- set_reader(reader);
+ set_reader(reader, null);
}
public TeleGPS(AltosDevice device) {