Example #1
0
        /// <summary>
        ///     Updates the worksapces for all environments
        /// </summary>
        public void UpdateWorkspaces(IConnectControlSingleton connectControlSingleton)
        {
            if (CircularProgressBarVisibility == Visibility.Visible)
            {
                return;
            }

            CircularProgressBarVisibility = Visibility.Visible;
            RefreshButtonVisibility       = Visibility.Hidden;

            var tmpSelected = SelectedItem;
            List <IExplorerItemModel> expandedList = new List <IExplorerItemModel>();
            List <Task> loadTasks    = new List <Task>();
            List <Guid> environments = new List <Guid>();

            foreach (var environment in Environments.Where(c => c.IsConnected || c.IsLocalHost))
            {
                var explorerItemModel = ExplorerItemModels.FirstOrDefault(c => c.EnvironmentId == environment.ID);
                if (explorerItemModel != null)
                {
                    expandedList = explorerItemModel.Descendants().Where(c => c.IsExplorerExpanded).ToList();
                }

                if (environment != null)
                {
                    environments.Add(environment.ID);
                    connectControlSingleton.SetConnectionState(environment.ID, ConnectionEnumerations.ConnectedState.Busy);
                    if (!environment.IsConnected)
                    {
                        var loadResourcesAsync = LoadResourcesAsync(environment, expandedList, tmpSelected);

                        if (loadResourcesAsync != null)
                        {
                            loadTasks.Add(loadResourcesAsync);
                        }
                    }
                    else
                    {
                        var taskref = TaskRefresh(connectControlSingleton, environment);
                        loadTasks.Add(taskref);
                    }
                }
            }

            var task = Task.WhenAll(loadTasks);

            task.ContinueWith(d =>
            {
                environments.ForEach(id => connectControlSingleton.SetConnectionState(id, ConnectionEnumerations.ConnectedState.Connected));
                CircularProgressBarVisibility = Visibility.Hidden;
                RefreshButtonVisibility       = Visibility.Visible;
            });
        }