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);
            }
        }
Exemplo n.º 2
0
        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));
        }