diff options
Diffstat (limited to 'ao-tools/altosui/AltosUI.java')
| -rw-r--r-- | ao-tools/altosui/AltosUI.java | 209 | 
1 files changed, 209 insertions, 0 deletions
| diff --git a/ao-tools/altosui/AltosUI.java b/ao-tools/altosui/AltosUI.java new file mode 100644 index 00000000..b731725c --- /dev/null +++ b/ao-tools/altosui/AltosUI.java @@ -0,0 +1,209 @@ +/* + * Copyright © 2010 Keith Packard <keithp@keithp.com> + * + * 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; version 2 of the License. + * + * 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 altosui; + +import java.awt.Color; +import java.awt.Dimension; +import java.awt.Font; +import java.awt.Toolkit; +import java.awt.Window; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.KeyEvent; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; +import javax.swing.JFrame; +import javax.swing.JMenu; +import javax.swing.JMenuBar; +import javax.swing.JMenuItem; +import javax.swing.JRadioButtonMenuItem; +import javax.swing.JSplitPane; +import javax.swing.JTable; +import javax.swing.KeyStroke; +import javax.swing.table.TableCellEditor; +import javax.swing.table.DefaultTableCellRenderer; +import altosui.AltosSerial; +import altosui.AltosSerialMonitor; + +class AltosUIMonitor implements AltosSerialMonitor { +	public void data(String data) { +		System.out.println(data); +	} +} + +public class AltosUI extends JFrame { +	private int channel = -1; + +	private JTable flightStatus; +	private JTable flightInfo; +	private AltosSerial serialLine; + +	public AltosUI() { + +		String[] statusNames = { "Height (m)", "State", "RSSI (dBm)", "Speed (m/s)" }; +		Object[][] statusData = { { "0", "pad", "-50", "0" } }; + +		flightStatus = new JTable(statusData, statusNames); + +		flightStatus.setShowGrid(false); + +		this.add(flightStatus); + +		setTitle("AltOS"); + +		createMenu(); + +		serialLine = new AltosSerial("/dev/ttyACM0"); +		serialLine.monitor(new AltosUIMonitor()); +		serialLine.start(); +		Dimension size = Toolkit.getDefaultToolkit().getScreenSize(); +		size.width = size.width*9/10; +		size.height = size.height*9/10; +		this.setSize(size); +		this.validate(); +		setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); +		addWindowListener(new WindowAdapter() { +			@Override +			public void windowClosing(WindowEvent e) { +				System.exit(0); +			} +		}); +	} + +	private void createMenu() { +		JMenuBar menubar = new JMenuBar(); +		JMenu menu; +		JMenuItem item; +		JRadioButtonMenuItem radioitem; + +		// File menu +		{ +			menu = new JMenu("File"); +			menu.setMnemonic(KeyEvent.VK_F); +			menubar.add(menu); + +			item = new JMenuItem("Quit",KeyEvent.VK_Q); +			item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q, +								   ActionEvent.CTRL_MASK)); +			item.addActionListener(new ActionListener() { +					public void actionPerformed(ActionEvent e) { +						System.exit(0); +					} +				}); +			menu.add(item); +		} + +		// Device menu +		{ +			menu = new JMenu("Device"); +			menu.setMnemonic(KeyEvent.VK_D); +			menubar.add(menu); + +			item = new JMenuItem("Connect to Device",KeyEvent.VK_C); +			item.addActionListener(new ActionListener() { +					public void actionPerformed(ActionEvent e) { +					} +				}); +			menu.add(item); + +			item = new JMenuItem("Disconnect from Device",KeyEvent.VK_D); +			item.addActionListener(new ActionListener() { +					public void actionPerformed(ActionEvent e) { +					} +				}); +			menu.add(item); + +			menu.addSeparator(); + +			item = new JMenuItem("Save Flight Data",KeyEvent.VK_S); +			item.addActionListener(new ActionListener() { +					public void actionPerformed(ActionEvent e) { +					} +				}); +			menu.add(item); + +			item = new JMenuItem("Replay",KeyEvent.VK_R); +			item.addActionListener(new ActionListener() { +					public void actionPerformed(ActionEvent e) { +					} +				}); +			menu.add(item); +		} +		// Log menu +		{ +			menu = new JMenu("Log"); +			menu.setMnemonic(KeyEvent.VK_L); +			menubar.add(menu); + +			item = new JMenuItem("New Log",KeyEvent.VK_N); +			item.addActionListener(new ActionListener() { +					public void actionPerformed(ActionEvent e) { +					} +				}); +			menu.add(item); + +			item = new JMenuItem("Configure Log",KeyEvent.VK_C); +			item.addActionListener(new ActionListener() { +					public void actionPerformed(ActionEvent e) { +					} +				}); +			menu.add(item); +		} +		// Voice menu +		{ +			menu = new JMenu("Voice", true); +			menu.setMnemonic(KeyEvent.VK_V); +			menubar.add(menu); + +			radioitem = new JRadioButtonMenuItem("Enable Voice"); +			radioitem.addActionListener(new ActionListener() { +					public void actionPerformed(ActionEvent e) { +					} +				}); +			menu.add(radioitem); +		} + +		// Channel menu +		{ +			menu = new JMenu("Channel", true); +			menu.setMnemonic(KeyEvent.VK_C); +			menubar.add(menu); + +			for (int c = 0; c <= 9; c++) { +				radioitem = new JRadioButtonMenuItem("Channel " + c + " (" + +								(434.550 + c * .1) + ")", +								c == 0); +				radioitem.addActionListener(new ActionListener() { +						public void actionPerformed(ActionEvent e) { +						} +					}); +				menu.add(radioitem); +			} +		} + +		this.setJMenuBar(menubar); + +	} +	public static void main(final String[] args) { +		AltosUI altosui = new AltosUI(); +		altosui.setVisible(true); +	} +}
\ No newline at end of file | 
