View Javadoc

1   package nl.tudelft.goal.ut2004.visualizer.connection.client;
2   
3   import java.rmi.RemoteException;
4   
5   import nl.tudelft.goal.ut2004.visualizer.connection.EnvironmentService;
6   import nl.tudelft.goal.ut2004.visualizer.connection.VisualizerService;
7   
8   import cz.cuni.amis.utils.flag.Flag;
9   
10  /**
11   * Wrapper class that represents the {@link VisualizerService} to the
12   * {@link UnrealGoalEnvironment}.
13   * 
14   * @author M.P. Korstanje
15   * 
16   */
17  public class RemoteVisualizer {
18  
19  	private final Flag<Boolean> connectedFlag = new Flag<Boolean>();
20  	private VisualizerService visualizer;
21  	private boolean connected;
22  	private EnvironmentService environment;
23  
24  	protected void setVisualizerService(VisualizerService visualizer) {
25  		this.visualizer = visualizer;
26  		setConnected(true);
27  	}
28  
29  	public void setEnvironment(EnvironmentService client) {
30  		try {
31  			this.environment = client;
32  			this.visualizer.registerEnvironment(client);
33  		} catch (RemoteException e) {
34  			// Connection failed? Update status.
35  			disconnect();
36  			e.printStackTrace();
37  		}
38  	}
39  
40  	private void setConnected(boolean connected) {
41  		this.connected = connected;
42  		connectedFlag.setFlag(connected);
43  	}
44  
45  	public Flag<Boolean> getConnectedFlag() {
46  		return connectedFlag;
47  	}
48  
49  	public void disconnect() {
50  		try {
51  			if (visualizer != null)
52  				visualizer.unregisterEnvironment(environment);
53  		} catch (RemoteException e) {
54  			// Ignore, we are disconnected now.
55  			// e.printStackTrace();
56  		}
57  
58  		environment = null;
59  
60  		setConnected(false);
61  	}
62  
63  }