summaryrefslogtreecommitdiff
path: root/src/tesseract/objects/remote/RemoteObjectMenu.java
blob: 3d4435e6ff5efe6bb3b34f3ade8e99d6e1ba2858 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
package tesseract.objects.remote;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.util.ArrayList;

import javax.swing.JCheckBoxMenuItem;
import javax.swing.JMenu;

import tesseract.World;

/**
 * Remote object menu.
 * 
 * @author jesse
 */
public class RemoteObjectMenu extends JMenu {
	private ArrayList<RemoteObject> myControlledObjects;
	
	private World myWorld;
	
	public RemoteObjectMenu(final World theWorld) {
		super("RC Objects");
		
		myWorld = theWorld;
		myControlledObjects = new ArrayList<RemoteObject>();
		
		// Objects that can be added
		add(new TankMenuItem(this));
		
		// Separator
		addSeparator();
		
		// Living Objects here...
	}
	
	public void addObject(final RemoteObject theObject) {
		JCheckBoxMenuItem item = new JCheckBoxMenuItem();
		
		item.setText(theObject.getName());
		
		item.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				if (((JCheckBoxMenuItem) e.getSource()).isSelected()) {
					myControlledObjects.add(theObject);
					
				} else {
					myControlledObjects.remove(theObject);
				}
			}
		});
		
		myWorld.addObject(theObject);
		myControlledObjects.add(theObject);
		item.setSelected(true);
		add(item);
	}
	
	public void sendKeyToObjects(final KeyEvent e) {
		for (RemoteObject o : myControlledObjects) {
			o.sendKeyEvent(e);
		}
	}
}