private void LoadAccounts() { var nodes = _accountDirectory.GetRootNodes(); var root = new List <TreeNodeViewModel>(); foreach (var node in nodes) { var vm = node switch { CosmosAccount account => (TreeNodeViewModel)_viewModelFactory.CreateAccountNode( account, _accountContextFactory.Create(account), null), CosmosAccountFolder folder => (TreeNodeViewModel)_viewModelFactory.CreateAccountFolderNode(folder, null), _ => throw new Exception("Invalid node type") }; root.Add(vm); } foreach (var c in root.OrderByDescending(n => n is AccountFolderNodeViewModel) .ThenBy(c => c.Text)) { RootNodes.Add(c); } }
private void LoadAccounts() { var nodes = _accountDirectory.GetRootNodes(); foreach (var node in nodes) { var vm = node switch { CosmosAccount account => (TreeNodeViewModel)_viewModelFactory.CreateAccountNode( account, _accountContextFactory.Create(account), null), CosmosAccountFolder folder => (TreeNodeViewModel)_viewModelFactory.CreateAccountFolderNode(folder, null), _ => throw new Exception("Invalid node type") }; RootNodes.Add(vm); } }
public AccountFolderNodeViewModel( CosmosAccountFolder folder, AccountFolderNodeViewModel?parent, AccountCommands accountCommands, IAccountContextFactory accountContextFactory, IAccountDirectory accountDirectory, IViewModelFactory viewModelFactory) { _folder = folder; Parent = parent; _accountCommands = accountCommands; _accountContextFactory = accountContextFactory; _accountDirectory = accountDirectory; _viewModelFactory = viewModelFactory; Commands = new[] { new CommandViewModel("Add account", _accountCommands.AddCommand, this) }; }
protected override Task <IEnumerable <TreeNodeViewModel> > LoadChildrenAsync() { var childNodes = _accountDirectory.GetChildNodes(_folder.FullPath); var result = new List <TreeNodeViewModel>(); foreach (var node in childNodes) { var childVM = node switch { CosmosAccount account => (TreeNodeViewModel)_viewModelFactory.CreateAccountNode( account, _accountContextFactory.Create(account), this), CosmosAccountFolder folder => (TreeNodeViewModel)_viewModelFactory.CreateAccountFolderNode(folder, this), _ => throw new Exception("Invalid node type") }; result.Add(childVM); } return(Task.FromResult <IEnumerable <TreeNodeViewModel> >(result)); }