/// <summary> /// Refreshes the DB objects list control with current objects in the connected schema. /// </summary> /// <param name="reloadFromServer">Flag indicating whether DB objects must be reloaded from the connected MySQL server.</param> private bool RefreshDbObjectsList(bool reloadFromServer) { if (DBObjectList.HeaderNodes.Count < 3) { return(false); } bool success = true; try { // Avoids flickering of DB Objects lists while adding the items to it. DBObjectList.BeginUpdate(); DBObjectList.ClearChildNodes(); if (reloadFromServer) { LoadTables(); LoadViews(); LoadProcedures(); } // Refresh Tables foreach (var dbTable in LoadedTables.Where(table => string.IsNullOrEmpty(Filter) || table.Name.ToUpper().Contains(Filter))) { var node = DBObjectList.AddDbObjectNode(DBObjectList.HeaderNodes[0], dbTable); dbTable.Selected = false; node.ImageIndex = 0; } // Refresh Views foreach (var dbView in LoadedViews.Where(view => string.IsNullOrEmpty(Filter) || view.Name.ToUpper().Contains(Filter))) { var node = DBObjectList.AddDbObjectNode(DBObjectList.HeaderNodes[1], dbView); dbView.Selected = false; node.ImageIndex = 1; } // Refresh Procedures foreach (var dbProcedure in LoadedProcedures.Where(procedure => string.IsNullOrEmpty(Filter) || procedure.Name.ToUpper().Contains(Filter))) { var node = DBObjectList.AddDbObjectNode(DBObjectList.HeaderNodes[2], dbProcedure); dbProcedure.Selected = false; node.ImageIndex = 2; } DBObjectList.ExpandAll(); DBObjectList.Nodes[0].EnsureVisible(); // Avoids flickering of DB Objects lists while adding the items to it. DBObjectList.EndUpdate(); DBObjectList_AfterSelect(null, null); } catch (Exception ex) { success = false; MiscUtilities.ShowCustomizedErrorDialog(Resources.RefreshDBObjectsErrorTitle, ex.Message, true); MySqlSourceTrace.WriteAppErrorToLog(ex); } return(success); }