void UpdateExplorerItemModelOnUiThread(IExplorerItemModel explorerItemModel, int index)
 {
     Execute.OnUIThread(() =>
     {
         ExplorerItemModels.RemoveAt(index);
         ExplorerItemModels.Insert(index, explorerItemModel);
     });
 }
Exemplo n.º 2
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;
            });
        }
Exemplo n.º 3
0
 /// <summary>
 /// perform some kind of action on all children of a node
 /// </summary>
 /// <param name="action"></param>
 protected void Iterate(Action <IExplorerItemModel> action)
 {
     if (ExplorerItemModels != null && action != null)
     {
         var explorerItemModels = ExplorerItemModels.ToList();
         explorerItemModels.ForEach(model =>
         {
             if (model != null)
             {
                 Iterate(action, model);
             }
         });
     }
 }
 private void LoadItemsToTree(Guid environmentId, IExplorerItemModel explorerItemModel, int indexToReplace)
 {
     if (explorerItemModel != null)
     {
         explorerItemModel.EnvironmentId = environmentId;
         explorerItemModel.IsConnected   = true;
         if (explorerItemModel.Children != null)
         {
             ExplorerItemModelSetup(explorerItemModel, environmentId);
         }
         explorerItemModel.IsRefreshing = ExplorerItemModels[indexToReplace].IsRefreshing;
         ExplorerItemModels.RemoveAt(indexToReplace);
         ExplorerItemModels.Insert(indexToReplace, explorerItemModel);
     }
 }
        private void LoadItemsToTree(Guid environmentId, IExplorerItemModel explorerItemModel)
        {
            if (explorerItemModel != null)
            {
                var otherServers = ExplorerItemModels.Where(i => i.ResourceType == ResourceType.Server).ToList();
                otherServers.ForEach(i =>
                {
                    i.IsExplorerExpanded = false;
                    i.IsExplorerSelected = false;
                });

                explorerItemModel.IsExplorerSelected = explorerItemModel.IsExplorerExpanded = explorerItemModel.ResourceType == ResourceType.Server;

                explorerItemModel.EnvironmentId = environmentId;
                explorerItemModel.IsConnected   = true;
                if (explorerItemModel.Children != null)
                {
                    ExplorerItemModelSetup(explorerItemModel, environmentId);
                }
                if (ExplorerItemModels.Any(a => a.EnvironmentId == environmentId))
                {
                    var index = ExplorerItemModels.IndexOf(ExplorerItemModels.FirstOrDefault(a => a.EnvironmentId == environmentId));
                    if (index >= 0)
                    {
                        explorerItemModel.IsRefreshing = ExplorerItemModels[index].IsRefreshing;
                        UpdateExplorerItemModelOnUiThread(explorerItemModel, index);
                    }
                }
                else
                {
                    var index = ExplorerItemModels.IndexOf(ExplorerItemModels.FirstOrDefault(a => a.EnvironmentId == environmentId));
                    if (index >= 0)
                    {
                        explorerItemModel.IsRefreshing = ExplorerItemModels[index].IsRefreshing;
                        UpdateExplorerItemModelOnUiThread(explorerItemModel, index);
                    }
                    else
                    {
                        Execute.OnUIThread(() =>
                        {
                            ExplorerItemModels.Add(explorerItemModel);
                        });
                    }
                }
            }
        }
        public IExplorerItemModel FindItem(Func <IExplorerItemModel, bool> searchCriteria)
        {
            var explorerItemModels = ExplorerItemModels.SelectMany(explorerItemModel => explorerItemModel.Descendants()).ToList();

            return(searchCriteria == null ? null : explorerItemModels.FirstOrDefault(searchCriteria));
        }
Exemplo n.º 7
0
        public IExplorerItemModel FindChild(IContextualResourceModel resource)
        {
            var explorerItemModels = ExplorerItemModels.SelectMany(explorerItemModel => explorerItemModel.Descendants()).ToList();

            return(resource != null?explorerItemModels.FirstOrDefault(model => model.ResourceId == resource.ID && model.EnvironmentId == resource.Environment.ID) : null);
        }