override public Editor.ITreeViewItem Replace(object child, object copyObject) { TechObject techObject = child as TechObject; if (copyObject is TechObject && techObject != null) { int newN = techObject.TechNumber; //Старый и новый номер объекта - для замены в ограничениях int oldObjN = GetTechObjectN(copyObject as TechObject); int newObjN = GetTechObjectN(child as TechObject); TechObject newObject = (copyObject as TechObject).Clone( GetTechObjectN, newN, oldObjN, newObjN); int index = objects.IndexOf(techObject); objects.Remove(techObject); objects.Insert(index, newObject); index = objects.IndexOf(newObject); newObject.ChangeCrossRestriction(techObject); return(newObject); } return(null); }
override public Editor.ITreeViewItem InsertCopy(object obj) { if (obj is TechObject) { int newN = 1; if (objects.Count > 0) { newN = objects[objects.Count - 1].TechNumber + 1; } //Старый и новый номер объекта - для замены в ограничениях int oldObjN = GetTechObjectN(obj as TechObject); int newObjN = objects.Count + 1; TechObject newObject = (obj as TechObject).Clone( GetTechObjectN, newN, oldObjN, newObjN); objects.Add(newObject); newObject.ChangeCrossRestriction(); newObject.Equipment.ModifyDevNames(); return(newObject); } return(null); }
override public ITreeViewItem Replace(object child, object copyObject) { var techObject = child as TechObject; var copiedObject = copyObject as TechObject; bool objectsNotNull = copiedObject != null && techObject != null; bool sameBaseObjectName = copiedObject.BaseTechObject.Name == baseTechObject.Name; if (objectsNotNull && sameBaseObjectName) { int newNum = techObject.TechNumber; //Старый и новый номер объекта - для замены в ограничениях int oldObjNum = globalObjectsList .IndexOf(copyObject as TechObject) + 1; int newObjNum = globalObjectsList .IndexOf(child as TechObject) + 1; TechObject newObject = (copyObject as TechObject).Clone( GetTechObjectLocalNum, newNum, oldObjNum, newObjNum); // Работа со списком в дереве int localIndex = objects.IndexOf(techObject); objects.Remove(techObject); objects.Insert(localIndex, newObject); // Глобальный список объектов int globalIndex = globalObjectsList.IndexOf(techObject); globalObjectsList.Remove(techObject); globalObjectsList.Insert(globalIndex, newObject); // Для корректного копирования ограничений newObject.ChangeCrossRestriction(techObject); newObject.AddParent(this); return(newObject); } return(null); }