1 package nl.tudelft.goal.visualizer.gui.panels;
2
3 import java.util.Collection;
4
5 import javax.swing.JList;
6 import javax.swing.JPanel;
7 import javax.swing.SwingUtilities;
8
9 import nl.tudelft.goal.ut2004.visualizer.connection.EnvironmentService;
10 import nl.tudelft.goal.ut2004.visualizer.controller.ServerController;
11 import nl.tudelft.goal.ut2004.visualizer.data.EnvironmentData;
12 import nl.tudelft.goal.ut2004.visualizer.util.CollectionEventAdaptor;
13
14 import cz.cuni.amis.utils.collections.ObservableSet;
15
16 public class EnvironmentPanel extends JPanel {
17
18 private JList connected;
19
20 public EnvironmentPanel() {
21
22 EnvironmentData data = ServerController.getInstance()
23 .getEnvironmentData();
24
25 data.getEnvironments().addCollectionListener(
26 new CollectionEventAdaptor<EnvironmentService>() {
27 @Override
28 public void postAddEvent(
29 Collection<EnvironmentService> alreadyAdded,
30 Collection<EnvironmentService> whereWereAdded) {
31 SwingUtilities.invokeLater(new Runnable() {
32 @Override
33 public void run() {
34 updateText();
35 }
36 });
37
38 }
39
40 @Override
41 public void postRemoveEvent(
42 Collection<EnvironmentService> alreadyAdded,
43 Collection<EnvironmentService> whereWereRemoved) {
44 SwingUtilities.invokeLater(new Runnable() {
45 @Override
46 public void run() {
47 updateText();
48 }
49 });
50 }
51 });
52
53 updateText();
54 }
55
56 private void updateText() {
57 EnvironmentData environments = ServerController.getInstance()
58 .getEnvironmentData();
59 ObservableSet<EnvironmentService> clients = environments.getEnvironments();
60
61 removeAll();
62
63 synchronized (clients) {
64 connected = new JList(clients.toArray());
65 }
66
67 add(connected);
68
69 }
70 }