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);
        }