/// <summary> /// Добавление таблицы в группу. Если таблица уже есть в группе ничего не происходит /// </summary> /// <param name="group">Ссылка на группу</param> /// <param name="table">Ссылка на таблицу</param> /// <pparam name="index">Новая позиция</pparam> protected virtual void MGroupAddTable(AbsM.IGroupM group, AbsM.ILayerM table, int?index = null) { var pgGroup = group as AbsM.GroupM; if (pgGroup == null) { return; } var tables = AbsM.GroupM.GetTables(pgGroup); if (!group.Tables.Contains(table)) { if (index == null) { tables.Add(table); } else { if (index <= tables.Count) { tables.Insert(index.Value, table); } else { Debug.Fail("Неправильно указан индекс", "AddTableIntoGroup"); } } } }
/// <summary> /// Изменяет позицию таблицы в группе. /// Не чего не происходит если: /// Таблицы нет или позиция совпадает с текущей /// </summary> /// <param name="group">Ссылка на группу</param> /// <param name="table">Ссылка на таблицу</param> /// <param name="index">Новая позиция</param> protected virtual void MGroupMoveTable(AbsM.IGroupM group, AbsM.ILayerM table, int index) { var pgGroup = group as AbsM.GroupM; if (pgGroup == null) { return; } var tables = AbsM.GroupM.GetTables(pgGroup); if (group.Tables.Contains(table)) { int old_index = tables.IndexOf(table); if (old_index != index) { if (index < tables.Count) { tables.Move(old_index, index); } else { Debug.Fail("Неправильно указан индекс", "MoveTableIntoGroup"); } } } }
/// <summary> /// Удаление таблицы из группы. Если таблицы нет в группе ничего не происходит /// </summary> /// <param name="group">Ссылка на группу</param> /// <param name="table">Ссылка на таблицу</param> protected virtual void MGroupRemoveTable(AbsM.IGroupM group, AbsM.ILayerM table) { var pgGroup = group as AbsM.GroupM; if (pgGroup == null) { return; } var tables = AbsM.GroupM.GetTables(pgGroup); if (group.Tables.Contains(table)) { tables.Remove(table); } }