void UpdateExplorerItemModelOnUiThread(IExplorerItemModel explorerItemModel, int index) { Execute.OnUIThread(() => { ExplorerItemModels.RemoveAt(index); ExplorerItemModels.Insert(index, explorerItemModel); }); }
/// <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; }); }
/// <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)); }
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); }