diff options
| -rw-r--r-- | altosui/AltosBTDevice.java | 2 | ||||
| -rw-r--r-- | altosui/AltosBTDeviceIterator.java | 4 | ||||
| -rw-r--r-- | altosui/AltosBTManage.java | 21 | ||||
| -rw-r--r-- | altosui/AltosDeviceDialog.java | 91 | ||||
| -rw-r--r-- | altosui/AltosUI.java | 4 | 
5 files changed, 65 insertions, 57 deletions
| diff --git a/altosui/AltosBTDevice.java b/altosui/AltosBTDevice.java index 5e946415..ff2be49a 100644 --- a/altosui/AltosBTDevice.java +++ b/altosui/AltosBTDevice.java @@ -62,7 +62,7 @@ public class AltosBTDevice extends altos_bt_device implements AltosDevice {  		if (name == null)  			name = "Altus Metrum";  		return String.format("%-20.20s %4d %s", -				     getProduct(), getSerial(), getAddr()); +				     getProductName(), getSerial(), getAddr());  	}  	public String toShortString() { diff --git a/altosui/AltosBTDeviceIterator.java b/altosui/AltosBTDeviceIterator.java index 935bf822..63ce3674 100644 --- a/altosui/AltosBTDeviceIterator.java +++ b/altosui/AltosBTDeviceIterator.java @@ -21,7 +21,7 @@ import java.util.*;  import libaltosJNI.*;  public class AltosBTDeviceIterator implements Iterator<AltosBTDevice> { -	String		product; +	int		product;  	AltosBTDevice	current;  	boolean		done;  	SWIGTYPE_p_altos_bt_list list; @@ -58,7 +58,7 @@ public class AltosBTDeviceIterator implements Iterator<AltosBTDevice> {  		throw new UnsupportedOperationException();  	} -	public AltosBTDeviceIterator(String in_product) { +	public AltosBTDeviceIterator(int in_product) {  		product = in_product;  		done = false;  		current = null; diff --git a/altosui/AltosBTManage.java b/altosui/AltosBTManage.java index 8e9e0f73..66e1210e 100644 --- a/altosui/AltosBTManage.java +++ b/altosui/AltosBTManage.java @@ -31,9 +31,8 @@ import java.util.concurrent.*;  import libaltosJNI.*;  public class AltosBTManage extends JDialog implements ActionListener { -	String	product;  	LinkedBlockingQueue<AltosBTDevice> found_devices; -	JFrame frame; +	Frame frame;  	class DeviceList extends JList implements Iterable<AltosBTDevice> {  		LinkedList<AltosBTDevice> devices; @@ -104,7 +103,7 @@ public class AltosBTManage extends JDialog implements ActionListener {  		public void run () {  			try { -				AltosBTDeviceIterator	i = new AltosBTDeviceIterator(product); +				AltosBTDeviceIterator	i = new AltosBTDeviceIterator(Altos.product_any);  				AltosBTDevice		device;  				while ((device = i.next()) != null) { @@ -124,9 +123,21 @@ public class AltosBTManage extends JDialog implements ActionListener {  		}  	} -	public AltosBTManage(String product, JFrame in_frame) { +	public static void show(Component frameComp) { +		Frame	frame = JOptionPane.getFrameForComponent(frameComp); +		AltosBTManage	dialog; + +		dialog = new AltosBTManage(frame); +		dialog.setVisible(true); +	} + +	public AltosBTManage(Frame in_frame) { +		super(in_frame, "Manage Bluetooth Devices", true); +  		frame = in_frame; +  		BTGetVisibleDevices	get_visible_devices = new BTGetVisibleDevices(); +  		Thread t = new Thread(get_visible_devices);  		t.start(); @@ -182,7 +193,5 @@ public class AltosBTManage extends JDialog implements ActionListener {  		//Initialize values.  //		list.setSelectedValue(initial, true);  		pack(); -		setLocationRelativeTo(frame); -		setVisible(true);  	}  } diff --git a/altosui/AltosDeviceDialog.java b/altosui/AltosDeviceDialog.java index 154bf20b..fa20f867 100644 --- a/altosui/AltosDeviceDialog.java +++ b/altosui/AltosDeviceDialog.java @@ -22,59 +22,55 @@ import java.util.*;  import javax.swing.*;  import java.awt.*;  import java.awt.event.*; -import libaltosJNI.libaltos; -import libaltosJNI.altos_device; -import libaltosJNI.SWIGTYPE_p_altos_file; -import libaltosJNI.SWIGTYPE_p_altos_list; +import libaltosJNI.*;  public class AltosDeviceDialog extends JDialog implements ActionListener { -	private static AltosDeviceDialog	dialog; -	private static AltosDevice		value = null; -	private JList				list; -  	public static AltosDevice show (Component frameComp, int product) {  		Frame frame = JOptionPane.getFrameForComponent(frameComp);  		AltosDevice[]	devices;  		devices = AltosUSBDevice.list(product); +		AltosDeviceDialog	dialog; -		if (devices != null && devices.length > 0) { -			value = null; -			dialog = new AltosDeviceDialog(frame, frameComp, -						       devices, -						       devices[0]); - -			dialog.setVisible(true); -			return value; -		} else { -			/* check for missing altos JNI library, which -			 * will put up its own error dialog -			 */ -			if (AltosUI.load_library(frame)) { -				JOptionPane.showMessageDialog(frame, -							      "No AltOS devices available", -							      "No AltOS devices", -							      JOptionPane.ERROR_MESSAGE); -			} -			return null; -		} +		dialog = new AltosDeviceDialog(frame, frameComp, +					       devices); +		dialog.setVisible(true); +		return dialog.getValue(); +	} + +	private AltosDevice	value; +	private JList		list; +	private JButton		cancel_button; +	private JButton		select_button; +	private JButton		manage_bluetooth_button; +	private Frame		frame; + +	private AltosDevice getValue() { +		return value;  	} -	private AltosDeviceDialog (Frame frame, Component location, -				   AltosDevice[] devices, -				   AltosDevice initial) { -		super(frame, "Device Selection", true); +	private AltosDeviceDialog (Frame in_frame, Component location, +				   AltosDevice[] devices) { +		super(in_frame, "Device Selection", true); +		frame = in_frame;  		value = null; -		JButton cancelButton = new JButton("Cancel"); -		cancelButton.addActionListener(this); +		cancel_button = new JButton("Cancel"); +		cancel_button.setActionCommand("cancel"); +		cancel_button.addActionListener(this); + +		manage_bluetooth_button = new JButton("Manage Bluetooth"); +		manage_bluetooth_button.setActionCommand("manage"); +		manage_bluetooth_button.addActionListener(this); -		final JButton selectButton = new JButton("Select"); -		selectButton.setActionCommand("select"); -		selectButton.addActionListener(this); -		getRootPane().setDefaultButton(selectButton); +		select_button = new JButton("Select"); +		select_button.setActionCommand("select"); +		select_button.addActionListener(this); +		if (devices.length == 0) +			select_button.setEnabled(false); +		getRootPane().setDefaultButton(select_button);  		list = new JList(devices) {  				//Subclass JList to workaround bug 4832765, which can cause the @@ -112,7 +108,7 @@ public class AltosDeviceDialog extends JDialog implements ActionListener {  		list.addMouseListener(new MouseAdapter() {  				 public void mouseClicked(MouseEvent e) {  					 if (e.getClickCount() == 2) { -						 selectButton.doClick(); //emulate button click +						 select_button.doClick(); //emulate button click  					 }  				 }  			}); @@ -139,9 +135,11 @@ public class AltosDeviceDialog extends JDialog implements ActionListener {  		buttonPane.setLayout(new BoxLayout(buttonPane, BoxLayout.LINE_AXIS));  		buttonPane.setBorder(BorderFactory.createEmptyBorder(0, 10, 10, 10));  		buttonPane.add(Box.createHorizontalGlue()); -		buttonPane.add(cancelButton); +		buttonPane.add(cancel_button);  		buttonPane.add(Box.createRigidArea(new Dimension(10, 0))); -		buttonPane.add(selectButton); +		buttonPane.add(manage_bluetooth_button); +		buttonPane.add(Box.createRigidArea(new Dimension(10, 0))); +		buttonPane.add(select_button);  		//Put everything together, using the content pane's BorderLayout.  		Container contentPane = getContentPane(); @@ -149,7 +147,8 @@ public class AltosDeviceDialog extends JDialog implements ActionListener {  		contentPane.add(buttonPane, BorderLayout.PAGE_END);  		//Initialize values. -		list.setSelectedValue(initial, true); +		if (devices != null && devices.length > 0) +			list.setSelectedValue(devices[0], true);  		pack();  		setLocationRelativeTo(location);  	} @@ -157,8 +156,12 @@ public class AltosDeviceDialog extends JDialog implements ActionListener {  	//Handle clicks on the Set and Cancel buttons.  	public void actionPerformed(ActionEvent e) {  		if ("select".equals(e.getActionCommand())) -			AltosDeviceDialog.value = (AltosDevice)(list.getSelectedValue()); -		AltosDeviceDialog.dialog.setVisible(false); +			value = (AltosDevice)(list.getSelectedValue()); +		if ("manage".equals(e.getActionCommand())) { +			AltosBTManage.show(frame); +			return; +		} +		setVisible(false);  	}  } diff --git a/altosui/AltosUI.java b/altosui/AltosUI.java index 0fc6583c..4b808c41 100644 --- a/altosui/AltosUI.java +++ b/altosui/AltosUI.java @@ -198,10 +198,6 @@ public class AltosUI extends JFrame {  	}  	private void ConnectToDevice() { -		AltosBTManage	bt_manage; - -		bt_manage = new AltosBTManage(AltosBTDevice.bt_product_any, this); -		bt_manage.list();  		AltosDevice	device = AltosDeviceDialog.show(AltosUI.this,  								Altos.product_basestation); | 
