private void InitializeRibbonGroups(IEnumerable <RibbonEntry> ribbonEnties, Ribbon ribbonContainer)
        {
            foreach (RibbonEntry item in ribbonEnties)
            {
                string targetTabHeaderKey = item.RibbonTabName;
                if (String.IsNullOrEmpty(targetTabHeaderKey))
                {
                    targetTabHeaderKey = "HomeRibbonTabHeader";
                }

                RibbonTab ribbonTab = null;
                foreach (RibbonTab tab in ribbonContainer.Items)
                {
                    string currentTabHeaderKey = RibbonExtension.GetRibbonTabHeader(tab);
                    if (!String.IsNullOrEmpty(currentTabHeaderKey) && currentTabHeaderKey.Equals(targetTabHeaderKey, StringComparison.OrdinalIgnoreCase))
                    {
                        ribbonTab = tab;
                        break;
                    }
                }
                if (ribbonTab == null)
                {
                    ribbonTab = new RibbonTab();

                    string targetTabHeader = GisEditor.LanguageManager.GetStringResource(targetTabHeaderKey);
                    if (string.IsNullOrEmpty(targetTabHeader))
                    {
                        ribbonTab.Header = targetTabHeaderKey;
                    }
                    else
                    {
                        ribbonTab.SetResourceReference(RibbonTab.HeaderProperty, targetTabHeaderKey);
                    }

                    ribbonContainer.Items.Add(ribbonTab);
                }

                RibbonExtension.SetRibbonTabHeader(ribbonTab, targetTabHeaderKey);
                RibbonExtension.SetRibbonTabIndex(ribbonTab, item.RibbonTabIndex);
                if (!ribbonTab.Items.Contains(item.RibbonGroup))
                {
                    ribbonTab.Items.Add(item.RibbonGroup);
                }
            }
        }