public ServerMasterUi()
        {
            InitializeComponent();

            List <IServer> servers = ServerMaster.GetServers();

            if (servers == null &&
                ServerMaster.StartProgram == ServerStartProgramm.IsTester)
            { // если это первый вызов сервера во время включённого тестера
                ServerMaster.CreateServer(ServerType.Tester, false);
                servers = ServerMaster.GetServers();
            }

            if (ServerMaster.StartProgram == ServerStartProgramm.IsTester)
            { // если это первый вызов сервера во время включённого тестера
                servers = ServerMaster.GetServers();
                Close();
                servers[0].ShowDialog();
            }

            CreateSourceGrid();
            RePaintSourceGrid();

            CheckBoxServerAutoOpen.IsChecked = ServerMaster.NeadToConnectAuto;
            CheckBoxServerAutoOpen.Click    += CheckBoxServerAutoOpen_Click;
            CheckBoxServerAutoOpen.ToolTip   = "При включении, мастер серверов будет пытаться автоматически развернуть " +
                                               "\r" +
                                               "сервера которые у него запрашивают роботы(панели). По одному разу на каждый сервер. ";

            for (int i = 0; servers != null && i < servers.Count; i++)
            {
                servers[i].ConnectStatusChangeEvent += ServerStatusChangeEvent;
            }
        }
        /// <summary>
        /// событие двойного клика на таблицу источников
        /// </summary>
        void _gridSources_DoubleClick(object sender, EventArgs e)
        {
            if (_gridSources.CurrentCell.RowIndex <= -1)
            {
                return;
            }

            ServerType type;

            Enum.TryParse(_gridSources.SelectedRows[0].Cells[0].Value.ToString(), out type);

            List <IServer> servers = ServerMaster.GetServers();

            if (servers == null ||
                servers.Find(serv => serv.ServerType == type) == null)
            {
                // нужно впервые создать сервер
                ServerMaster.CreateServer(type, true);

                servers = ServerMaster.GetServers();

                if (servers == null)
                { // чтото пошло не так
                    return;
                }
                else
                { // подписываемся на событие изменения статуса
                    IServer myServ = servers.Find(serv => serv.ServerType == type);

                    if (myServ != null)
                    {
                        myServ.ConnectStatusChangeEvent += ServerStatusChangeEvent;
                    }
                }
            }

            IServer myServer = servers.Find(serv => serv.ServerType == type);

            if (myServer == null)
            {
                return;
            }

            Close();

            myServer.ShowDialog();
        }