From 02f9894a0ff7950076da6e227356c8f79fb10c98 Mon Sep 17 00:00:00 2001 From: Jesse Morgan Date: Fri, 18 Mar 2011 05:06:37 +0000 Subject: Added a remote address menu. --- src/tesseract/objects/remote/RemoteObjectMenu.java | 55 ++++++++++++++++++++-- 1 file changed, 51 insertions(+), 4 deletions(-) (limited to 'src') 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 addrList = new ArrayList(); + + try { + Enumeration interfaces = NetworkInterface.getNetworkInterfaces(); + + ButtonGroup group = new ButtonGroup(); + + while (interfaces.hasMoreElements()) { + NetworkInterface i = interfaces.nextElement(); + + try { + if (i.isUp()) { + // Get addresses + Enumeration 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); } } } -- cgit v1.2.3