2 using System.Windows.Forms;
3 using System.Collections.Generic;
6 using SysGen.RBuild.Framework;
7 using SysGen.BuildEngine;
8 using SysGen.BuildEngine.Tasks;
10 namespace TriStateTreeViewDemo
12 public class ProjectTreeView : TreeView
14 private ISysGenDesigner m_SysGenDesigner = null;
15 private TreeNode m_Project = new TreeNode("Project");
16 private TreeNode m_Platforms = new TreeNode("Platform");
17 private TreeNode m_Languages = new TreeNode("Languages");
18 private TreeNode m_DebugChannels = new TreeNode("Debug Channels");
19 //private TreeNode m_Filters = new TreeNode("Filters");
20 private TreeNode m_Files = new TreeNode("Files");
21 private TreeNode m_Registry = new TreeNode("Registry");
22 //private TreeNode m_Filters = new TreeNode("Filters");
24 public ProjectTreeView()
28 public void SetCatalog(ISysGenDesigner sysGenDesigner)
30 //Set the software catalog
31 m_SysGenDesigner = sysGenDesigner;
32 m_SysGenDesigner.ProjectController.ProjectLoaded += new EventHandler(PlatformController_ProjectLoaded);
33 m_SysGenDesigner.ProjectController.ProjectUpdated += new EventHandler(PlatformController_ProjectUpdated);
39 void PlatformController_ProjectLoaded(object sender, EventArgs e)
45 void PlatformController_ProjectUpdated(object sender, EventArgs e)
50 private void LoadProject()
54 m_Project = new ProjectTreeNode(m_SysGenDesigner.ProjectController.SysGenProject);
55 m_Project.Nodes.Add(m_Platforms);
56 m_Project.Nodes.Add(m_Languages);
57 m_Project.Nodes.Add(m_DebugChannels);
58 // m_Project.Nodes.Add(m_Filters);
59 m_Project.Nodes.Add(m_Files);
60 m_Project.Nodes.Add(m_Registry);
66 private void UpdateProject()
68 m_Languages.Nodes.Clear();
69 m_DebugChannels.Nodes.Clear();
71 foreach (RBuildLanguage language in m_SysGenDesigner.ProjectController.Project.Platform.Languages)
73 m_Languages.Nodes.Add(language.Name);
76 foreach (RBuildDebugChannel channel in m_SysGenDesigner.ProjectController.Project.Platform.DebugChannels)
78 m_DebugChannels.Nodes.Add(channel.Name);
82 public abstract class CatalogTreeNode : TreeNode
84 public abstract string NodeName { get; }
85 public abstract object NodeObject { get;}
88 public class ProjectTreeNode : CatalogTreeNode
90 Project m_Platform = null;
92 public ProjectTreeNode(Project platform)
94 m_Platform = platform;
95 Text = platform.FileName;
98 public Project Platform
100 get { return m_Platform; }
103 public override string NodeName
105 get { return m_Platform.Name; }
108 public override object NodeObject
110 get { return Platform; }
114 public class ModuleTreeNode : CatalogTreeNode
116 RBuildModule m_Module = null;
118 public ModuleTreeNode(RBuildModule module)
124 public RBuildModule Module
126 get { return m_Module; }
129 public override string NodeName
131 get { return Module.Name; }
134 public override object NodeObject
136 get { return Module; }
140 public class FolderTreeNode : CatalogTreeNode
142 private string m_FolderName = null;
144 public FolderTreeNode(string name)
150 public override string NodeName
152 get { return m_FolderName; }
155 public override object NodeObject
157 get { return NodeName; }