@Override
	public void update(Observable arg1, Object arg2) {
		if (this.controller != null) {
			LOGGER.log(Level.FINE, "Updating GUI");
			SwingUtilities.invokeLater(new Runnable() {
				@Override
				public void run() {

					LOGGER.log(Level.FINE, "Number of connected clients: "
							+ client.getUsers().size());
					LinkedList<User> clients = client.getUsers();

					LOGGER.log(Level.FINE, "Removing all children");
					treeRoot.removeAllChildren();

					for (User connectedUser : clients) {
						if (!connectedUser.getIP().equals(
								client.getMulticastAddress())) {
							LOGGER.log(Level.FINE, "New user detected: "
									+ connectedUser.getName());
							DefaultMutableTreeNode user = new DefaultMutableTreeNode(
									connectedUser);
							treeRoot.add(user);
						}
					}

					connectedPlayers.updateUI();

					frame.repaint();

					for (int i = 0; i < connectedPlayers.getRowCount(); i++) {
						connectedPlayers.expandRow(i);
					}
				}
			});
		}
	}