예제 #1
0
        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);
        }
예제 #2
0
        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);
        }
예제 #3
0
        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);
        }