public ServerInfoPopOverController(VMCertStoreServerNode node) : base("ServerInfoPopOver", NSBundle.MainBundle)
 {
     this.serverNode = node;
     if (serverNode.IsDetailsLoaded == false)
     {
         serverNode.FillServerInfo();
     }
 }
        public async void ConnectToServer(string server)
        {
            var serverDTO = VMCertStoreServerDTO.CreateInstance();

            Servernode = new VMCertStoreServerNode(serverDTO);
            ProgressWindowController pwc = new ProgressWindowController();
            IntPtr session = new IntPtr(0);

            string[] servers          = VMCertStoreSnapInEnvironment.Instance.LocalData.GetServerArray();
            LoginWindowController lwc = new LoginWindowController(servers);

            NSApplication.SharedApplication.BeginSheet(lwc.Window, this.Window, () =>
            {
            });
            nint result = NSApplication.SharedApplication.RunModalForWindow(lwc.Window);

            try
            {
                if (result == (nint)VMIdentityConstants.DIALOGOK)
                {
                    Servernode.ServerDTO.Server     = lwc.Server;
                    Servernode.ServerDTO.DomainName = lwc.DomainName;
                    Servernode.ServerDTO.UserName   = lwc.UserName;
                    Servernode.ServerDTO.Password   = lwc.Password;
                    NSApplication.SharedApplication.BeginSheet(pwc.Window, this.Window as NSWindow, () =>
                    {
                    });
                    session = NSApplication.SharedApplication.BeginModalSession(pwc.Window);
                    await Servernode.ServerDTO.LogintoServer(lwc.UserName, lwc.Password, lwc.DomainName);

                    if (Servernode.ServerDTO.IsLoggedIn == true)
                    {
                        InitialiseViews();
                        NSNotificationCenter.DefaultCenter.PostNotificationName("ReloadOutlineView", this);
                        Task.Run(() => Servernode.FillServerInfo());
                    }
                    else
                    {
                        UIErrorHelper.ShowAlert("Please check the login details or the user permissions.", "Unable to Login");
                    }
                }
            }
            catch (Exception e)
            {
                UIErrorHelper.ShowAlert("", e.Message);
            }
            finally
            {
                if (pwc.ProgressBar != null)
                {
                    pwc.ProgressBar.StopAnimation(pwc.Window);
                    pwc.Window.Close();
                    NSApplication.SharedApplication.EndModalSession(session);
                }
                Window.EndSheet(lwc.Window);
                lwc.Dispose();
            }
        }