/// <summary>
 /// Raises the server tool bar item activated event.
 /// </summary>
 /// <param name="sender">Sender.</param>
 /// <param name="e">E.</param>
 void OnServerToolBarItem_Activated(object sender, EventArgs e)
 {
     if (_serverState == ServerState.Connected)
     {
         _serverState = ServerState.Disconnected;
         _isLoggedIn  = false;
         if (_rootNode != null)
         {
             _rootNode.OnCacheRefresh -= OnCacheRefresh;
         }
         _rootNode                 = null;
         _managementDto            = null;
         ServerToolBarItem.Image   = NSImage.ImageNamed(Constants.ConnectIcon);
         ServerToolBarItem.Label   = Constants.ConnectLabel;
         _serverDto                = null;
         RefreshToolBarItem.Active = false;
         for (int index = 0; index < this.ContainerView.Subviews.Length; index++)
         {
             this.ContainerView.Subviews[index].RemoveFromSuperview();
         }
         LoggedInLabel.StringValue = (NSString)string.Empty;
     }
     else
     {
         ConnectToServer();
     }
 }
        /// <summary>
        /// Sets the infrastructure details view.
        /// </summary>
        /// <param name="item">Item.</param>
        private void SetInfrastructureDetailsView(string nodeName, string siteName, GlobalTopologyNode rootNode)
        {
            var infraController = new InfrastructureController(nodeName, rootNode)
            {
                SiteName = siteName
            };

            controller.DetailViewController = infraController;
            controller.RefreshDetailView();
        }
        /// <summary>
        /// Initialize this instance.
        /// </summary>
        private async void Refresh(bool topologyRefresh)
        {
            InvokeOnMainThread(PreRefresh);
            var success = true;

            try
            {
                if (_rootNode == null)
                {
                    _rootNode = new GlobalTopologyNode(_service, _serverDto, _managementDto);
                    _rootNode.OnCacheRefresh += OnCacheRefresh;
                }
                else
                {
                    _rootNode.RefreshTopology(topologyRefresh);
                    InvokeOnMainThread(_rootNode.UpdateNodes);
                }
            }
            catch (AggregateException exc) {
                InvokeOnMainThread(() => {
                    controller.SetRefreshStatus(false);
                    ServerToolBarItem.Enabled  = true;
                    RefreshToolBarItem.Enabled = true;
                    success = false;
                    if (exc.InnerExceptions.Count > 0)
                    {
                        var msg     = exc.InnerExceptions.Select(x => x.Message).Aggregate((x, y) => x + " , " + y);
                        var message = string.Format(Constants.VMDirConnectFailure, msg);
                        UIErrorHelper.ShowAlert(message, Constants.FailedLoadingTopologyDetails);
                    }
                });
            }
            catch (Exception exc) {
                InvokeOnMainThread(() => {
                    controller.SetRefreshStatus(false);
                    ServerToolBarItem.Enabled  = true;
                    RefreshToolBarItem.Enabled = true;
                    success = false;
                    UIErrorHelper.ShowAlert(exc.Message, Constants.FailedLoadingTopologyDetails);
                });
            }

            if (success)
            {
                InvokeOnMainThread(PostRefresh);
            }
        }
        /// <summary>
        /// Sets the monitor view.
        /// </summary>
        private void SetMonitorView(string nodeName, string siteName, GlobalTopologyNode rootNode)
        {
            var serverDto = new ServerDto {
                Server     = nodeName,
                Upn        = _serverDto.Upn,
                UserName   = _serverDto.UserName,
                Password   = _serverDto.Password,
                DomainName = _serverDto.DomainName
            };
            var monitorController = new MonitorController(_service)
            {
                ServerDto = serverDto,
                RootNode  = rootNode,
                SiteName  = siteName
            };

            controller.DetailViewController = monitorController;
            controller.RefreshDetailView();
        }
 // Call to load from the XIB/NIB file
 public InfrastructureController(string nodeName, GlobalTopologyNode rootNode) : base("Infrastructure", NSBundle.MainBundle)
 {
     _rootNode = rootNode;
     _nodeName = nodeName;
 }