/// <summary>
        /// Initializes a new instance of the <see cref="MySqlInstanceMenuGroup"/> class.
        /// </summary>
        /// <param name="boundInstance">The MySQL instance that this menu group is associated to.</param>
        public MySqlInstanceMenuGroup(MySqlInstance boundInstance)
        {
            BoundInstance    = boundInstance;
            InstanceMenuItem = new ToolStripMenuItem();
            var menuItemFont = new Font(InstanceMenuItem.Font, FontStyle.Bold);

            InstanceMenuItem.Font = menuItemFont;
            InstanceMenuItem.Tag  = boundInstance.InstanceId;
            if (MySqlWorkbench.AllowsExternalConnectionsManagement)
            {
                ConfigureMenuItem        = new ToolStripMenuItem(Resources.ManageInstance);
                ConfigureMenuItem.Click += ConfigureMenuItem_Click;
            }

            RecreateSqlEditorMenus();
            Separator = new ToolStripSeparator();
            Update(false);
        }
        /// <summary>
        /// Reads MySQL instances directly from the XML configuration file to update the settings object.
        /// </summary>
        /// <param name="rootElement">The root element of the configuration file.</param>
        private static void UpdateMySqlInstancesInSettingsFromXml(XElement rootElement)
        {
            var mySqlInstancesListElement = rootElement?.Element("MySQLInstancesList");

            if (mySqlInstancesListElement == null || string.IsNullOrEmpty(mySqlInstancesListElement.Value))
            {
                return;
            }

            var mySqlInstancesListDoc = new XmlDocument();

            mySqlInstancesListDoc.LoadXml(mySqlInstancesListElement.Value);
            if (mySqlInstancesListDoc.DocumentElement == null)
            {
                return;
            }

            if (mySqlInstancesListDoc.DocumentElement.ChildNodes.Count == 0)
            {
                return;
            }

            var temporaryInstancesList = new List <MySqlInstance>();

            foreach (XmlNode instanceNode in mySqlInstancesListDoc.DocumentElement.ChildNodes)
            {
                if (instanceNode.Attributes == null || instanceNode.Attributes.Count == 0)
                {
                    continue;
                }

                var instance = new MySqlInstance
                {
                    HostName = instanceNode.Attributes["HostName"].Value
                };
                if (bool.TryParse(instanceNode.Attributes["MonitorAndNotifyStatus"].Value, out var parsedMonitorAndNotifyStatus))
                {
                    instance.MonitorAndNotifyStatus = parsedMonitorAndNotifyStatus;
                }

                if (uint.TryParse(instanceNode.Attributes["MonitoringInterval"].Value, out var parsedInterval))
                {
                    instance.MonitoringInterval = parsedInterval;
                }

                if (Enum.TryParse(instanceNode.Attributes["MonitoringIntervalUnitOfMeasure"].Value, out TimeUtilities.IntervalUnitOfMeasure parsedIntervalUnitOfMeasure))
                {
                    instance.MonitoringIntervalUnitOfMeasure = parsedIntervalUnitOfMeasure;
                }

                if (uint.TryParse(instanceNode.Attributes["Port"].Value, out var parsedPort))
                {
                    instance.Port = parsedPort;
                }

                if (bool.TryParse(instanceNode.Attributes["UpdateTrayIconOnStatusChange"].Value, out var parsedUpdateTrayIconOnStatusChange))
                {
                    instance.UpdateTrayIconOnStatusChange = parsedUpdateTrayIconOnStatusChange;
                }

                instance.WorkbenchConnectionId = instanceNode.Attributes["WorkbenchConnectionId"].Value;
                temporaryInstancesList.Add(instance);
            }

            if (temporaryInstancesList.Count == 0)
            {
                return;
            }

            Settings.Default.MySQLInstancesList = temporaryInstancesList;
            Settings.Default.Save();
        }