View Javadoc

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  }