void UpdateTree(SolutionBuilder sln, SolutionFileView v, TreeNode _Solution, TreeNode _Project) { _Solution.Text = "Solution '" + sln.Name + "' (1 project)"; _Solution.IsExpanded = true; _Solution.WithIcon(() => new SolutionTwentyTen()); _Project.Text = sln.Name; _Project.IsExpanded = true; // Or my project? var PropertiesFolderName = "Properties"; if (sln.Language == KnownLanguages.VisualBasic) { PropertiesFolderName = "My Project"; } var _Properties = _Project.Add(PropertiesFolderName); _Properties.IsExpanded = true; _Properties.WithIcon(() => new SolutionProjectProperties()); var _References = _Project.Add("References"); _References.IsExpanded = false; _References.WithIcon(() => new References()); RenderReferences(sln, _References); var FolderLookup = new Dictionary <string, TreeNode>(); var FileLookup = new Dictionary <SolutionFile, TreeNode>(); FolderLookup[_Properties.Text] = _Properties; var files = sln.ToFiles(); files.WithEach( f => { var ProjectInclude = f.Name.SkipUntilIfAny("/").SkipUntilIfAny("/"); var Folder = ProjectInclude.TakeUntilLastOrEmpty("/"); if (!string.IsNullOrEmpty(Folder)) { if (!FolderLookup.ContainsKey(Folder)) { var _Folder = _Project.Add(Folder); FolderLookup[Folder] = _Folder; _Folder.IsExpanded = true; } } } ); files.WithEach( (SolutionFile f) => { var n = default(TreeNode); var Extension = "." + f.Name.SkipUntilLastIfAny("."); if (Extension == ".sln") { n = _Solution; } else if (Extension == sln.Language.ProjectFileExtension) { n = _Project; n.Element.TextArea.style.fontWeight = "bold"; } else { var ProjectInclude = f.Name.SkipUntilIfAny("/").SkipUntilIfAny("/"); var Folder = ProjectInclude.TakeUntilLastOrEmpty("/"); var Parent = _Project; if (!string.IsNullOrEmpty(Folder)) { Parent = FolderLookup[Folder]; } if (sln.Language.SupportsDependentUpon()) { if (f.DependentUpon != null) { Parent = FileLookup[f.DependentUpon]; Parent.IsExpanded = false; } } n = Parent.Add(ProjectInclude.SkipUntilLastIfAny("/")); FileLookup[f] = n; } if (Extension == KnownLanguages.VisualCSharp.CodeFileExtension) { n.WithIcon(() => new VisualCSharpCode()); } else if (Extension == KnownLanguages.VisualCSharp.ProjectFileExtension) { n.WithIcon(() => new VisualCSharpProject()); } else if (Extension == KnownLanguages.VisualBasic.CodeFileExtension) { n.WithIcon(() => new VisualBasicCode()); } else if (Extension == KnownLanguages.VisualBasic.ProjectFileExtension) { n.WithIcon(() => new VisualBasicProject()); } else if (Extension == KnownLanguages.VisualFSharp.CodeFileExtension) { n.WithIcon(() => new VisualFSharpCode()); } else if (Extension == KnownLanguages.VisualFSharp.ProjectFileExtension) { n.WithIcon(() => new VisualFSharpProject()); } else if (Extension == ".htm") { n.WithIcon(() => new HTMLDocument()); } else if (Extension == ".config") { n.WithIcon(() => new ScriptCoreLib.Ultra.Components.HTML.Images.FromAssets.HTMLDocument()); } else if (Extension == ".css") { n.WithIcon(() => new StyleSheetFile()); } if (f.ContextType != null) { if (f.ContextType.BaseType != null) { if (f.ContextType.BaseType is KnownStockTypes.System.Windows.Forms.UserControl) { n.WithIcon(() => new SolutionProjectFormsControl()); } if (f.ContextType.BaseType is KnownStockTypes.System.ComponentModel.Component) { n.WithIcon(() => new SolutionProjectComponentImage()); } } } if (sln.Language.SupportsDependentUpon()) { if (f.DependentUpon != null) { n.WithIcon(() => new SolutionProjectDependentUpon()); } } n.IsExpanded = true; n.Click += delegate { v.File = f; }; // somebody refreshed the solution. if (v.File == null) { if (f.Name.SkipUntilLastIfAny("/").TakeUntilLastIfAny(".") == "Application") { v.File = f; } } else { // we may not care about the file extensions, will we see a glitch? :) if (v.File.Name.SkipUntilLastIfAny("/").TakeUntilLastIfAny(".") == f.Name.SkipUntilLastIfAny("/").TakeUntilLastIfAny(".")) { v.File = f; } } } ); if (this.Save != null) { this.Save.Clear(); this.Save.FileName = sln.Name + ".sln.zip"; files.WithEach(f => this.Save.Add(f.Name, f.Content)); } }
private static void UpdateTree(SolutionBuilder sln, SolutionFileView v, TreeNode _Solution, TreeNode _Project) { _Solution.Text = "Solution '" + sln.Name + "' (1 project)"; _Solution.IsExpanded = true; _Solution.WithIcon(() => new SolutionTwentyTen()); _Project.Text = sln.Name; _Project.IsExpanded = true; // Or my project? var _Properties = _Project.Add("Properties"); _Properties.IsExpanded = true; _Properties.WithIcon(() => new SolutionProjectProperties()); var _References = _Project.Add("References"); _References.IsExpanded = false; _References.WithIcon(() => new References()); foreach (var item in sln.References.ToArray()) { var _Reference = _References.Add(item.Attribute("Include").Value.TakeUntilIfAny(",")); _Reference.IsExpanded = true; _Reference.WithIcon(() => new Assembly()); } var FolderLookup = new Dictionary <string, TreeNode>(); var FileLookup = new Dictionary <SolutionFile, TreeNode>(); FolderLookup[_Properties.Text] = _Properties; var files = sln.ToFiles(); files.WithEach( f => { var ProjectInclude = f.Name.SkipUntilIfAny("/").SkipUntilIfAny("/"); var Folder = ProjectInclude.TakeUntilLastOrEmpty("/"); if (!string.IsNullOrEmpty(Folder)) { if (!FolderLookup.ContainsKey(Folder)) { FolderLookup[Folder] = _Project.Add(Folder); } } } ); files.WithEach( (SolutionFile f) => { var n = default(TreeNode); var Extension = "." + f.Name.SkipUntilLastIfAny("."); if (Extension == ".sln") { n = _Solution; } else if (Extension == sln.Language.ProjectFileExtension) { n = _Project; n.Element.TextArea.style.fontWeight = "bold"; } else { var ProjectInclude = f.Name.SkipUntilIfAny("/").SkipUntilIfAny("/"); var Folder = ProjectInclude.TakeUntilLastOrEmpty("/"); var Parent = _Project; if (!string.IsNullOrEmpty(Folder)) { Parent = FolderLookup[Folder]; } if (f.DependentUpon != null) { Parent = FileLookup[f.DependentUpon]; Parent.IsExpanded = false; } n = Parent.Add(ProjectInclude.SkipUntilLastIfAny("/")); FileLookup[f] = n; } if (Extension == ".cs") { n.WithIcon(() => new VisualCSharpCode()); } else if (Extension == ".csproj") { n.WithIcon(() => new VisualCSharpProject()); } else if (Extension == ".vb") { n.WithIcon(() => new VisualBasicCode()); } else if (Extension == ".vbproj") { n.WithIcon(() => new VisualBasicProject()); } else if (Extension == ".fs") { n.WithIcon(() => new VisualFSharpCode()); } else if (Extension == ".fsproj") { n.WithIcon(() => new VisualFSharpProject()); } else if (Extension == ".htm") { n.WithIcon(() => new HTMLDocument()); } if (f.DependentUpon != null) { n.WithIcon(() => new SolutionProjectDependentUpon()); } n.IsExpanded = true; n.Click += delegate { v.File = f; }; // somebody refreshed the solution. if (v.File == null) { if (f.Name.SkipUntilLastIfAny("/").TakeUntilLastIfAny(".") == "Application") { v.File = f; } } else { // we may not care about the file extensions, will we see a glitch? :) if (v.File.Name.SkipUntilLastIfAny("/").TakeUntilLastIfAny(".") == f.Name.SkipUntilLastIfAny("/").TakeUntilLastIfAny(".")) { v.File = f; } } } ); }