View Javadoc

1   package nl.tudelft.goal.ut2004.visualizer.gui.action;
2   
3   import java.awt.event.ActionEvent;
4   import java.awt.event.ActionListener;
5   import java.rmi.RemoteException;
6   
7   import javax.swing.JComboBox;
8   import javax.swing.JOptionPane;
9   import javax.swing.JSpinner;
10  import javax.swing.JTextField;
11  
12  import nl.tudelft.goal.ut2004.util.Team;
13  import nl.tudelft.goal.ut2004.visualizer.connection.AddBotCommand;
14  import nl.tudelft.goal.ut2004.visualizer.connection.EnvironmentService;
15  import nl.tudelft.goal.ut2004.visualizer.gui.widgets.WaypointBox;
16  import nl.tudelft.goal.ut2004.visualizer.util.SelectableEnvironment;
17  
18  import eis.exceptions.ManagementException;
19  
20  public class AddUnrealGoalBotAction implements ActionListener {
21  
22  	private final JTextField botName;
23  	private final nl.tudelft.goal.ut2004.visualizer.gui.widgets.WaypointBox location;
24  	private final JSpinner skill;
25  	private final JComboBox teamList;
26  	private final JComboBox environmentList;
27  
28  	public AddUnrealGoalBotAction(JTextField botName, WaypointBox location,
29  			JSpinner skill, JComboBox teamList, JComboBox environmentList) {
30  		this.botName = botName;
31  		this.location = location;
32  		this.skill = skill;
33  		this.teamList = teamList;
34  		this.environmentList = environmentList;
35  	}
36  
37  	@Override
38  	public void actionPerformed(ActionEvent e) {
39  
40  		SelectableEnvironment se = (SelectableEnvironment) environmentList
41  				.getSelectedItem();
42  		final EnvironmentService environment = se.getItem();
43  
44  		final AddBotCommand addBot = new AddBotCommand();
45  		addBot.setBotName(botName.getText());
46  		addBot.setSkill((Integer) skill.getValue());
47  		addBot.setTeam((Team) teamList.getSelectedItem());
48  
49  		//TODO: Add thread task to list and add to environment panel.
50  		new Thread(new Runnable() {
51  
52  			@Override
53  			public void run() {
54  				try {
55  					environment.addBot(addBot);
56  				} catch (RemoteException e1) {
57  					e1.printStackTrace();
58  
59  					JOptionPane
60  							.showMessageDialog(
61  									null,
62  									"We could not connect to the Unreal Goal environment. A stack strace has been printed to your console.",
63  									"An Error has Occured",
64  									JOptionPane.ERROR_MESSAGE);
65  
66  				} catch (ManagementException e2) {
67  					e2.printStackTrace();
68  					JOptionPane
69  							.showMessageDialog(
70  									null,
71  									"The environment was unable to add a bot. A stack strace has been printed to your console.",
72  									"An Error has Occured",
73  									JOptionPane.ERROR_MESSAGE);
74  				}
75  			}
76  		}).start();
77  	}
78  
79  }