public static Tab2Info FromXml(XmlNode configNode)
            {
                var tabInfo = Empty();

                if (configNode != null)
                {
                    tabInfo.Title = configNode.SelectSingleNode("./Title")?.InnerText ?? tabInfo.Title;

                    tabInfo.ToggleSwitch = CheckboxInfo.FromXml(configNode.SelectSingleNode("./ToggleSwitch"));

                    tabInfo.Checkbox1 = CheckboxInfo.FromXml(configNode.SelectSingleNode("./Checkbox1"));

                    foreach (var node in configNode.SelectNodes("./Combo1")?.OfType <XmlNode>().ToArray() ?? new XmlNode[] { })
                    {
                        tabInfo.Combo1Items.Add(ListDataItem.FromXml(node));
                    }

                    var bulletComboLists = new[]
                    {
                        tabInfo.BulletCombo1Items,
                        tabInfo.BulletCombo2Items,
                        tabInfo.BulletCombo3Items,
                        tabInfo.BulletCombo4Items,
                        tabInfo.BulletCombo5Items,
                        tabInfo.BulletCombo6Items,
                        tabInfo.BulletCombo7Items,
                        tabInfo.BulletCombo8Items
                    };

                    for (var i = 0; i < bulletComboLists.Length; i++)
                    {
                        var defaultItemNode = configNode.SelectSingleNode(String.Format("./BulletCombo{0}", i + 1));
                        if (defaultItemNode == null)
                        {
                            continue;
                        }
                        bulletComboLists[i].Add(ListDataItem.FromXml(defaultItemNode));
                    }

                    foreach (var node in configNode.SelectNodes("./BulletList/Item")?.OfType <XmlNode>().ToArray() ?? new XmlNode[] { })
                    {
                        var nodeValue = node.InnerText;
                        foreach (var bulletComboList in bulletComboLists)
                        {
                            if (!bulletComboList.Any(item => String.Equals(nodeValue, item.Value, StringComparison.OrdinalIgnoreCase)))
                            {
                                bulletComboList.Add(ListDataItem.FromString(nodeValue));
                            }
                        }
                    }

                    tabInfo.Combo1Configuration      = TextEditorConfiguration.FromXml(configNode, "Combo1");
                    tabInfo.BulletComboConfiguration = TextEditorConfiguration.FromXml(configNode, "BulletCombos");
                }
                return(tabInfo);
            }
        public static StepInfo FromXml(XmlNode configNode)
        {
            var stepInfo = new StepInfo();

            stepInfo.Index = Int32.Parse(configNode.SelectSingleNode("./Tab")?.InnerText ?? "0");
            stepInfo.Title = configNode.SelectSingleNode("./Name")?.InnerText;

            foreach (var productNode in (configNode.SelectNodes("./Product")?.OfType <XmlNode>() ?? new XmlNode[] { }).ToList())
            {
                stepInfo.Products.Add(ListDataItem.FromString(productNode.InnerText));
            }

            return(stepInfo);
        }
        public override void LoadData(XmlNode configNode, ResourceManager resourceManager)
        {
            base.LoadData(configNode, resourceManager);

            if (resourceManager.DataNextStepsPartIFile.ExistsLocal())
            {
                var document = new XmlDocument();
                document.Load(resourceManager.DataNextStepsPartIFile.LocalPath);

                var node = document.SelectSingleNode(@"/SHIFT14I");
                if (node == null)
                {
                    return;
                }
                foreach (XmlNode childNode in node.ChildNodes)
                {
                    var item = ListDataItem.FromXml(childNode);
                    switch (childNode.Name)
                    {
                    case "SHIFT14IHeader":
                        if (!String.IsNullOrEmpty(item.Value))
                        {
                            HeadersItems.Add(item);
                        }
                        break;

                    case "SHIFT14ICombo1":
                        if (!String.IsNullOrEmpty(item.Value))
                        {
                            Combo1Items.Add(item);
                        }
                        break;

                    case "SHIFT14ICombo2":
                        if (!String.IsNullOrEmpty(item.Value))
                        {
                            Combo2Items.Add(item);
                        }
                        break;

                    case "SHIFT14ICombo3":
                        if (!String.IsNullOrEmpty(item.Value))
                        {
                            Combo3Items.Add(item);
                        }
                        break;

                    case "SHIFT14ICombo4":
                        if (!String.IsNullOrEmpty(item.Value))
                        {
                            Combo4Items.Add(item);
                        }
                        break;

                    case "SHIFT14ICombo5":
                        if (!String.IsNullOrEmpty(item.Value))
                        {
                            Combo5Items.Add(item);
                        }
                        break;

                    case "SHIFT14ITAB1SHUBHEADER1":
                        if (item.IsPlaceholder)
                        {
                            SubHeader1Placeholder = item.Value;
                        }
                        else
                        {
                            SubHeader1DefaultValue = item.Value;
                        }
                        break;

                    case "SHIFT14ITAB2SHUBHEADER1":
                        if (item.IsPlaceholder)
                        {
                            SubHeader2Placeholder = item.Value;
                        }
                        else
                        {
                            SubHeader2DefaultValue = item.Value;
                        }
                        break;

                    case "SHIFT14ITAB3SHUBHEADER1":
                        if (item.IsPlaceholder)
                        {
                            SubHeader3Placeholder = item.Value;
                        }
                        else
                        {
                            SubHeader3DefaultValue = item.Value;
                        }
                        break;

                    case "SHIFT14ITAB4SHUBHEADER1":
                        if (item.IsPlaceholder)
                        {
                            SubHeader4Placeholder = item.Value;
                        }
                        else
                        {
                            SubHeader4DefaultValue = item.Value;
                        }
                        break;

                    case "SHIFT14ITAB5SHUBHEADER1":
                        if (item.IsPlaceholder)
                        {
                            SubHeader5Placeholder = item.Value;
                        }
                        else
                        {
                            SubHeader5DefaultValue = item.Value;
                        }
                        break;

                    case "SHIFT14ITAB6SHUBHEADER1":
                        if (item.IsPlaceholder)
                        {
                            SubHeader6Placeholder = item.Value;
                        }
                        else
                        {
                            SubHeader6DefaultValue = item.Value;
                        }
                        break;
                    }
                }

                Clipart1Configuration = ClipartConfiguration.FromXml(node, "SHIFT14IClipart1");
                Clipart2Configuration = ClipartConfiguration.FromXml(node, "SHIFT14IClipart2");
                Clipart3Configuration = ClipartConfiguration.FromXml(node, "SHIFT14IClipart3");

                CommonEditorConfiguration  = TextEditorConfiguration.FromXml(node);
                HeadersEditorConfiguration = TextEditorConfiguration.FromXml(node, "SHIFT14IHeader");

                Combo1Configuration = TextEditorConfiguration.FromXml(node, "SHIFT14ICombo1");
                Combo2Configuration = TextEditorConfiguration.FromXml(node, "SHIFT14ICombo2");
                Combo3Configuration = TextEditorConfiguration.FromXml(node, "SHIFT14ICombo3");
                Combo4Configuration = TextEditorConfiguration.FromXml(node, "SHIFT14ICombo4");
                Combo5Configuration = TextEditorConfiguration.FromXml(node, "SHIFT14ICombo5");

                SubHeader1Configuration = TextEditorConfiguration.FromXml(node, "SHIFT14ITAB1SHUBHEADER1");
                SubHeader2Configuration = TextEditorConfiguration.FromXml(node, "SHIFT14ITAB2SHUBHEADER1");
                SubHeader3Configuration = TextEditorConfiguration.FromXml(node, "SHIFT14ITAB3SHUBHEADER1");
                SubHeader4Configuration = TextEditorConfiguration.FromXml(node, "SHIFT14ITAB4SHUBHEADER1");
                SubHeader5Configuration = TextEditorConfiguration.FromXml(node, "SHIFT14ITAB5SHUBHEADER1");
                SubHeader6Configuration = TextEditorConfiguration.FromXml(node, "SHIFT14ITAB6SHUBHEADER1");
            }

            if (resourceManager.DataNextStepsCommonFile.ExistsLocal())
            {
                var document = new XmlDocument();
                document.Load(resourceManager.DataNextStepsCommonFile.LocalPath);

                var comboLists = new[]
                {
                    Combo1Items,
                    Combo2Items,
                    Combo3Items,
                    Combo4Items,
                    Combo5Items
                };

                var proofNodes = document.SelectNodes("//SHIFTNextSteps/Item")?.OfType <XmlNode>().ToArray() ?? new XmlNode[] { };
                foreach (var proofNode in proofNodes)
                {
                    var nodeValue = proofNode.Attributes?.OfType <XmlAttribute>()
                                    .FirstOrDefault(a => String.Equals(a.Name, "Description", StringComparison.OrdinalIgnoreCase))?.Value;
                    if (!String.IsNullOrWhiteSpace(nodeValue))
                    {
                        foreach (var comboList in comboLists)
                        {
                            if (!comboList.Any(item => String.Equals(nodeValue, item.Value, StringComparison.OrdinalIgnoreCase)))
                            {
                                comboList.Add(ListDataItem.FromString(nodeValue));
                            }
                        }
                    }
                }
            }
        }
            public static Tab3Info FromXml(XmlNode configNode, ResourceManager resourceManager)
            {
                var tabInfo = Empty();

                if (configNode != null)
                {
                    foreach (var titleNode in (configNode.SelectNodes("./SHIFT13ETabStrip")?.OfType <XmlNode>().ToArray() ?? new XmlNode[] { }).ToList())
                    {
                        var titleAttribute = titleNode.Attributes?.OfType <XmlAttribute>()
                                             .FirstOrDefault(a => String.Equals(a.Name, "Tab3Name", StringComparison.OrdinalIgnoreCase));

                        if (titleAttribute == null)
                        {
                            continue;
                        }

                        tabInfo.Title = titleAttribute.Value;
                        break;
                    }

                    foreach (var comboNode in (configNode.SelectNodes("./SHIFT13ETAB3COMBO1")?.OfType <XmlNode>().ToArray() ?? new XmlNode[] { }).ToList())
                    {
                        tabInfo.Combo1Items.Add(ListDataItem.FromXml(comboNode));
                    }

                    foreach (var comboNode in (configNode.SelectNodes("./SHIFT13ETAB3COMBO2")?.OfType <XmlNode>().ToArray() ?? new XmlNode[] { }).ToList())
                    {
                        tabInfo.Combo2Items.Add(ListDataItem.FromXml(comboNode));
                    }

                    foreach (var comboNode in (configNode.SelectNodes("./SHIFT13ETAB3COMBO3")?.OfType <XmlNode>().ToArray() ?? new XmlNode[] { }).ToList())
                    {
                        tabInfo.Combo3Items.Add(ListDataItem.FromXml(comboNode));
                    }

                    foreach (var comboNode in (configNode.SelectNodes("./SHIFT13ETAB3COMBO4")?.OfType <XmlNode>().ToArray() ?? new XmlNode[] { }).ToList())
                    {
                        tabInfo.Combo4Items.Add(ListDataItem.FromXml(comboNode));
                    }

                    if (resourceManager.DataAgreementCommonFile.ExistsLocal())
                    {
                        var comboLists = new[]
                        {
                            tabInfo.Combo1Items,
                            tabInfo.Combo2Items,
                            tabInfo.Combo3Items,
                            tabInfo.Combo4Items,
                        };

                        var document = new XmlDocument();
                        document.Load(resourceManager.DataAgreementCommonFile.LocalPath);

                        var televisionNodes = document.SelectNodes("//Settings/Television/Item")?.OfType <XmlNode>().ToArray() ?? new XmlNode[] { };
                        foreach (var itemNode in televisionNodes)
                        {
                            var nodeValue = itemNode?.InnerText;
                            if (!String.IsNullOrWhiteSpace(nodeValue))
                            {
                                foreach (var comboList in comboLists)
                                {
                                    if (!comboList.Any(item => String.Equals(nodeValue, item.Value, StringComparison.OrdinalIgnoreCase)))
                                    {
                                        comboList.Add(ListDataItem.FromString(nodeValue));
                                    }
                                }
                            }
                        }

                        var digitalNodes = document.SelectNodes("//Settings/Digital/Item")?.OfType <XmlNode>().ToArray() ?? new XmlNode[] { };
                        foreach (var itemNode in digitalNodes)
                        {
                            var nodeValue = itemNode?.InnerText;
                            if (!String.IsNullOrWhiteSpace(nodeValue))
                            {
                                foreach (var comboList in comboLists)
                                {
                                    if (!comboList.Any(item => String.Equals(nodeValue, item.Value, StringComparison.OrdinalIgnoreCase)))
                                    {
                                        comboList.Add(ListDataItem.FromString(nodeValue));
                                    }
                                }
                            }
                        }
                    }


                    var subheader1Item = ListDataItem.FromXml(configNode.SelectSingleNode("./SHIFT13ETAB3Subheader1"));
                    if (subheader1Item.IsDefault && !subheader1Item.IsPlaceholder && !String.IsNullOrWhiteSpace(subheader1Item.Value))
                    {
                        var itemValue   = subheader1Item.Value.ToLower();
                        var scaleFactor = 1m;
                        if (itemValue.EndsWith("b"))
                        {
                            itemValue   = itemValue.Replace("b", "");
                            scaleFactor = 1000000000m;
                        }
                        else if (itemValue.EndsWith("m"))
                        {
                            itemValue   = itemValue.Replace("m", "");
                            scaleFactor = 1000000m;
                        }

                        tabInfo.SubHeader1DefaultValue = Decimal.Parse(itemValue,
                                                                       NumberStyles.AllowCurrencySymbol | NumberStyles.AllowDecimalPoint | NumberStyles.AllowThousands) *
                                                         scaleFactor;
                    }

                    var subheader2Item = ListDataItem.FromXml(configNode.SelectSingleNode("./SHIFT13ETAB3Subheader2"));
                    if (subheader2Item.IsDefault && !subheader2Item.IsPlaceholder && !String.IsNullOrWhiteSpace(subheader2Item.Value))
                    {
                        var itemValue   = subheader2Item.Value.ToLower();
                        var scaleFactor = 1m;
                        if (itemValue.EndsWith("b"))
                        {
                            itemValue   = itemValue.Replace("b", "");
                            scaleFactor = 1000000000m;
                        }
                        else if (itemValue.EndsWith("m"))
                        {
                            itemValue   = itemValue.Replace("m", "");
                            scaleFactor = 1000000m;
                        }

                        tabInfo.SubHeader2DefaultValue = Decimal.Parse(itemValue,
                                                                       NumberStyles.AllowCurrencySymbol | NumberStyles.AllowDecimalPoint | NumberStyles.AllowThousands) *
                                                         scaleFactor;
                    }

                    var subheader3Item = ListDataItem.FromXml(configNode.SelectSingleNode("./SHIFT13ETAB3Subheader3"));
                    if (subheader3Item.IsDefault && !subheader3Item.IsPlaceholder && !String.IsNullOrWhiteSpace(subheader3Item.Value))
                    {
                        var itemValue   = subheader3Item.Value.ToLower();
                        var scaleFactor = 1m;
                        if (itemValue.EndsWith("b"))
                        {
                            itemValue   = itemValue.Replace("b", "");
                            scaleFactor = 1000000000m;
                        }
                        else if (itemValue.EndsWith("m"))
                        {
                            itemValue   = itemValue.Replace("m", "");
                            scaleFactor = 1000000m;
                        }

                        tabInfo.SubHeader3DefaultValue = Decimal.Parse(itemValue,
                                                                       NumberStyles.AllowCurrencySymbol | NumberStyles.AllowDecimalPoint | NumberStyles.AllowThousands) *
                                                         scaleFactor;
                    }

                    var subheader4Item = ListDataItem.FromXml(configNode.SelectSingleNode("./SHIFT13ETAB3Subheader4"));
                    if (subheader4Item.IsDefault && !subheader4Item.IsPlaceholder && !String.IsNullOrWhiteSpace(subheader4Item.Value))
                    {
                        var itemValue   = subheader4Item.Value.ToLower();
                        var scaleFactor = 1m;
                        if (itemValue.EndsWith("b"))
                        {
                            itemValue   = itemValue.Replace("b", "");
                            scaleFactor = 1000000000m;
                        }
                        else if (itemValue.EndsWith("m"))
                        {
                            itemValue   = itemValue.Replace("m", "");
                            scaleFactor = 1000000m;
                        }

                        tabInfo.SubHeader4DefaultValue = Decimal.Parse(itemValue,
                                                                       NumberStyles.AllowCurrencySymbol | NumberStyles.AllowDecimalPoint | NumberStyles.AllowThousands) *
                                                         scaleFactor;
                    }

                    tabInfo.Combo1Configuration = TextEditorConfiguration.FromXml(configNode, "SHIFT13ETAB1COMBO1");
                    tabInfo.Combo2Configuration = TextEditorConfiguration.FromXml(configNode, "SHIFT13ETAB1COMBO2");
                    tabInfo.Combo3Configuration = TextEditorConfiguration.FromXml(configNode, "SHIFT13ETAB1COMBO3");
                    tabInfo.Combo4Configuration = TextEditorConfiguration.FromXml(configNode, "SHIFT13ETAB1COMBO4");

                    tabInfo.Subheader1Configuration = TextEditorConfiguration.FromXml(configNode, "SHIFT13ETAB3SubHeader1");
                    tabInfo.Subheader2Configuration = TextEditorConfiguration.FromXml(configNode, "SHIFT13ETAB3SubHeader2");
                    tabInfo.Subheader3Configuration = TextEditorConfiguration.FromXml(configNode, "SHIFT13ETAB3SubHeader3");
                    tabInfo.Subheader4Configuration = TextEditorConfiguration.FromXml(configNode, "SHIFT13ETAB3SubHeader4");
                }
                return(tabInfo);
            }
        public override void LoadData(XmlNode configNode, ResourceManager resourceManager)
        {
            base.LoadData(configNode, resourceManager);

            if (resourceManager.DataAgendaPartEFile.ExistsLocal())
            {
                var document = new XmlDocument();
                document.Load(resourceManager.DataAgendaPartEFile.LocalPath);

                var node = document.SelectSingleNode(@"/SHIFT03E");
                if (node == null)
                {
                    return;
                }

                Tab1Title = node.SelectSingleNode("./SHIFT03ETab1Name")?.Attributes
                            ?.OfType <XmlAttribute>()
                            .FirstOrDefault(a => String.Equals(a.Name, "Value", StringComparison.OrdinalIgnoreCase))?.Value ?? "Goals";
                Tab2Title = node.SelectSingleNode("./SHIFT03ETab2Name")?.Attributes
                            ?.OfType <XmlAttribute>()
                            .FirstOrDefault(a => String.Equals(a.Name, "Value", StringComparison.OrdinalIgnoreCase))?.Value ?? "Strategy";
                Tab3Title = node.SelectSingleNode("./SHIFT03ETab3Name")?.Attributes
                            ?.OfType <XmlAttribute>()
                            .FirstOrDefault(a => String.Equals(a.Name, "Value", StringComparison.OrdinalIgnoreCase))?.Value ?? "Tactics";

                foreach (XmlNode childNode in node.ChildNodes)
                {
                    var item = ListDataItem.FromXml(childNode);
                    switch (childNode.Name)
                    {
                    case "SHIFT03EHeader":
                        if (!String.IsNullOrEmpty(item.Value))
                        {
                            HeadersItems.Add(item);
                        }
                        break;

                    case "SHIFT03EMULTIBOX1":
                        if (!String.IsNullOrEmpty(item.Value))
                        {
                            MemoPopup1Items.Add(item);
                        }
                        break;

                    case "SHIFT03EMULTIBOX2":
                        if (!String.IsNullOrEmpty(item.Value))
                        {
                            MemoPopup2Items.Add(item);
                        }
                        break;

                    case "SHIFT03EMULTIBOX3":
                        if (!String.IsNullOrEmpty(item.Value))
                        {
                            MemoPopup3Items.Add(item);
                        }
                        break;

                    case "SHIFT03EMULTIBOX4":
                        if (!String.IsNullOrEmpty(item.Value))
                        {
                            MemoPopup4Items.Add(item);
                        }
                        break;

                    case "SHIFT03EMULTIBOX5":
                        if (!String.IsNullOrEmpty(item.Value))
                        {
                            MemoPopup5Items.Add(item);
                        }
                        break;

                    case "SHIFT03EMULTIBOX6":
                        if (!String.IsNullOrEmpty(item.Value))
                        {
                            MemoPopup6Items.Add(item);
                        }
                        break;

                    case "SHIFT03ECOMBO1":
                        if (!String.IsNullOrEmpty(item.Value))
                        {
                            Combo1Items.Add(item);
                        }
                        break;

                    case "SHIFT03ECOMBO2":
                        if (!String.IsNullOrEmpty(item.Value))
                        {
                            Combo2Items.Add(item);
                        }
                        break;

                    case "SHIFT03ECOMBO3":
                        if (!String.IsNullOrEmpty(item.Value))
                        {
                            Combo3Items.Add(item);
                        }
                        break;

                    case "SHIFT03ECOMBO4":
                        if (!String.IsNullOrEmpty(item.Value))
                        {
                            Combo4Items.Add(item);
                        }
                        break;

                    case "SHIFT03ECOMBO5":
                        if (!String.IsNullOrEmpty(item.Value))
                        {
                            Combo5Items.Add(item);
                        }
                        break;

                    case "SHIFT03ECOMBO6":
                        if (!String.IsNullOrEmpty(item.Value))
                        {
                            Combo6Items.Add(item);
                        }
                        break;

                    case "SHIFT03ECOMBO7":
                        if (!String.IsNullOrEmpty(item.Value))
                        {
                            Combo7Items.Add(item);
                        }
                        break;
                    }
                }

                Clipart1Configuration = ClipartConfiguration.FromXml(node, "SHIFT03EClipart1");
                Clipart2Configuration = ClipartConfiguration.FromXml(node, "SHIFT03EClipart2");
                Clipart3Configuration = ClipartConfiguration.FromXml(node, "SHIFT03EClipart3");

                CommonEditorConfiguration  = TextEditorConfiguration.FromXml(node);
                HeadersEditorConfiguration = TextEditorConfiguration.FromXml(node, "SHIFT03EHeader");
                MemoPopup1Configuration    = TextEditorConfiguration.FromXml(node, "SHIFT03EMULTIBOX1");
                MemoPopup2Configuration    = TextEditorConfiguration.FromXml(node, "SHIFT03EMULTIBOX2");
                MemoPopup3Configuration    = TextEditorConfiguration.FromXml(node, "SHIFT03EMULTIBOX3");
                MemoPopup4Configuration    = TextEditorConfiguration.FromXml(node, "SHIFT03EMULTIBOX4");
                MemoPopup5Configuration    = TextEditorConfiguration.FromXml(node, "SHIFT03EMULTIBOX5");
                MemoPopup6Configuration    = TextEditorConfiguration.FromXml(node, "SHIFT03EMULTIBOX6");
                ComboConfiguration         = TextEditorConfiguration.FromXml(node, "TAB3COMBOS");
            }

            if (resourceManager.DataClientGoalsFile.ExistsLocal())
            {
                var targetMemoPopupLists = new[]
                {
                    MemoPopup1Items,
                    MemoPopup2Items,
                    MemoPopup3Items,
                };

                var document = new XmlDocument();
                document.Load(resourceManager.DataClientGoalsFile.LocalPath);

                var goalNodes = document.SelectNodes("//ClientGoals/Goal")?.OfType <XmlNode>().ToArray() ?? new XmlNode[] { };

                foreach (var node in goalNodes)
                {
                    var goalDataItem = ListDataItem.FromXml(node);
                    foreach (var itemList in targetMemoPopupLists)
                    {
                        if (!itemList.Any(item => String.Equals(item.Value, goalDataItem.Value, StringComparison.OrdinalIgnoreCase)))
                        {
                            itemList.Add(ListDataItem.Clone(goalDataItem));
                        }
                    }
                }
            }

            if (resourceManager.DataApproachesCommonFile.ExistsLocal())
            {
                var targetMemoPopupLists = new[]
                {
                    MemoPopup4Items,
                    MemoPopup5Items,
                    MemoPopup6Items,
                };

                var document = new XmlDocument();
                document.Load(resourceManager.DataApproachesCommonFile.LocalPath);

                var approachNodes = document.SelectNodes("//OurApproach/Approach/Name")?.OfType <XmlNode>().ToArray() ?? new XmlNode[] { };

                foreach (var node in approachNodes)
                {
                    foreach (var itemList in targetMemoPopupLists)
                    {
                        if (!itemList.Any(item => String.Equals(item.Value, node.InnerText, StringComparison.OrdinalIgnoreCase)))
                        {
                            itemList.Add(ListDataItem.FromString(node.InnerText));
                        }
                    }
                }
            }

            if (resourceManager.DataSolutionsCommonFile.ExistsLocal())
            {
                var targetComboItemLists = new[]
                {
                    Combo1Items,
                    Combo2Items,
                    Combo3Items,
                    Combo4Items,
                    Combo5Items,
                    Combo6Items,
                    Combo7Items,
                };

                var document = new XmlDocument();
                document.Load(resourceManager.DataSolutionsCommonFile.LocalPath);

                var productNodes = document.SelectNodes("//Products/Product/Name")?.OfType <XmlNode>().ToArray() ?? new XmlNode[] { };

                foreach (var node in productNodes)
                {
                    foreach (var comboItemList in targetComboItemLists)
                    {
                        if (!comboItemList.Any(item => String.Equals(item.Value, node.InnerText, StringComparison.OrdinalIgnoreCase)))
                        {
                            comboItemList.Add(ListDataItem.FromString(node.InnerText));
                        }
                    }
                }
            }
        }
        public override void LoadData(XmlNode configNode, ResourceManager resourceManager)
        {
            base.LoadData(configNode, resourceManager);

            if (_resourceManager.DataContractPartBFile.ExistsLocal())
            {
                var document = new XmlDocument();
                document.Load(_resourceManager.DataContractPartBFile.LocalPath);

                var node = document.SelectSingleNode(@"/SHIFT15B");
                if (node == null)
                {
                    return;
                }
                foreach (XmlNode childNode in node.ChildNodes)
                {
                    var item = ListDataItem.FromXml(childNode);
                    switch (childNode.Name)
                    {
                    case "SHIFT15BHeader":
                        if (!String.IsNullOrEmpty(item.Value))
                        {
                            HeadersItems.Add(item);
                        }
                        break;

                    case "SHIFT15BTab1Combo1A":
                        if (!String.IsNullOrEmpty(item.Value))
                        {
                            Table1Combo1AItems.Add(item);
                        }
                        break;

                    case "SHIFT15BTab1Combo1C":
                        if (!String.IsNullOrEmpty(item.Value))
                        {
                            Table1Combo1CItems.Add(item);
                        }
                        break;

                    case "SHIFT15BTab1Combo2A":
                        if (!String.IsNullOrEmpty(item.Value))
                        {
                            Table1Combo2AItems.Add(item);
                        }
                        break;

                    case "SHIFT15BTab1Combo2C":
                        if (!String.IsNullOrEmpty(item.Value))
                        {
                            Table1Combo2CItems.Add(item);
                        }
                        break;

                    case "SHIFT15BTab1Combo3A":
                        if (!String.IsNullOrEmpty(item.Value))
                        {
                            Table1Combo3AItems.Add(item);
                        }
                        break;

                    case "SHIFT15BTab1Combo3C":
                        if (!String.IsNullOrEmpty(item.Value))
                        {
                            Table1Combo3CItems.Add(item);
                        }
                        break;

                    case "SHIFT15BTab1Combo4A":
                        if (!String.IsNullOrEmpty(item.Value))
                        {
                            Table1Combo4AItems.Add(item);
                        }
                        break;

                    case "SHIFT15BTab1Combo4C":
                        if (!String.IsNullOrEmpty(item.Value))
                        {
                            Table1Combo4CItems.Add(item);
                        }
                        break;

                    case "SHIFT15BTab1Combo5A":
                        if (!String.IsNullOrEmpty(item.Value))
                        {
                            Table1Combo5AItems.Add(item);
                        }
                        break;

                    case "SHIFT15BTab1Combo5C":
                        if (!String.IsNullOrEmpty(item.Value))
                        {
                            Table1Combo5CItems.Add(item);
                        }
                        break;

                    case "SHIFT15BTab1Combo6A":
                        if (!String.IsNullOrEmpty(item.Value))
                        {
                            Table1Combo6AItems.Add(item);
                        }
                        break;

                    case "SHIFT15BTab1Combo6C":
                        if (!String.IsNullOrEmpty(item.Value))
                        {
                            Table1Combo6CItems.Add(item);
                        }
                        break;

                    case "SHIFT15BTab1Combo7A":
                        if (!String.IsNullOrEmpty(item.Value))
                        {
                            Table1Combo7AItems.Add(item);
                        }
                        break;

                    case "SHIFT15BTab1Combo7C":
                        if (!String.IsNullOrEmpty(item.Value))
                        {
                            Table1Combo7CItems.Add(item);
                        }
                        break;

                    case "SHIFT15BTab1Combo8A":
                        if (!String.IsNullOrEmpty(item.Value))
                        {
                            Table1Combo8AItems.Add(item);
                        }
                        break;

                    case "SHIFT15BTab1Combo8C":
                        if (!String.IsNullOrEmpty(item.Value))
                        {
                            Table1Combo8CItems.Add(item);
                        }
                        break;

                    case "SHIFT15BTab1Combo9A":
                        if (!String.IsNullOrEmpty(item.Value))
                        {
                            Table1Combo9AItems.Add(item);
                        }
                        break;

                    case "SHIFT15BTab1Combo9C":
                        if (!String.IsNullOrEmpty(item.Value))
                        {
                            Table1Combo9CItems.Add(item);
                        }
                        break;

                    case "SHIFT15BTab1Combo10A":
                        if (!String.IsNullOrEmpty(item.Value))
                        {
                            Table1Combo10AItems.Add(item);
                        }
                        break;

                    case "SHIFT15BTab1Combo10C":
                        if (!String.IsNullOrEmpty(item.Value))
                        {
                            Table1Combo10CItems.Add(item);
                        }
                        break;

                    case "SHIFT15BTab2Combo1A":
                        if (!String.IsNullOrEmpty(item.Value))
                        {
                            Table2Combo1AItems.Add(item);
                        }
                        break;

                    case "SHIFT15BTab2Combo1C":
                        if (!String.IsNullOrEmpty(item.Value))
                        {
                            Table2Combo1CItems.Add(item);
                        }
                        break;

                    case "SHIFT15BTab2Combo2A":
                        if (!String.IsNullOrEmpty(item.Value))
                        {
                            Table2Combo2AItems.Add(item);
                        }
                        break;

                    case "SHIFT15BTab2Combo2C":
                        if (!String.IsNullOrEmpty(item.Value))
                        {
                            Table2Combo2CItems.Add(item);
                        }
                        break;

                    case "SHIFT15BTab2Combo3A":
                        if (!String.IsNullOrEmpty(item.Value))
                        {
                            Table2Combo3AItems.Add(item);
                        }
                        break;

                    case "SHIFT15BTab2Combo3C":
                        if (!String.IsNullOrEmpty(item.Value))
                        {
                            Table2Combo3CItems.Add(item);
                        }
                        break;

                    case "SHIFT15BTab2Combo4A":
                        if (!String.IsNullOrEmpty(item.Value))
                        {
                            Table2Combo4AItems.Add(item);
                        }
                        break;

                    case "SHIFT15BTab2Combo4C":
                        if (!String.IsNullOrEmpty(item.Value))
                        {
                            Table2Combo4CItems.Add(item);
                        }
                        break;

                    case "SHIFT15BTab2Combo5A":
                        if (!String.IsNullOrEmpty(item.Value))
                        {
                            Table2Combo5AItems.Add(item);
                        }
                        break;

                    case "SHIFT15BTab2Combo5C":
                        if (!String.IsNullOrEmpty(item.Value))
                        {
                            Table2Combo5CItems.Add(item);
                        }
                        break;

                    case "SHIFT15BTab2Combo6A":
                        if (!String.IsNullOrEmpty(item.Value))
                        {
                            Table2Combo6AItems.Add(item);
                        }
                        break;

                    case "SHIFT15BTab2Combo6C":
                        if (!String.IsNullOrEmpty(item.Value))
                        {
                            Table2Combo6CItems.Add(item);
                        }
                        break;

                    case "SHIFT15BTab2Combo7A":
                        if (!String.IsNullOrEmpty(item.Value))
                        {
                            Table2Combo7AItems.Add(item);
                        }
                        break;

                    case "SHIFT15BTab2Combo7C":
                        if (!String.IsNullOrEmpty(item.Value))
                        {
                            Table2Combo7CItems.Add(item);
                        }
                        break;

                    case "SHIFT15BTab2Combo8A":
                        if (!String.IsNullOrEmpty(item.Value))
                        {
                            Table2Combo8AItems.Add(item);
                        }
                        break;

                    case "SHIFT15BTab2Combo8C":
                        if (!String.IsNullOrEmpty(item.Value))
                        {
                            Table2Combo8CItems.Add(item);
                        }
                        break;

                    case "SHIFT15BTab2Combo9A":
                        if (!String.IsNullOrEmpty(item.Value))
                        {
                            Table2Combo9AItems.Add(item);
                        }
                        break;

                    case "SHIFT15BTab2Combo9C":
                        if (!String.IsNullOrEmpty(item.Value))
                        {
                            Table2Combo9CItems.Add(item);
                        }
                        break;

                    case "SHIFT15BTab2Combo10A":
                        if (!String.IsNullOrEmpty(item.Value))
                        {
                            Table2Combo10AItems.Add(item);
                        }
                        break;

                    case "SHIFT15BTab2Combo10C":
                        if (!String.IsNullOrEmpty(item.Value))
                        {
                            Table2Combo10CItems.Add(item);
                        }
                        break;

                    case "SHIFT15BSummaryCheckbox1":
                        SummaryCheckbox1 = CheckboxInfo.FromXml(childNode);
                        break;

                    case "SHIFT15BSummaryCheckbox2":
                        SummaryCheckbox3 = CheckboxInfo.FromXml(childNode);
                        break;
                    }
                }

                Table1Configuration = TableConfiguration.FromXml(node, "SHIFT15BTab1");
                Table2Configuration = TableConfiguration.FromXml(node, "SHIFT15BTab2");

                CommonEditorConfiguration  = TextEditorConfiguration.FromXml(node);
                HeadersEditorConfiguration = TextEditorConfiguration.FromXml(node, "SHIFT15BHeader");

                TableComboConfiguration = TextEditorConfiguration.FromXml(node, "SHIFT15BTabCombos");
                SummaryConfiguration    = TextEditorConfiguration.FromXml(node, "SHIFT15BSummaryCombos");
            }

            if (resourceManager.DataAgreementCommonFile.ExistsLocal())
            {
                var table1Column1Combos = Table1Column1Lists;

                var table2Column1Combos = Table2Column1Lists;

                var column3Combos = Table1Column3Lists.Union(Table2Column3Lists).ToArray();

                var document = new XmlDocument();
                document.Load(resourceManager.DataAgreementCommonFile.LocalPath);

                var table1Column1Nodes = document.SelectNodes("//Settings/Television/Item")?.OfType <XmlNode>().ToArray() ?? new XmlNode[] { };
                foreach (var itemNode in table1Column1Nodes)
                {
                    var nodeValue = itemNode?.InnerText;
                    if (!String.IsNullOrWhiteSpace(nodeValue))
                    {
                        foreach (var comboList in table1Column1Combos)
                        {
                            if (!comboList.Any(item => String.Equals(nodeValue, item.Value, StringComparison.OrdinalIgnoreCase)))
                            {
                                comboList.Add(ListDataItem.FromString(nodeValue));
                            }
                        }
                    }
                }

                var table2Column1Nodes = document.SelectNodes("//Settings/Digital/Item")?.OfType <XmlNode>().ToArray() ?? new XmlNode[] { };
                foreach (var itemNode in table2Column1Nodes)
                {
                    var nodeValue = itemNode?.InnerText;
                    if (!String.IsNullOrWhiteSpace(nodeValue))
                    {
                        foreach (var comboList in table2Column1Combos)
                        {
                            if (!comboList.Any(item => String.Equals(nodeValue, item.Value, StringComparison.OrdinalIgnoreCase)))
                            {
                                comboList.Add(ListDataItem.FromString(nodeValue));
                            }
                        }
                    }
                }

                var column3Nodes = document.SelectNodes("//Settings/Term/Item")?.OfType <XmlNode>().ToArray() ?? new XmlNode[] { };
                foreach (var itemNode in column3Nodes)
                {
                    var nodeValue = itemNode?.InnerText;
                    if (!String.IsNullOrWhiteSpace(nodeValue))
                    {
                        foreach (var comboList in column3Combos)
                        {
                            if (!comboList.Any(item => String.Equals(nodeValue, item.Value, StringComparison.OrdinalIgnoreCase)))
                            {
                                comboList.Add(ListDataItem.FromString(nodeValue));
                            }
                        }
                    }
                }

                var summaryCombo1Nodes = document.SelectNodes("//Settings/Months/Item")?.OfType <XmlNode>().ToArray() ?? new XmlNode[] { };
                foreach (var itemNode in summaryCombo1Nodes)
                {
                    var nodeValue = itemNode?.InnerText;
                    if (!String.IsNullOrWhiteSpace(nodeValue) &&
                        !SummaryCombo2Items.Any(item => String.Equals(nodeValue, item.Value, StringComparison.OrdinalIgnoreCase)))
                    {
                        SummaryCombo2Items.Add(ListDataItem.FromString(nodeValue));
                    }
                }
            }
        }