private void LoadTree() { syntaxTreeView.Nodes.Clear(); //create the root node SyntaxNode root = new SyntaxNode(NodeType.Root); root.Text = "Configuration Root"; //create the environment node SyntaxNode environment = new SyntaxNode(NodeType.Environment); environment.Text = "Environment"; //create the environment options SyntaxNode Default = new SyntaxNode(NodeType.EnvironmentOption); Default.Text = "Font and Background"; Default.Color = colorConfig.Environment.FontColor; Default.BackGround = colorConfig.Environment.BackgroundColor; environment.Nodes.Add(Default); SyntaxNode LineNumbers = new SyntaxNode(NodeType.EnvironmentOption); LineNumbers.Text = "Line Numbers"; LineNumbers.Color = colorConfig.Environment.LineNumberFontColor; LineNumbers.BackGround = colorConfig.Environment.LineNumberBackgroundColor; environment.Nodes.Add(LineNumbers); SyntaxNode Selection = new SyntaxNode(NodeType.EnvironmentOption); Selection.Text = "Selection"; Selection.Color = null; Selection.BackGround = colorConfig.Environment.SelectionColor; environment.Nodes.Add(Selection); environment.Expand(); root.Nodes.Add(environment); //create the digits node SyntaxNode Digits = new SyntaxNode(NodeType.Digits); Digits.Text = "Digits"; Digits.Bold = colorConfig.Digits.Bold; Digits.Italic = colorConfig.Digits.Italic; Digits.Color = colorConfig.Digits.Color; root.Nodes.Add(Digits); //create the rule sets SyntaxNode RuleSets = new SyntaxNode(NodeType.RuleSets); RuleSets.Text = "Rule Sets"; foreach (RuleSet rs in colorConfig.RuleSets) { SyntaxNode ruleSetNode = new SyntaxNode(NodeType.RuleSet); ruleSetNode.Text = rs.Name; ruleSetNode.IgnoreCase = true; if (!rs.IsMainRuleSet) { ruleSetNode.NodeName = rs.Name; } else { ruleSetNode.NodeName = null; } foreach (ConfigRule cr in rs.Rules.Where(x => x.Type.Equals("Span", StringComparison.CurrentCultureIgnoreCase))) { SyntaxNode span = new SyntaxNode(NodeType.Span); span.Text = cr.Name; span.ToolTipText = "Span Item"; span.Rule = String.IsNullOrEmpty(cr.Rule) ? null : cr.Rule; span.NodeName = null; span.Bold = cr.Bold; span.Italic = cr.Italic; span.Color = cr.Color; span.StopAtEOL = cr.StopAtEOL; ruleSetNode.Nodes.Add(span); } foreach (ConfigRule cr in rs.Rules.Where(x => x.Type.Equals("KeyWords", StringComparison.CurrentCultureIgnoreCase))) { SyntaxNode kwords = new SyntaxNode(NodeType.KeyWords); kwords.Text = cr.Name; kwords.ToolTipText = "Key Words Item"; kwords.NodeName = null; kwords.Bold = cr.Bold; kwords.Italic = cr.Italic; kwords.Color = cr.Color; kwords.Words = new List<string>(); foreach (string word in cr.Words) { kwords.Words.Add(word); SyntaxNode kword = new SyntaxNode(NodeType.KeyWord); kword.Text = word; kwords.Nodes.Add(kword); } ruleSetNode.Nodes.Add(kwords); } RuleSets.Nodes.Add(ruleSetNode); } RuleSets.Expand(); root.Nodes.Add(RuleSets); root.Expand(); syntaxTreeView.Nodes.Add(root); }