summaryrefslogtreecommitdiff
path: root/altosuilib
diff options
context:
space:
mode:
Diffstat (limited to 'altosuilib')
-rw-r--r--altosuilib/AltosBTDevice.java4
-rw-r--r--altosuilib/AltosBTDeviceIterator.java4
-rw-r--r--altosuilib/AltosBTKnown.java4
-rw-r--r--altosuilib/AltosBTManage.java4
-rw-r--r--altosuilib/AltosCSVUI.java4
-rw-r--r--altosuilib/AltosConfigFreqUI.java4
-rw-r--r--altosuilib/AltosDataChooser.java4
-rw-r--r--altosuilib/AltosDevice.java3
-rw-r--r--altosuilib/AltosDeviceDialog.java40
-rw-r--r--altosuilib/AltosDeviceUIDialog.java2
-rw-r--r--altosuilib/AltosDisplayThread.java4
-rw-r--r--altosuilib/AltosEepromDelete.java4
-rw-r--r--altosuilib/AltosEepromGrapher.java4
-rw-r--r--altosuilib/AltosEepromManage.java4
-rw-r--r--altosuilib/AltosEepromMonitorUI.java4
-rw-r--r--altosuilib/AltosEepromSelect.java4
-rw-r--r--altosuilib/AltosFlashUI.java306
-rw-r--r--altosuilib/AltosFlightInfoTableModel.java2
-rw-r--r--altosuilib/AltosFlightStatsTable.java4
-rw-r--r--altosuilib/AltosGraph.java4
-rw-r--r--altosuilib/AltosInfoTable.java4
-rw-r--r--altosuilib/AltosLed.java2
-rw-r--r--altosuilib/AltosLights.java2
-rw-r--r--altosuilib/AltosPositionListener.java2
-rw-r--r--altosuilib/AltosRomconfigUI.java79
-rw-r--r--altosuilib/AltosScanUI.java4
-rw-r--r--altosuilib/AltosSerial.java4
-rw-r--r--altosuilib/AltosSerialInUseException.java2
-rw-r--r--altosuilib/AltosShapeListener.java2
-rw-r--r--altosuilib/AltosUIAccelCal.java4
-rw-r--r--altosuilib/AltosUIAxis.java4
-rw-r--r--altosuilib/AltosUIConfigure.java9
-rw-r--r--altosuilib/AltosUIDataMissing.java2
-rw-r--r--altosuilib/AltosUIDataPoint.java2
-rw-r--r--altosuilib/AltosUIDataSet.java2
-rw-r--r--altosuilib/AltosUIDialog.java2
-rw-r--r--altosuilib/AltosUIEnable.java4
-rw-r--r--altosuilib/AltosUIFlightSeries.java4
-rw-r--r--altosuilib/AltosUIFlightTab.java4
-rw-r--r--altosuilib/AltosUIFrame.java2
-rw-r--r--altosuilib/AltosUIFreqList.java4
-rw-r--r--altosuilib/AltosUIGraph.java4
-rw-r--r--altosuilib/AltosUIGrapher.java4
-rw-r--r--altosuilib/AltosUIImage.java2
-rw-r--r--altosuilib/AltosUIIndicator.java4
-rw-r--r--altosuilib/AltosUILib.java4
-rw-r--r--altosuilib/AltosUILineStyle.java4
-rw-r--r--altosuilib/AltosUIListener.java2
-rw-r--r--altosuilib/AltosUIMap.java32
-rw-r--r--altosuilib/AltosUIMapPreload.java11
-rw-r--r--altosuilib/AltosUIMarker.java4
-rw-r--r--altosuilib/AltosUIPreferences.java4
-rw-r--r--altosuilib/AltosUIPreferencesBackend.java4
-rw-r--r--altosuilib/AltosUIRateList.java4
-rw-r--r--altosuilib/AltosUITelemetryList.java4
-rw-r--r--altosuilib/AltosUITimeSeries.java4
-rw-r--r--altosuilib/AltosUIUnitsIndicator.java4
-rw-r--r--altosuilib/AltosUIVoltageIndicator.java4
-rw-r--r--altosuilib/AltosUSBDevice.java20
-rw-r--r--altosuilib/AltosVoice.java2
-rw-r--r--altosuilib/GrabNDrag.java56
-rw-r--r--altosuilib/Makefile.am1
-rwxr-xr-xaltosuilib/OSXAdapter.java2
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;