Example #1
0
 public ExtensionsTreeViewModelState(ExtensionsTreeViewModel treeViewModel)
 {
     foreach (var r in treeViewModel.Roots)
     {
         RegisterItem(r);
     }
 }
Example #2
0
        public void PopulateViewModel(ExtensionsTreeViewModel treeViewModel)
        {
            var extensions = _ecs.Extensions;

            var path = treeViewModel.SolutionPath;

            if (File.Exists(path))
            {
                path = Path.GetDirectoryName(path);
            }

            var state = new ExtensionsTreeViewModelState(treeViewModel);

            var roots = new ObservableCollection <TreeItemViewModel>();

            var projectsGroup = extensions.GroupBy(p => p.Project);
            var hierarchy     = new Stack <string>();

            foreach (var p in projectsGroup)
            {
                hierarchy.Push(Path.GetFileName(p.Key));

                var pItem = new TreeItemViewModel()
                {
                    Name       = hierarchy.Peek(),
                    IsExpanded = state.IsExpanded(hierarchy, projectsGroup.Count() == 1)
                };

                var classesGroup = p.GroupBy(c => c.Class);
                foreach (var c in classesGroup)
                {
                    hierarchy.Push(c.Key);

                    var cItem = new TreeItemViewModel()
                    {
                        Name       = hierarchy.Peek(),
                        IsExpanded = state.IsExpanded(hierarchy, classesGroup.Count() == 1)
                    };

                    foreach (var m in c)
                    {
                        hierarchy.Push(m.DisplayMethod);

                        var mItem = new TreeItemViewModel()
                        {
                            Name                    = hierarchy.Peek(),
                            ImageSource             = _extensionIconResolver.Resolve(m.Icon),
                            MouseDoubleClickCommand = _extensionMethodInvocationCommandViewModelFactory?.Invoke(m)
                        };
                        cItem.Children.Add(mItem);
                        hierarchy.Pop();
                    }

                    pItem.Children.Add(cItem);
                    hierarchy.Pop();
                }

                roots.Add(pItem);
                hierarchy.Pop();
            }

            treeViewModel.Roots = roots;
        }