// In AwakeFromNib a lot of setup is done for the server. The first sections cover the setup for the list
        // of chats and the list of clients. It creates a new DataSource that holds all necessary information
        // for the list (holding a list of items and providing the amount of rows). After that, a delegate is
        // instantiated, containing some logic behind the lists.
        // After this, a message is added that no messages are present yet. The same is done for the clients.
        // The default buffer size value is also inserted into the input field.
        public override void AwakeFromNib()
        {
            base.AwakeFromNib();

            _chatListDataSource = new ChatListDataSource();
            ChatList.DataSource = _chatListDataSource;
            ChatList.Delegate   = new ChatListDelegate(_chatListDataSource);

            _clientListDataSource = new ClientListDataSource();
            ClientList.DataSource = _clientListDataSource;
            ClientList.Delegate   = new ClientListDelegate(_clientListDataSource);

            var noMessages = new Message(
                MessageType.Info,
                "System",
                "No messages yet",
                DateTime.Now);

            var noClients = "No clients yet";

            UI.AddMessage(noMessages, _chatListDataSource, ChatList);
            AddClient(noClients);

            EnteredBufferSize.StringValue  = "1024";
            UpdateBufferSizeButton.Enabled = false;
        }
 public ClientListDelegate(ClientListDataSource dataSource)
 {
     _dataSource = dataSource;
 }