diff options
Diffstat (limited to 'altosuilib')
63 files changed, 491 insertions, 246 deletions
diff --git a/altosuilib/AltosBTDevice.java b/altosuilib/AltosBTDevice.java index 5b9ab06a..dcc1f39f 100644 --- a/altosuilib/AltosBTDevice.java +++ b/altosuilib/AltosBTDevice.java @@ -16,10 +16,10 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_12; +package org.altusmetrum.altosuilib_13; import libaltosJNI.*; -import org.altusmetrum.altoslib_12.*; +import org.altusmetrum.altoslib_13.*; public class AltosBTDevice extends altos_bt_device implements AltosDevice { diff --git a/altosuilib/AltosBTDeviceIterator.java b/altosuilib/AltosBTDeviceIterator.java index ac9068d0..11d9dacd 100644 --- a/altosuilib/AltosBTDeviceIterator.java +++ b/altosuilib/AltosBTDeviceIterator.java @@ -16,11 +16,11 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_12; +package org.altusmetrum.altosuilib_13; import java.util.*; import libaltosJNI.*; -import org.altusmetrum.altoslib_12.*; +import org.altusmetrum.altoslib_13.*; public class AltosBTDeviceIterator implements Iterator<AltosBTDevice> { AltosBTDevice current; diff --git a/altosuilib/AltosBTKnown.java b/altosuilib/AltosBTKnown.java index 56f1991f..e8efc2c6 100644 --- a/altosuilib/AltosBTKnown.java +++ b/altosuilib/AltosBTKnown.java @@ -16,10 +16,10 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_12; +package org.altusmetrum.altosuilib_13; import java.util.*; -import org.altusmetrum.altoslib_12.*; +import org.altusmetrum.altoslib_13.*; public class AltosBTKnown implements Iterable<AltosBTDevice> { LinkedList<AltosBTDevice> devices = new LinkedList<AltosBTDevice>(); diff --git a/altosuilib/AltosBTManage.java b/altosuilib/AltosBTManage.java index aec4c34d..ee0b56ee 100644 --- a/altosuilib/AltosBTManage.java +++ b/altosuilib/AltosBTManage.java @@ -16,7 +16,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_12; +package org.altusmetrum.altosuilib_13; import java.awt.*; import java.awt.event.*; @@ -24,7 +24,7 @@ import javax.swing.*; import javax.swing.plaf.basic.*; import java.util.*; import java.util.concurrent.*; -import org.altusmetrum.altoslib_12.*; +import org.altusmetrum.altoslib_13.*; public class AltosBTManage extends AltosUIDialog implements ActionListener, Iterable<AltosBTDevice> { LinkedBlockingQueue<AltosBTDevice> found_devices; diff --git a/altosuilib/AltosCSVUI.java b/altosuilib/AltosCSVUI.java index 442e3de3..c8c6161c 100644 --- a/altosuilib/AltosCSVUI.java +++ b/altosuilib/AltosCSVUI.java @@ -16,13 +16,13 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_12; +package org.altusmetrum.altosuilib_13; import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.io.*; -import org.altusmetrum.altoslib_12.*; +import org.altusmetrum.altoslib_13.*; public class AltosCSVUI extends AltosUIDialog diff --git a/altosuilib/AltosConfigFreqUI.java b/altosuilib/AltosConfigFreqUI.java index 055d34f9..618d6517 100644 --- a/altosuilib/AltosConfigFreqUI.java +++ b/altosuilib/AltosConfigFreqUI.java @@ -16,14 +16,14 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_12; +package org.altusmetrum.altosuilib_13; import java.awt.*; import java.text.*; import java.awt.event.*; import javax.swing.*; import java.util.*; -import org.altusmetrum.altoslib_12.*; +import org.altusmetrum.altoslib_13.*; class AltosEditFreqUI extends AltosUIDialog implements ActionListener { Frame frame; diff --git a/altosuilib/AltosDataChooser.java b/altosuilib/AltosDataChooser.java index b417c732..caa63e7a 100644 --- a/altosuilib/AltosDataChooser.java +++ b/altosuilib/AltosDataChooser.java @@ -16,12 +16,12 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_12; +package org.altusmetrum.altosuilib_13; import javax.swing.*; import javax.swing.filechooser.FileNameExtensionFilter; import java.io.*; -import org.altusmetrum.altoslib_12.*; +import org.altusmetrum.altoslib_13.*; public class AltosDataChooser extends JFileChooser { JFrame frame; diff --git a/altosuilib/AltosDevice.java b/altosuilib/AltosDevice.java index 44f71f7a..a5a068b4 100644 --- a/altosuilib/AltosDevice.java +++ b/altosuilib/AltosDevice.java @@ -16,7 +16,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_12; +package org.altusmetrum.altosuilib_13; import libaltosJNI.*; @@ -28,4 +28,5 @@ public interface AltosDevice { public abstract boolean matchProduct(int product); public abstract String getErrorString(); public SWIGTYPE_p_altos_file open(); + public abstract boolean equals(Object obj); } diff --git a/altosuilib/AltosDeviceDialog.java b/altosuilib/AltosDeviceDialog.java index 77249bfc..d8a24b18 100644 --- a/altosuilib/AltosDeviceDialog.java +++ b/altosuilib/AltosDeviceDialog.java @@ -16,7 +16,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_12; +package org.altusmetrum.altosuilib_13; import javax.swing.*; import java.awt.*; @@ -31,6 +31,8 @@ public abstract class AltosDeviceDialog extends AltosUIDialog implements ActionL public Frame frame; public int product; public JPanel buttonPane; + private Timer timer; + AltosDevice[] devices; public AltosDevice getValue() { return value; @@ -39,8 +41,16 @@ public abstract class AltosDeviceDialog extends AltosUIDialog implements ActionL public abstract AltosDevice[] devices(); public void update_devices() { - AltosDevice[] devices = devices(); + AltosDevice selected = list.getSelectedValue(); + + devices = devices(); list.setListData(devices); + for (AltosDevice d : devices) { + if (d.equals(selected)) { + list.setSelectedValue(d, true); + break; + } + } select_button.setEnabled(devices.length > 0); } @@ -53,8 +63,6 @@ public abstract class AltosDeviceDialog extends AltosUIDialog implements ActionL frame = in_frame; value = null; - AltosDevice[] devices = devices(); - cancel_button = new JButton("Cancel"); cancel_button.setActionCommand("cancel"); cancel_button.addActionListener(this); @@ -62,8 +70,7 @@ public abstract class AltosDeviceDialog extends AltosUIDialog implements ActionL select_button = new JButton("Select"); select_button.setActionCommand("select"); select_button.addActionListener(this); - if (devices.length == 0) - select_button.setEnabled(false); + select_button.setEnabled(false); getRootPane().setDefaultButton(select_button); list = new JList<AltosDevice>(devices) { @@ -143,10 +150,31 @@ public abstract class AltosDeviceDialog extends AltosUIDialog implements ActionL contentPane.add(buttonPane, BorderLayout.PAGE_END); //Initialize values. + update_devices(); if (devices != null && devices.length != 0) list.setSelectedValue(devices[0], true); pack(); setLocationRelativeTo(location); + + timer = new Timer(1000, new ActionListener () { + public void actionPerformed(ActionEvent evt) { + update_devices(); + } + }); + + addComponentListener(new ComponentListener() { + public void componentShown(ComponentEvent e) { + timer.start(); + } + public void componentMoved(ComponentEvent e) { + } + public void componentResized(ComponentEvent e) { + } + public void componentHidden(ComponentEvent e) { + timer.stop(); + } + }); + } //Handle clicks on the Set and Cancel buttons. diff --git a/altosuilib/AltosDeviceUIDialog.java b/altosuilib/AltosDeviceUIDialog.java index f3409cce..93ab178f 100644 --- a/altosuilib/AltosDeviceUIDialog.java +++ b/altosuilib/AltosDeviceUIDialog.java @@ -16,7 +16,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_12; +package org.altusmetrum.altosuilib_13; import javax.swing.*; import java.awt.*; diff --git a/altosuilib/AltosDisplayThread.java b/altosuilib/AltosDisplayThread.java index 5e691ac4..3726f515 100644 --- a/altosuilib/AltosDisplayThread.java +++ b/altosuilib/AltosDisplayThread.java @@ -16,13 +16,13 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_12; +package org.altusmetrum.altosuilib_13; import java.awt.*; import javax.swing.*; import java.io.*; import java.text.*; -import org.altusmetrum.altoslib_12.*; +import org.altusmetrum.altoslib_13.*; public class AltosDisplayThread extends Thread { diff --git a/altosuilib/AltosEepromDelete.java b/altosuilib/AltosEepromDelete.java index d7dde6df..d7d0b2b7 100644 --- a/altosuilib/AltosEepromDelete.java +++ b/altosuilib/AltosEepromDelete.java @@ -16,13 +16,13 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_12; +package org.altusmetrum.altosuilib_13; import java.awt.event.*; import javax.swing.*; import java.io.*; import java.util.concurrent.*; -import org.altusmetrum.altoslib_12.*; +import org.altusmetrum.altoslib_13.*; public class AltosEepromDelete implements Runnable { AltosEepromList flights; diff --git a/altosuilib/AltosEepromGrapher.java b/altosuilib/AltosEepromGrapher.java index a29f64ea..b8d3bdaa 100644 --- a/altosuilib/AltosEepromGrapher.java +++ b/altosuilib/AltosEepromGrapher.java @@ -12,9 +12,9 @@ * General Public License for more details. */ -package org.altusmetrum.altosuilib_12; +package org.altusmetrum.altosuilib_13; -import org.altusmetrum.altoslib_12.*; +import org.altusmetrum.altoslib_13.*; public interface AltosEepromGrapher { diff --git a/altosuilib/AltosEepromManage.java b/altosuilib/AltosEepromManage.java index 1adf1f0a..cab3e8c7 100644 --- a/altosuilib/AltosEepromManage.java +++ b/altosuilib/AltosEepromManage.java @@ -16,13 +16,13 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_12; +package org.altusmetrum.altosuilib_13; import java.awt.event.*; import javax.swing.*; import java.io.*; import java.util.concurrent.*; -import org.altusmetrum.altoslib_12.*; +import org.altusmetrum.altoslib_13.*; public class AltosEepromManage implements ActionListener { diff --git a/altosuilib/AltosEepromMonitorUI.java b/altosuilib/AltosEepromMonitorUI.java index fc6c95c6..8f6a9b9e 100644 --- a/altosuilib/AltosEepromMonitorUI.java +++ b/altosuilib/AltosEepromMonitorUI.java @@ -16,7 +16,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_12; +package org.altusmetrum.altosuilib_13; import java.io.*; import java.util.*; @@ -24,7 +24,7 @@ import java.util.concurrent.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; -import org.altusmetrum.altoslib_12.*; +import org.altusmetrum.altoslib_13.*; class result_holder { static int result; diff --git a/altosuilib/AltosEepromSelect.java b/altosuilib/AltosEepromSelect.java index f88f2bd6..427826fa 100644 --- a/altosuilib/AltosEepromSelect.java +++ b/altosuilib/AltosEepromSelect.java @@ -16,13 +16,13 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_12; +package org.altusmetrum.altosuilib_13; import javax.swing.*; import javax.swing.border.*; import java.awt.*; import java.awt.event.*; -import org.altusmetrum.altoslib_12.*; +import org.altusmetrum.altoslib_13.*; class AltosEepromItem implements ActionListener { AltosEepromLog log; diff --git a/altosuilib/AltosFlashUI.java b/altosuilib/AltosFlashUI.java index 802e8eb3..b91776aa 100644 --- a/altosuilib/AltosFlashUI.java +++ b/altosuilib/AltosFlashUI.java @@ -16,7 +16,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_12; +package org.altusmetrum.altosuilib_13; import java.awt.*; import java.awt.event.*; @@ -24,7 +24,7 @@ import javax.swing.*; import javax.swing.filechooser.FileNameExtensionFilter; import java.io.*; import java.util.concurrent.*; -import org.altusmetrum.altoslib_12.*; +import org.altusmetrum.altoslib_13.*; public class AltosFlashUI extends AltosUIDialog @@ -116,10 +116,10 @@ public class AltosFlashUI JOptionPane.ERROR_MESSAGE); setVisible(false); dispose(); - } else if (cmd.equals("done")) { + } else if (cmd.equals(AltosFlashListener.flash_done)) { setVisible(false); dispose(); - } else if (cmd.equals("start")) { + } else if (cmd.equals(AltosFlashListener.flash_start)) { setVisible(true); } else { pbar.setValue(e.getID()); @@ -278,6 +278,12 @@ public class AltosFlashUI } boolean rom_config_matches (AltosRomconfig a, AltosRomconfig b) { + if (a == null || b == null) + return (a == null && b == null); + + if (!a.valid || !b.valid) + return false; + if (a.usb_id != null && b.usb_id != null && (a.usb_id.vid != b.usb_id.vid || a.usb_id.pid != b.usb_id.pid)) @@ -294,20 +300,42 @@ public class AltosFlashUI AltosRomconfig new_config; if (!rom_config_matches(existing_config, image_config)) { + int ret; + if (existing_config == null || !existing_config.valid) { + ret = JOptionPane.showConfirmDialog(this, + String.format("Cannot determine target device type\nImage is %04x:%04x %s\nFlash anyways?", + image_config.usb_id.vid, + image_config.usb_id.pid, + image_config.usb_product), + "Unknown Target Device", + JOptionPane.YES_NO_OPTION); + } else { + ret = JOptionPane.showConfirmDialog(this, + String.format("Device is %04x:%04x %s\nImage is %04x:%04x %s\nFlash anyways?", + existing_config.usb_id.vid, + existing_config.usb_id.pid, + existing_config.usb_product, + image_config.usb_id.vid, + image_config.usb_id.pid, + image_config.usb_product), + "Image doesn't match Device", + JOptionPane.YES_NO_OPTION); + } + if (ret != JOptionPane.YES_OPTION) + return false; + } + + if (existing_config.radio_calibration_broken) { int ret = JOptionPane.showConfirmDialog(this, - String.format("Device is %04x:%04x %s\nImage is %04x:%04x %s\nFlash anyways?", - existing_config.usb_id.vid, - existing_config.usb_id.pid, - existing_config.usb_product, - image_config.usb_id.vid, - image_config.usb_id.pid, - image_config.usb_product), - "Image doesn't match Device", + String.format("Radio calibration value %d may be incorrect\nFlash anyways?", + existing_config.radio_calibration), + "Radio Calibration Invalid", JOptionPane.YES_NO_OPTION); if (ret != JOptionPane.YES_OPTION) return false; } + new_config = AltosRomconfigUI.show(frame, existing_config); if (new_config == null) return false; @@ -329,7 +357,7 @@ public class AltosFlashUI device.toShortString()), "Device in use", JOptionPane.ERROR_MESSAGE); - } else if (e instanceof IOException) { + } else { JOptionPane.showMessageDialog(frame, e.getMessage(), file.toString(), @@ -412,45 +440,235 @@ public class AltosFlashUI flash_task flasher; - private boolean open_device() throws InterruptedException { - try { - link = new AltosSerial(device); - if (is_pair_programmed()) - return true; - if (link == null) - throw new IOException(String.format("%s: open failed", device.toShortString())); + class open_task implements Runnable { + AltosDevice device; + Thread t; + open_dialog dialog; - while (!link.is_loader()) { - link.to_loader(); + public void do_exception(final Exception e) { + SwingUtilities.invokeLater( + new Runnable() { + public void run() { + try { dialog.open_exception(e); } catch (Exception ex) { } + } + }); + } - java.util.List<AltosDevice> devices = null; + public void do_success(final AltosLink link) { + SwingUtilities.invokeLater( + new Runnable() { + public void run() { + try { dialog.open_success(link); } catch (Exception ex) { } + } + }); + } - for (int tries = 0; tries < 10; tries++) { - Thread.sleep(100); - devices = AltosUSBDevice.list(AltosLib.product_altusmetrum); - if (devices.size() != 0) - break; - } + public void do_failure() { + SwingUtilities.invokeLater( + new Runnable() { + public void run() { + try { dialog.open_failure(); } catch (Exception ex) { } + } + }); + } + + public void do_cancel() { + SwingUtilities.invokeLater( + new Runnable() { + public void run() { + try { dialog.open_cancel(); } catch (Exception ex) { } + } + }); + } + + public void run () { + try { + AltosLink link = null; + + for (;;) { + System.out.printf("Attempting to open %s\n", device.toShortString()); + + link = new AltosSerial(device); - if (devices.size() == 1) - device = devices.get(0); - else { - device = AltosDeviceUIDialog.show(frame, AltosLib.product_altusmetrum); - if (device == null) - return false; + if (link == null) + throw new IOException(String.format("%s: open failed", + device.toShortString())); + + /* See if the link is usable already */ + if (is_pair_programmed() || link.is_loader()) { + System.out.printf("Device ready for use\n"); + do_success(link); + return; + } + + java.util.List<AltosDevice> prev_devices = + AltosUSBDevice.list(AltosLib.product_altusmetrum); + + /* Nope, switch to loader and + * wait for it to re-appear + */ + + System.out.printf("Switch to loader\n"); + + link.to_loader(); + + /* This is a bit fragile, but + * I'm not sure what else to + * do other than ask the user. + * + * Search for a device which + * wasn't there before we + * asked the target to switch + * to loader mode + */ + + device = null; + for (;;) { + Thread.sleep(100); + java.util.List<AltosDevice> devices = + AltosUSBDevice.list(AltosLib.product_altusmetrum); + + for (AltosDevice d : devices) { + boolean matched = false; + System.out.printf("\tfound device %s\n", d.toShortString()); + for (AltosDevice p : prev_devices) + if (d.equals(p)) { + matched = true; + break; + } + if (!matched) { + System.out.printf("Identified new device %s\n", d.toShortString()); + device = d; + break; + } + } + if (device != null) + break; + } } - link = new AltosSerial(device); + } catch (AltosSerialInUseException ee) { + do_exception(ee); + } catch (FileNotFoundException fe) { + do_exception(fe); + } catch (IOException ie) { + do_exception (ie); + } catch (InterruptedException ie) { } - return true; - } catch (AltosSerialInUseException ee) { - exception(ee); - } catch (FileNotFoundException fe) { - exception(fe); - } catch (IOException ie) { - exception (ie); } - return false; + + public void cancel() { + t.interrupt(); + } + + public open_task(AltosDevice device, open_dialog dialog) { + this.device = device; + this.dialog = dialog; + t = new Thread(this); + t.start(); + } + } + + class open_dialog + extends AltosUIDialog + implements ActionListener + { + AltosUIFrame owner; + + private JLabel opening_label; + private JButton cancel_button; + + boolean done = false; + + AltosLink link = null; + + open_task open = null; + + public void open_exception(Exception e) { + System.out.printf("open_exception\n"); + setVisible(false); + exception(e); + done = true; + } + + public void open_success(AltosLink link) { + System.out.printf("open_success\n"); + setVisible(false); + this.link = link; + done = true; + } + + public void open_failure() { + System.out.printf("open_failure\n"); + setVisible(false); + done = true; + } + + public void open_cancel() { + System.out.printf("open_cancel\n"); + setVisible(false); + done = true; + } + + public AltosLink do_open(open_task open) throws InterruptedException { + this.open = open; + setVisible(true); + return link; + } + + public void actionPerformed(ActionEvent e) { + String cmd = e.getActionCommand(); + + if (cmd.equals("cancel")) + if (open != null) + open.cancel(); + done = true; + setVisible(false); + } + + public open_dialog(AltosUIFrame in_owner) { + super(in_owner, "Open Flash Target Device", true); + owner = in_owner; + + Container pane = getContentPane(); + GridBagConstraints c = new GridBagConstraints(); + Insets i = new Insets(4,4,4,4); + + + pane.setLayout(new GridBagLayout()); + + opening_label = new JLabel("Opening Device"); + c.fill = GridBagConstraints.HORIZONTAL; + c.anchor = GridBagConstraints.LINE_START; + c.insets = i; + c.weightx = 0; + c.weighty = 0; + + c.gridx = 0; + c.gridy = 0; + + pane.add(opening_label, c); + + cancel_button = new JButton("Cancel"); + cancel_button.addActionListener(this); + cancel_button.setActionCommand("cancel"); + + c.gridy = 1; + pane.add(cancel_button, c); + pack(); + setLocationRelativeTo(owner); + } + } + + private boolean open_device() throws InterruptedException { + + open_dialog dialog = new open_dialog(frame); + + open_task open = new open_task(device, dialog); + + link = dialog.do_open(open); + + return link != null; } /* diff --git a/altosuilib/AltosFlightInfoTableModel.java b/altosuilib/AltosFlightInfoTableModel.java index 943c9207..0bb346ae 100644 --- a/altosuilib/AltosFlightInfoTableModel.java +++ b/altosuilib/AltosFlightInfoTableModel.java @@ -16,7 +16,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_12; +package org.altusmetrum.altosuilib_13; import javax.swing.table.*; diff --git a/altosuilib/AltosFlightStatsTable.java b/altosuilib/AltosFlightStatsTable.java index 8f7e9bff..49fb4fbc 100644 --- a/altosuilib/AltosFlightStatsTable.java +++ b/altosuilib/AltosFlightStatsTable.java @@ -16,12 +16,12 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_12; +package org.altusmetrum.altosuilib_13; import java.awt.*; import javax.swing.*; import java.util.*; -import org.altusmetrum.altoslib_12.*; +import org.altusmetrum.altoslib_13.*; public class AltosFlightStatsTable extends JComponent implements AltosFontListener { GridBagLayout layout; diff --git a/altosuilib/AltosGraph.java b/altosuilib/AltosGraph.java index a758bcde..60eae962 100644 --- a/altosuilib/AltosGraph.java +++ b/altosuilib/AltosGraph.java @@ -16,14 +16,14 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_12; +package org.altusmetrum.altosuilib_13; import java.io.*; import java.util.ArrayList; import java.awt.*; import javax.swing.*; -import org.altusmetrum.altoslib_12.*; +import org.altusmetrum.altoslib_13.*; import org.jfree.ui.*; import org.jfree.chart.*; diff --git a/altosuilib/AltosInfoTable.java b/altosuilib/AltosInfoTable.java index e759394b..86917319 100644 --- a/altosuilib/AltosInfoTable.java +++ b/altosuilib/AltosInfoTable.java @@ -16,13 +16,13 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_12; +package org.altusmetrum.altosuilib_13; import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.table.*; -import org.altusmetrum.altoslib_12.*; +import org.altusmetrum.altoslib_13.*; public class AltosInfoTable extends JTable implements AltosFlightDisplay, HierarchyListener { private AltosFlightInfoTableModel model; diff --git a/altosuilib/AltosLed.java b/altosuilib/AltosLed.java index b53e7604..e3caf38b 100644 --- a/altosuilib/AltosLed.java +++ b/altosuilib/AltosLed.java @@ -16,7 +16,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_12; +package org.altusmetrum.altosuilib_13; import javax.swing.*; diff --git a/altosuilib/AltosLights.java b/altosuilib/AltosLights.java index 7b02d770..02cc77d1 100644 --- a/altosuilib/AltosLights.java +++ b/altosuilib/AltosLights.java @@ -16,7 +16,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_12; +package org.altusmetrum.altosuilib_13; import java.awt.*; import javax.swing.*; diff --git a/altosuilib/AltosPositionListener.java b/altosuilib/AltosPositionListener.java index f44735e2..ca98ca64 100644 --- a/altosuilib/AltosPositionListener.java +++ b/altosuilib/AltosPositionListener.java @@ -16,7 +16,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_12; +package org.altusmetrum.altosuilib_13; public interface AltosPositionListener { public void position_changed(int position); diff --git a/altosuilib/AltosRomconfigUI.java b/altosuilib/AltosRomconfigUI.java index 74323218..fd670d4e 100644 --- a/altosuilib/AltosRomconfigUI.java +++ b/altosuilib/AltosRomconfigUI.java @@ -16,12 +16,12 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_12; +package org.altusmetrum.altosuilib_13; import java.awt.*; import java.awt.event.*; import javax.swing.*; -import org.altusmetrum.altoslib_12.*; +import org.altusmetrum.altoslib_13.*; public class AltosRomconfigUI extends AltosUIDialog @@ -40,10 +40,10 @@ public class AltosRomconfigUI JButton cancel; /* Build the UI using a grid bag */ - public AltosRomconfigUI(JFrame in_owner) { - super (in_owner, "Configure TeleMetrum Rom Values", true); + public AltosRomconfigUI(JFrame frame, AltosRomconfig config) { + super (frame, "Configure Rom Values", true); - owner = in_owner; + owner = frame; GridBagConstraints c; Insets il = new Insets(4,4,4,4); @@ -52,9 +52,11 @@ public class AltosRomconfigUI pane = getContentPane(); pane.setLayout(new GridBagLayout()); + int y = 0; + /* Serial */ c = new GridBagConstraints(); - c.gridx = 0; c.gridy = 0; + c.gridx = 0; c.gridy = y; c.gridwidth = 3; c.fill = GridBagConstraints.NONE; c.anchor = GridBagConstraints.LINE_START; @@ -63,7 +65,7 @@ public class AltosRomconfigUI pane.add(serial_label, c); c = new GridBagConstraints(); - c.gridx = 3; c.gridy = 0; + c.gridx = 3; c.gridy = y; c.gridwidth = 3; c.fill = GridBagConstraints.HORIZONTAL; c.weightx = 1; @@ -72,31 +74,37 @@ public class AltosRomconfigUI serial_value = new JTextField("00000000"); pane.add(serial_value, c); - /* Radio calibration value */ - c = new GridBagConstraints(); - c.gridx = 0; c.gridy = 1; - c.gridwidth = 3; - c.fill = GridBagConstraints.NONE; - c.anchor = GridBagConstraints.LINE_START; - c.insets = il; - c.ipady = 5; - radio_calibration_label = new JLabel("Radio Calibration:"); - pane.add(radio_calibration_label, c); - - c = new GridBagConstraints(); - c.gridx = 3; c.gridy = 1; - c.gridwidth = 3; - c.fill = GridBagConstraints.HORIZONTAL; - c.weightx = 1; - c.anchor = GridBagConstraints.LINE_START; - c.insets = ir; - c.ipady = 5; - radio_calibration_value = new JTextField("00000000"); - pane.add(radio_calibration_value, c); + y++; + + if (AltosLib.has_radio(config.usb_id.pid)) { + /* Radio calibration value */ + c = new GridBagConstraints(); + c.gridx = 0; c.gridy = y; + c.gridwidth = 3; + c.fill = GridBagConstraints.NONE; + c.anchor = GridBagConstraints.LINE_START; + c.insets = il; + c.ipady = 5; + radio_calibration_label = new JLabel("Radio Calibration:"); + pane.add(radio_calibration_label, c); + + c = new GridBagConstraints(); + c.gridx = 3; c.gridy = y; + c.gridwidth = 3; + c.fill = GridBagConstraints.HORIZONTAL; + c.weightx = 1; + c.anchor = GridBagConstraints.LINE_START; + c.insets = ir; + c.ipady = 5; + radio_calibration_value = new JTextField("00000000"); + pane.add(radio_calibration_value, c); + + y++; + } /* Buttons */ c = new GridBagConstraints(); - c.gridx = 0; c.gridy = 2; + c.gridx = 0; c.gridy = y; c.gridwidth = 3; c.fill = GridBagConstraints.NONE; c.anchor = GridBagConstraints.CENTER; @@ -107,7 +115,7 @@ public class AltosRomconfigUI ok.setActionCommand("ok"); c = new GridBagConstraints(); - c.gridx = 3; c.gridy = 2; + c.gridx = 3; c.gridy = y; c.gridwidth = 3; c.fill = GridBagConstraints.NONE; c.anchor = GridBagConstraints.CENTER; @@ -117,12 +125,10 @@ public class AltosRomconfigUI cancel.addActionListener(this); cancel.setActionCommand("cancel"); + y++; + pack(); setLocationRelativeTo(owner); - } - - public AltosRomconfigUI(JFrame frame, AltosRomconfig config) { - this(frame); set(config); } @@ -155,10 +161,15 @@ public class AltosRomconfigUI } int radio_calibration() { + if (radio_calibration_value == null) + return 0; + return Integer.parseInt(radio_calibration_value.getText()); } void set_radio_calibration(int calibration) { + if (radio_calibration_value == null) + return; radio_calibration_value.setText(String.format("%d", calibration)); } diff --git a/altosuilib/AltosScanUI.java b/altosuilib/AltosScanUI.java index c63f027c..fad1b2cd 100644 --- a/altosuilib/AltosScanUI.java +++ b/altosuilib/AltosScanUI.java @@ -16,7 +16,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_12; +package org.altusmetrum.altosuilib_13; import java.awt.*; import java.awt.event.*; @@ -26,7 +26,7 @@ import java.io.*; import java.util.*; import java.text.*; import java.util.concurrent.*; -import org.altusmetrum.altoslib_12.*; +import org.altusmetrum.altoslib_13.*; class AltosScanResult { String callsign; diff --git a/altosuilib/AltosSerial.java b/altosuilib/AltosSerial.java index d7c6129c..1c2e3cd5 100644 --- a/altosuilib/AltosSerial.java +++ b/altosuilib/AltosSerial.java @@ -20,13 +20,13 @@ * Deal with TeleDongle on a serial port */ -package org.altusmetrum.altosuilib_12; +package org.altusmetrum.altosuilib_13; import java.io.*; import java.util.*; import java.awt.*; import javax.swing.*; -import org.altusmetrum.altoslib_12.*; +import org.altusmetrum.altoslib_13.*; import libaltosJNI.*; /* diff --git a/altosuilib/AltosSerialInUseException.java b/altosuilib/AltosSerialInUseException.java index c8ca4d56..51474e8a 100644 --- a/altosuilib/AltosSerialInUseException.java +++ b/altosuilib/AltosSerialInUseException.java @@ -16,7 +16,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_12; +package org.altusmetrum.altosuilib_13; public class AltosSerialInUseException extends Exception { public AltosDevice device; diff --git a/altosuilib/AltosShapeListener.java b/altosuilib/AltosShapeListener.java index 6bf52fd4..1e2e0618 100644 --- a/altosuilib/AltosShapeListener.java +++ b/altosuilib/AltosShapeListener.java @@ -12,7 +12,7 @@ * General Public License for more details. */ -package org.altusmetrum.altosuilib_12; +package org.altusmetrum.altosuilib_13; public interface AltosShapeListener { void set_shapes_visible(boolean visible); diff --git a/altosuilib/AltosUIAccelCal.java b/altosuilib/AltosUIAccelCal.java index af72a21d..e2c917b1 100644 --- a/altosuilib/AltosUIAccelCal.java +++ b/altosuilib/AltosUIAccelCal.java @@ -16,14 +16,14 @@ * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */ -package org.altusmetrum.altosuilib_12; +package org.altusmetrum.altosuilib_13; import java.awt.*; import java.awt.event.*; import java.beans.*; import javax.swing.*; import javax.swing.event.*; -import org.altusmetrum.altoslib_12.*; +import org.altusmetrum.altoslib_13.*; public class AltosUIAccelCal extends AltosUIDialog diff --git a/altosuilib/AltosUIAxis.java b/altosuilib/AltosUIAxis.java index 52873363..59c5357a 100644 --- a/altosuilib/AltosUIAxis.java +++ b/altosuilib/AltosUIAxis.java @@ -16,14 +16,14 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_12; +package org.altusmetrum.altosuilib_13; import java.io.*; import java.util.ArrayList; import java.awt.*; import javax.swing.*; -import org.altusmetrum.altoslib_12.*; +import org.altusmetrum.altoslib_13.*; import org.jfree.ui.*; import org.jfree.chart.*; diff --git a/altosuilib/AltosUIConfigure.java b/altosuilib/AltosUIConfigure.java index 6ca8c777..e61b5d52 100644 --- a/altosuilib/AltosUIConfigure.java +++ b/altosuilib/AltosUIConfigure.java @@ -16,14 +16,14 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_12; +package org.altusmetrum.altosuilib_13; import java.awt.*; import java.awt.event.*; import java.beans.*; import javax.swing.*; import javax.swing.event.*; -import org.altusmetrum.altoslib_12.*; +import org.altusmetrum.altoslib_13.*; class DelegatingRenderer implements ListCellRenderer<Object> { @@ -270,9 +270,8 @@ public class AltosUIConfigure constraints(0, 3)); row++; - pane.add(new JLabel (String.format("AltOS version %s (%smaps key)", - AltosVersion.version, - AltosVersion.has_google_maps_api_key() ? "" : "no ")), + pane.add(new JLabel (String.format("AltOS version %s", + AltosVersion.version)), constraints(0, 3)); row++; diff --git a/altosuilib/AltosUIDataMissing.java b/altosuilib/AltosUIDataMissing.java index 05227e1d..043fd69b 100644 --- a/altosuilib/AltosUIDataMissing.java +++ b/altosuilib/AltosUIDataMissing.java @@ -16,7 +16,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_12; +package org.altusmetrum.altosuilib_13; public class AltosUIDataMissing extends Exception { public int id; diff --git a/altosuilib/AltosUIDataPoint.java b/altosuilib/AltosUIDataPoint.java index 36fadeaf..b82a7825 100644 --- a/altosuilib/AltosUIDataPoint.java +++ b/altosuilib/AltosUIDataPoint.java @@ -16,7 +16,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_12; +package org.altusmetrum.altosuilib_13; public interface AltosUIDataPoint { public abstract double x() throws AltosUIDataMissing; diff --git a/altosuilib/AltosUIDataSet.java b/altosuilib/AltosUIDataSet.java index ddda3d3d..8602473d 100644 --- a/altosuilib/AltosUIDataSet.java +++ b/altosuilib/AltosUIDataSet.java @@ -16,7 +16,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_12; +package org.altusmetrum.altosuilib_13; public interface AltosUIDataSet { public abstract String name(); diff --git a/altosuilib/AltosUIDialog.java b/altosuilib/AltosUIDialog.java index 5eafa457..292c5cc1 100644 --- a/altosuilib/AltosUIDialog.java +++ b/altosuilib/AltosUIDialog.java @@ -16,7 +16,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_12; +package org.altusmetrum.altosuilib_13; import java.awt.*; import java.awt.event.*; diff --git a/altosuilib/AltosUIEnable.java b/altosuilib/AltosUIEnable.java index 851e831f..ef9a692a 100644 --- a/altosuilib/AltosUIEnable.java +++ b/altosuilib/AltosUIEnable.java @@ -16,7 +16,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_12; +package org.altusmetrum.altosuilib_13; import java.awt.*; import java.awt.event.*; @@ -25,7 +25,7 @@ import javax.swing.event.*; import java.io.*; import java.util.concurrent.*; import java.util.*; -import org.altusmetrum.altoslib_12.*; +import org.altusmetrum.altoslib_13.*; import org.jfree.ui.*; import org.jfree.chart.*; diff --git a/altosuilib/AltosUIFlightSeries.java b/altosuilib/AltosUIFlightSeries.java index 407e5ab4..49c7226c 100644 --- a/altosuilib/AltosUIFlightSeries.java +++ b/altosuilib/AltosUIFlightSeries.java @@ -12,12 +12,12 @@ * General Public License for more details. */ -package org.altusmetrum.altosuilib_12; +package org.altusmetrum.altosuilib_13; import java.util.*; import java.awt.*; import javax.swing.*; -import org.altusmetrum.altoslib_12.*; +import org.altusmetrum.altoslib_13.*; import org.jfree.ui.*; import org.jfree.chart.*; diff --git a/altosuilib/AltosUIFlightTab.java b/altosuilib/AltosUIFlightTab.java index cf6a0c74..1633d9b9 100644 --- a/altosuilib/AltosUIFlightTab.java +++ b/altosuilib/AltosUIFlightTab.java @@ -16,13 +16,13 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_12; +package org.altusmetrum.altosuilib_13; import java.util.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; -import org.altusmetrum.altoslib_12.*; +import org.altusmetrum.altoslib_13.*; public abstract class AltosUIFlightTab extends JComponent implements AltosFlightDisplay, HierarchyListener { public GridBagLayout layout; diff --git a/altosuilib/AltosUIFrame.java b/altosuilib/AltosUIFrame.java index b7eee664..301bdc68 100644 --- a/altosuilib/AltosUIFrame.java +++ b/altosuilib/AltosUIFrame.java @@ -16,7 +16,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_12; +package org.altusmetrum.altosuilib_13; import java.awt.*; import java.awt.event.*; diff --git a/altosuilib/AltosUIFreqList.java b/altosuilib/AltosUIFreqList.java index 7a5c3543..f3f7035d 100644 --- a/altosuilib/AltosUIFreqList.java +++ b/altosuilib/AltosUIFreqList.java @@ -16,10 +16,10 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_12; +package org.altusmetrum.altosuilib_13; import javax.swing.*; -import org.altusmetrum.altoslib_12.*; +import org.altusmetrum.altoslib_13.*; public class AltosUIFreqList extends JComboBox<AltosFrequency> { diff --git a/altosuilib/AltosUIGraph.java b/altosuilib/AltosUIGraph.java index 40f415f1..098e9a52 100644 --- a/altosuilib/AltosUIGraph.java +++ b/altosuilib/AltosUIGraph.java @@ -16,7 +16,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_12; +package org.altusmetrum.altosuilib_13; import java.io.*; import java.util.*; @@ -24,7 +24,7 @@ import java.util.ArrayList; import java.awt.*; import javax.swing.*; -import org.altusmetrum.altoslib_12.*; +import org.altusmetrum.altoslib_13.*; import org.jfree.ui.*; import org.jfree.chart.*; diff --git a/altosuilib/AltosUIGrapher.java b/altosuilib/AltosUIGrapher.java index 916d0b3f..642072fa 100644 --- a/altosuilib/AltosUIGrapher.java +++ b/altosuilib/AltosUIGrapher.java @@ -16,14 +16,14 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_12; +package org.altusmetrum.altosuilib_13; import java.io.*; import java.util.ArrayList; import java.awt.*; import javax.swing.*; -import org.altusmetrum.altoslib_12.*; +import org.altusmetrum.altoslib_13.*; import org.jfree.ui.*; import org.jfree.chart.*; diff --git a/altosuilib/AltosUIImage.java b/altosuilib/AltosUIImage.java index f23b50bc..4ced80fd 100644 --- a/altosuilib/AltosUIImage.java +++ b/altosuilib/AltosUIImage.java @@ -16,7 +16,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_12; +package org.altusmetrum.altoslib_13; import javax.swing.*; import javax.imageio.ImageIO; diff --git a/altosuilib/AltosUIIndicator.java b/altosuilib/AltosUIIndicator.java index ac2e6f06..6baa185c 100644 --- a/altosuilib/AltosUIIndicator.java +++ b/altosuilib/AltosUIIndicator.java @@ -16,11 +16,11 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_12; +package org.altusmetrum.altosuilib_13; import java.awt.*; import javax.swing.*; -import org.altusmetrum.altoslib_12.*; +import org.altusmetrum.altoslib_13.*; public abstract class AltosUIIndicator implements AltosFontListener, AltosUnitsListener { JLabel label; diff --git a/altosuilib/AltosUILib.java b/altosuilib/AltosUILib.java index 81a8b131..704782f4 100644 --- a/altosuilib/AltosUILib.java +++ b/altosuilib/AltosUILib.java @@ -16,12 +16,12 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_12; +package org.altusmetrum.altosuilib_13; import java.awt.*; import libaltosJNI.*; -import org.altusmetrum.altoslib_12.*; +import org.altusmetrum.altoslib_13.*; public class AltosUILib extends AltosLib { diff --git a/altosuilib/AltosUILineStyle.java b/altosuilib/AltosUILineStyle.java index 387281a3..872ef9c7 100644 --- a/altosuilib/AltosUILineStyle.java +++ b/altosuilib/AltosUILineStyle.java @@ -12,14 +12,14 @@ * General Public License for more details. */ -package org.altusmetrum.altosuilib_12; +package org.altusmetrum.altosuilib_13; import java.io.*; import java.util.ArrayList; import java.awt.*; import javax.swing.*; -import org.altusmetrum.altoslib_12.*; +import org.altusmetrum.altoslib_13.*; import org.jfree.ui.*; import org.jfree.chart.*; diff --git a/altosuilib/AltosUIListener.java b/altosuilib/AltosUIListener.java index 54a00661..3c54fb54 100644 --- a/altosuilib/AltosUIListener.java +++ b/altosuilib/AltosUIListener.java @@ -16,7 +16,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_12; +package org.altusmetrum.altosuilib_13; public interface AltosUIListener { public void ui_changed(String look_and_feel); diff --git a/altosuilib/AltosUIMap.java b/altosuilib/AltosUIMap.java index 2e1e8f16..8dfdba64 100644 --- a/altosuilib/AltosUIMap.java +++ b/altosuilib/AltosUIMap.java @@ -16,7 +16,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_12; +package org.altusmetrum.altosuilib_13; import java.awt.*; import java.awt.event.*; @@ -28,7 +28,7 @@ import java.awt.geom.*; import java.util.*; import java.util.concurrent.*; import javax.imageio.*; -import org.altusmetrum.altoslib_12.*; +import org.altusmetrum.altoslib_13.*; public class AltosUIMap extends JComponent implements AltosFlightDisplay, AltosMapInterface { @@ -106,7 +106,7 @@ public class AltosUIMap extends JComponent implements AltosFlightDisplay, AltosM } private boolean is_drag_event(MouseEvent e) { - return e.getModifiers() == InputEvent.BUTTON1_MASK; + return e.getModifiersEx() == InputEvent.BUTTON1_DOWN_MASK; } /* MouseMotionListener methods */ @@ -264,6 +264,21 @@ public class AltosUIMap extends JComponent implements AltosFlightDisplay, AltosM if (image != null) { g.drawImage(image, point.x, point.y, null); +/* + * Useful when debugging map fetching problems + * + String message = String.format("%.6f %.6f", center.lat, center.lon); + g.setFont(tile_font); + g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON); + Rectangle2D bounds = tile_font.getStringBounds(message, g.getFontRenderContext()); + + float x = px_size / 2.0f; + float y = px_size / 2.0f; + x = x - (float) bounds.getWidth() / 2.0f; + y = y + (float) bounds.getHeight() / 2.0f; + g.setColor(Color.RED); + g.drawString(message, (float) point_double.x + x, (float) point_double.y + y); +*/ } else { g.setColor(Color.GRAY); g.fillRect(point.x, point.y, px_size, px_size); @@ -278,10 +293,10 @@ public class AltosUIMap extends JComponent implements AltosFlightDisplay, AltosM message = "Internal error"; break; case AltosMapTile.failed: - message = "Network error, check connection"; + message = "Network error"; break; case AltosMapTile.forbidden: - message = "Too many requests, try later"; + message = "Outside of known launch areas"; break; } if (message != null && tile_font != null) { @@ -386,8 +401,10 @@ public class AltosUIMap extends JComponent implements AltosFlightDisplay, AltosM JLabel zoom_label; public void set_maptype(int type) { +/* map.set_maptype(type); maptype_combo.setSelectedIndex(type); +*/ } /* AltosUIMapPreload functions */ @@ -433,7 +450,9 @@ public class AltosUIMap extends JComponent implements AltosFlightDisplay, AltosM /* internal layout bits */ private GridBagLayout layout = new GridBagLayout(); +/* JComboBox<String> maptype_combo; +*/ MapView view; @@ -522,6 +541,7 @@ public class AltosUIMap extends JComponent implements AltosFlightDisplay, AltosM c.weighty = 0; add(zoom_out, c); +/* maptype_combo = new JComboBox<String>(map.maptype_labels); maptype_combo.setEditable(false); @@ -540,7 +560,7 @@ public class AltosUIMap extends JComponent implements AltosFlightDisplay, AltosM c.weightx = 0; c.weighty = 0; add(maptype_combo, c); - +*/ map = new AltosMap(this); } } diff --git a/altosuilib/AltosUIMapPreload.java b/altosuilib/AltosUIMapPreload.java index 81cda0d2..ffd974ac 100644 --- a/altosuilib/AltosUIMapPreload.java +++ b/altosuilib/AltosUIMapPreload.java @@ -16,7 +16,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_12; +package org.altusmetrum.altosuilib_13; import java.awt.*; import java.awt.event.*; @@ -27,7 +27,7 @@ import java.text.*; import java.lang.Math; import java.net.URL; import java.net.URLConnection; -import org.altusmetrum.altoslib_12.*; +import org.altusmetrum.altoslib_13.*; class AltosUIMapPos extends Box implements ActionListener { AltosUIMapPreload preload; @@ -144,7 +144,9 @@ public class AltosUIMapPreload extends AltosUIFrame implements ActionListener, I JToggleButton load_button; JButton close_button; +/* JCheckBox[] maptypes = new JCheckBox[AltosMap.maptype_terrain - AltosMap.maptype_hybrid + 1]; +*/ JComboBox<Integer> min_zoom; JComboBox<Integer> max_zoom; @@ -215,11 +217,14 @@ public class AltosUIMapPreload extends AltosUIFrame implements ActionListener, I private int all_types() { +/* int all_types = 0; for (int t = AltosMap.maptype_hybrid; t <= AltosMap.maptype_terrain; t++) if (maptypes[t].isSelected()) all_types |= (1 << t); return all_types; +*/ + return 1 << AltosMap.maptype_hybrid; } void center_map(double latitude, double longitude) { @@ -485,6 +490,7 @@ public class AltosUIMapPreload extends AltosUIFrame implements ActionListener, I pane.add(close_button, c); +/* JLabel types_label = new JLabel("Map Types"); c.gridx = 2; c.gridwidth = 2; @@ -501,6 +507,7 @@ public class AltosUIMapPreload extends AltosUIFrame implements ActionListener, I c.gridy = (type & 1) + 3; pane.add(maptypes[type], c); } +*/ JLabel min_zoom_label = new JLabel("Minimum Zoom"); c.gridx = 4; diff --git a/altosuilib/AltosUIMarker.java b/altosuilib/AltosUIMarker.java index 90cdb291..63e81024 100644 --- a/altosuilib/AltosUIMarker.java +++ b/altosuilib/AltosUIMarker.java @@ -16,14 +16,14 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_12; +package org.altusmetrum.altosuilib_13; import java.io.*; import java.util.ArrayList; import java.awt.*; import javax.swing.*; -import org.altusmetrum.altoslib_12.*; +import org.altusmetrum.altoslib_13.*; import org.jfree.ui.*; import org.jfree.chart.*; diff --git a/altosuilib/AltosUIPreferences.java b/altosuilib/AltosUIPreferences.java index a2014065..062cb49d 100644 --- a/altosuilib/AltosUIPreferences.java +++ b/altosuilib/AltosUIPreferences.java @@ -16,13 +16,13 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_12; +package org.altusmetrum.altosuilib_13; import java.io.*; import java.util.*; import java.awt.Component; import javax.swing.*; -import org.altusmetrum.altoslib_12.*; +import org.altusmetrum.altoslib_13.*; public class AltosUIPreferences extends AltosPreferences { diff --git a/altosuilib/AltosUIPreferencesBackend.java b/altosuilib/AltosUIPreferencesBackend.java index 163ba173..7c05e0e5 100644 --- a/altosuilib/AltosUIPreferencesBackend.java +++ b/altosuilib/AltosUIPreferencesBackend.java @@ -16,11 +16,11 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_12; +package org.altusmetrum.altosuilib_13; import java.io.File; import java.util.prefs.*; -import org.altusmetrum.altoslib_12.*; +import org.altusmetrum.altoslib_13.*; import javax.swing.filechooser.FileSystemView; public class AltosUIPreferencesBackend extends AltosPreferencesBackend { diff --git a/altosuilib/AltosUIRateList.java b/altosuilib/AltosUIRateList.java index d1c15ce0..1717fb69 100644 --- a/altosuilib/AltosUIRateList.java +++ b/altosuilib/AltosUIRateList.java @@ -16,10 +16,10 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_12; +package org.altusmetrum.altosuilib_13; import javax.swing.*; -import org.altusmetrum.altoslib_12.*; +import org.altusmetrum.altoslib_13.*; public class AltosUIRateList extends JComboBox<String> { diff --git a/altosuilib/AltosUITelemetryList.java b/altosuilib/AltosUITelemetryList.java index f884cd41..84f190e6 100644 --- a/altosuilib/AltosUITelemetryList.java +++ b/altosuilib/AltosUITelemetryList.java @@ -16,11 +16,11 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_12; +package org.altusmetrum.altosuilib_13; import java.util.*; import javax.swing.*; -import org.altusmetrum.altoslib_12.*; +import org.altusmetrum.altoslib_13.*; public class AltosUITelemetryList extends JComboBox<String> { diff --git a/altosuilib/AltosUITimeSeries.java b/altosuilib/AltosUITimeSeries.java index e85e3c17..4c2f9ba9 100644 --- a/altosuilib/AltosUITimeSeries.java +++ b/altosuilib/AltosUITimeSeries.java @@ -16,14 +16,14 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_12; +package org.altusmetrum.altosuilib_13; import java.io.*; import java.util.ArrayList; import java.awt.*; import javax.swing.*; -import org.altusmetrum.altoslib_12.*; +import org.altusmetrum.altoslib_13.*; import org.jfree.ui.*; import org.jfree.chart.*; diff --git a/altosuilib/AltosUIUnitsIndicator.java b/altosuilib/AltosUIUnitsIndicator.java index bbfebef6..19687c32 100644 --- a/altosuilib/AltosUIUnitsIndicator.java +++ b/altosuilib/AltosUIUnitsIndicator.java @@ -16,11 +16,11 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_12; +package org.altusmetrum.altosuilib_13; import java.awt.*; import javax.swing.*; -import org.altusmetrum.altoslib_12.*; +import org.altusmetrum.altoslib_13.*; public abstract class AltosUIUnitsIndicator extends AltosUIIndicator { diff --git a/altosuilib/AltosUIVoltageIndicator.java b/altosuilib/AltosUIVoltageIndicator.java index 297a6531..c8797b72 100644 --- a/altosuilib/AltosUIVoltageIndicator.java +++ b/altosuilib/AltosUIVoltageIndicator.java @@ -16,11 +16,11 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_12; +package org.altusmetrum.altosuilib_13; import java.awt.*; import javax.swing.*; -import org.altusmetrum.altoslib_12.*; +import org.altusmetrum.altoslib_13.*; public abstract class AltosUIVoltageIndicator extends AltosUIUnitsIndicator { diff --git a/altosuilib/AltosUSBDevice.java b/altosuilib/AltosUSBDevice.java index 49f966f3..f43d6bef 100644 --- a/altosuilib/AltosUSBDevice.java +++ b/altosuilib/AltosUSBDevice.java @@ -16,7 +16,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_12; +package org.altusmetrum.altosuilib_13; import java.util.*; import libaltosJNI.*; @@ -94,6 +94,24 @@ public class AltosUSBDevice extends altos_device implements AltosDevice { return false; } + public int hashCode() { + return getVendor() ^ getProduct() ^ getSerial() ^ getPath().hashCode(); + } + + public boolean equals(Object o) { + if (o == null) + return false; + + if (!(o instanceof AltosUSBDevice)) + return false; + AltosUSBDevice other = (AltosUSBDevice) o; + + return getVendor() == other.getVendor() && + getProduct() == other.getProduct() && + getSerial() == other.getSerial() && + getPath().equals(other.getPath()); + } + static public java.util.List<AltosDevice> list(int product) { if (!AltosUILib.load_library()) return null; diff --git a/altosuilib/AltosVoice.java b/altosuilib/AltosVoice.java index 1d579a16..264eede3 100644 --- a/altosuilib/AltosVoice.java +++ b/altosuilib/AltosVoice.java @@ -16,7 +16,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_12; +package org.altusmetrum.altosuilib_13; import com.sun.speech.freetts.Voice; import com.sun.speech.freetts.VoiceManager; diff --git a/altosuilib/GrabNDrag.java b/altosuilib/GrabNDrag.java deleted file mode 100644 index 665ef89e..00000000 --- a/altosuilib/GrabNDrag.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright © 2010 Anthony Towns <aj@erisian.com.au> - * - * 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; either version 2 of the License, or - * (at your option) any later version. - * - * 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 org.altusmetrum.altosuilib_12; - -import java.awt.*; -import java.awt.event.*; -import javax.swing.*; -import javax.swing.event.MouseInputAdapter; - -class GrabNDrag extends MouseInputAdapter { - private JComponent scroll; - private Point startPt = new Point(); - - public GrabNDrag(JComponent scroll) { - this.scroll = scroll; - scroll.addMouseMotionListener(this); - scroll.addMouseListener(this); - scroll.setAutoscrolls(true); - } - - public static boolean grab_n_drag(MouseEvent e) { - return e.getModifiers() == InputEvent.BUTTON1_MASK; - } - - public void mousePressed(MouseEvent e) { - if (grab_n_drag(e)) - startPt.setLocation(e.getPoint()); - } - public void mouseDragged(MouseEvent e) { - if (grab_n_drag(e)) { - int xd = e.getX() - startPt.x; - int yd = e.getY() - startPt.y; - - Rectangle r = scroll.getVisibleRect(); - r.x -= xd; - r.y -= yd; - scroll.scrollRectToVisible(r); - } - } -} diff --git a/altosuilib/Makefile.am b/altosuilib/Makefile.am index c65a3d15..c00144f8 100644 --- a/altosuilib/Makefile.am +++ b/altosuilib/Makefile.am @@ -9,7 +9,6 @@ SRC=. altosuilibdir = $(datadir)/java altosuilib_JAVA = \ - GrabNDrag.java \ AltosDevice.java \ AltosDeviceDialog.java \ AltosPositionListener.java \ diff --git a/altosuilib/OSXAdapter.java b/altosuilib/OSXAdapter.java index c338396f..c05412ce 100755 --- a/altosuilib/OSXAdapter.java +++ b/altosuilib/OSXAdapter.java @@ -55,7 +55,7 @@ Copyright © 2003-2007 Apple, Inc., All Rights Reserved */ -package org.altusmetrum.altosuilib_12; +package org.altusmetrum.altosuilib_13; import java.lang.reflect.*; import java.util.HashMap; |
