diff options
author | Jesse Morgan <jesse@jesterpm.net> | 2011-03-18 05:06:37 +0000 |
---|---|---|
committer | Jesse Morgan <jesse@jesterpm.net> | 2011-03-18 05:06:37 +0000 |
commit | 02f9894a0ff7950076da6e227356c8f79fb10c98 (patch) | |
tree | afa4bcc4daf0f95d0473296a6545f257d9429c66 | |
parent | be276b5fa3ae85a5769d3a9fcb6397bc9aabb14e (diff) |
Added a remote address menu.
-rw-r--r-- | src/tesseract/objects/remote/RemoteObjectMenu.java | 55 |
1 files changed, 51 insertions, 4 deletions
diff --git a/src/tesseract/objects/remote/RemoteObjectMenu.java b/src/tesseract/objects/remote/RemoteObjectMenu.java index 3e3fd46..f8a7b59 100644 --- a/src/tesseract/objects/remote/RemoteObjectMenu.java +++ b/src/tesseract/objects/remote/RemoteObjectMenu.java @@ -5,13 +5,19 @@ import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.net.InetAddress; import java.net.InetSocketAddress; +import java.net.NetworkInterface; import java.net.SocketAddress; +import java.net.SocketException; import java.net.UnknownHostException; import java.util.ArrayList; +import java.util.Enumeration; +import java.util.List; +import javax.swing.ButtonGroup; import javax.swing.JCheckBoxMenuItem; import javax.swing.JMenu; import javax.swing.JPopupMenu; +import javax.swing.JRadioButtonMenuItem; import tesseract.World; @@ -45,6 +51,11 @@ public class RemoteObjectMenu extends JMenu { System.err.println(e); } + // Home submenu + JMenu home = new JMenu("Home Address"); + populateHomeMenu(home); + add(home); + // Objects that can be added add(new TankMenuItem(this)); add(new BlimpMenuItem(this)); @@ -55,6 +66,45 @@ public class RemoteObjectMenu extends JMenu { // Living Objects here... } + private void populateHomeMenu(JMenu home) { + List<InetAddress> addrList = new ArrayList<InetAddress>(); + + try { + Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces(); + + ButtonGroup group = new ButtonGroup(); + + while (interfaces.hasMoreElements()) { + NetworkInterface i = interfaces.nextElement(); + + try { + if (i.isUp()) { + // Get addresses + Enumeration<InetAddress> ips = i.getInetAddresses(); + while (ips.hasMoreElements()) { + final InetAddress ip = ips.nextElement(); + + JRadioButtonMenuItem item = new JRadioButtonMenuItem(ip.toString()); + item.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + myHome = new InetSocketAddress(ip, myCommunicator.getPort()); + } + }); + + home.add(item); + group.add(item); + } + } + } catch (SocketException e) { + // I suppose we'll ignore this address. + } + } + + } catch (SocketException e) { + // I suppose we'll ignore all addresses? + } + } + public void addObject(final RemoteObject theObject) { JCheckBoxMenuItem item = new JCheckBoxMenuItem(); @@ -80,10 +130,7 @@ public class RemoteObjectMenu extends JMenu { public void sendKeyToObjects(final KeyEvent e) { for (RemoteObject o : myControlledObjects) { - if (!myCommunicator.sendKeyToObject(o.getId(), e)) { - //myControlledObjects.remove(o); - // TODO : Remove from menu. - } + myCommunicator.sendKeyToObject(o.getId(), e); } } } |