コード例 #1
0
        private static async Task <SolutionModelBase> BuildCurrentNodeAsync(SolutionModelBase parent, ProjectItem projectItem)
        {
            await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync();

            switch (projectItem.Kind)
            {
            case FileKind:
                return(new FileModel(parent, projectItem));

            case ProjectFolder:
                return(new ProjectFolderModel(parent, projectItem));

            case SubProjectKind:
                if (projectItem.SubProject != null)
                {
                    if (projectItem.SubProject.CodeModel != null)
                    {
                        return(new ProjectModel(parent, projectItem.SubProject));
                    }

                    return(new SolutionFolderModel(parent, projectItem.SubProject));
                }

                return(new FileModel(parent, projectItem));

            case MiscellaneousFilesProjectKind:
                return(null);

            default:
                throw new ArgumentException($"Project item kind {projectItem.Kind} is not supported for item {projectItem.Name}.");
            }
        }
コード例 #2
0
 public SolutionItemViewModel(SolutionModelBase item, SolutionItemViewModel parent)
 {
     this.Item     = item;
     this.Parent   = parent;
     this.Children = new ObservableCollection <SolutionItemViewModel>();
     foreach (var child in item.Children.OrderBy(c => c.SortOrder).ThenBy(c => c.Name))
     {
         this.Children.Add(new SolutionItemViewModel(child, this));
     }
 }
コード例 #3
0
        public static async Task <SolutionModelBase> BuildHierarchyTreeDownAsync(SolutionModelBase parent, ProjectItem projectItem)
        {
            var current = await BuildCurrentNodeAsync(parent, projectItem);

            if (current != null)
            {
                await current.IterateChildrenAsync();
            }

            return(current);
        }
コード例 #4
0
        private static async Task <SolutionModelBase> BuildHierarchyPathUpAsync(ProjectItem projectItem)
        {
            SolutionModelBase parent = null;

            await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync();

            var parentItem = projectItem.Collection.Parent;

            if (parentItem != null)
            {
                parent = await BuildHierarchyPathUpAsync(parentItem);
            }

            return(await BuildCurrentNodeAsync(parent, projectItem));
        }
コード例 #5
0
        private static async Task <SolutionModelBase> BuildCurrentNodeAsync(SolutionModelBase parent, Project project)
        {
            await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync();

            switch (project.Kind)
            {
            case ProjectKind:
                return(new ProjectModel(parent, project));

            case SolutionFolderKind:
                return(new SolutionFolderModel(parent, project));

            case MiscellaneousFilesProjectKind:
                return(null);

            default:
                throw new ArgumentException($"Project kind {project.Kind} is not supported for project {project.Name}.");
            }
        }
コード例 #6
0
        private static async Task <SolutionModelBase> BuildHierarchyPathUpAsync(Project project)
        {
            SolutionModelBase parent = null;

            await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync();

            var parentProject = project.ParentProjectItem;

            if (parentProject != null)
            {
                if (parentProject.Kind == SubProjectKind)
                {
                    parent = await BuildHierarchyPathUpAsync(parentProject.Collection.Parent);
                }
                else
                {
                    parent = await BuildHierarchyPathUpAsync(parentProject);
                }
            }

            return(await BuildCurrentNodeAsync(parent, project));
        }