Beispiel #1
0
 /// <summary>
 /// Конструктор
 /// </summary>
 public Change(SchemeChangeTypes changeType)
 {
     ChangeType    = changeType;
     Stamp         = 0;
     ChangedObject = null;
     OldObject     = null;
     ComponentID   = -1;
     ImageName     = "";
     OldImageName  = "";
 }
Beispiel #2
0
        /// <summary>
        /// Добавить изменение в историю
        /// </summary>
        public void Add(SchemeChangeTypes changeType, object changedObject, object oldKey = null)
        {
            try
            {
                lock (this)
                {
                    Change change = new Change(changeType, changedObject, oldKey);

                    switch (changeType)
                    {
                    case SchemeChangeTypes.SchemeDocChanged:
                        change.OldObject = schemeDocCopy;
                        schemeDocCopy    = (SchemeDocument)change.ChangedObject;
                        break;

                    case SchemeChangeTypes.ComponentAdded:
                        componentsCopy[change.ComponentID] = (BaseComponent)change.ChangedObject;
                        break;

                    case SchemeChangeTypes.ComponentChanged:
                        change.OldObject = componentsCopy[change.ComponentID];
                        componentsCopy[change.ComponentID] = (BaseComponent)change.ChangedObject;
                        break;

                    case SchemeChangeTypes.ComponentDeleted:
                        componentsCopy.Remove(change.ComponentID);
                        break;
                    }

                    if (addingEnabled)
                    {
                        if (currentPoint == null)
                        {
                            Point point = new Point();
                            point.Changes.Add(change);
                            AddPoint(point);
                        }
                        else
                        {
                            currentPoint.Changes.Add(change);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                log.WriteException(ex, Localization.UseRussian ?
                                   "Ошибка при добавлении изменения в историю" :
                                   "Error adding a change to the history");
            }
        }
Beispiel #3
0
        /// <summary>
        /// Конструктор
        /// </summary>
        public Change(SchemeChangeTypes changeType, object changedObject, object oldKey)
            : this(changeType)
        {
            switch (changeType)
            {
            case SchemeChangeTypes.SchemeDocChanged:
                if (changedObject is SchemeDocument)
                {
                    ChangedObject = ((SchemeDocument)changedObject).Copy();
                }
                else
                {
                    throw new ScadaException("SchemeDocument expected.");
                }
                break;

            case SchemeChangeTypes.ComponentAdded:
            case SchemeChangeTypes.ComponentChanged:
            case SchemeChangeTypes.ComponentDeleted:
                if (changedObject is BaseComponent)
                {
                    ChangedObject = ((BaseComponent)changedObject).Clone();
                    ComponentID   = ((BaseComponent)changedObject).ID;
                }
                else
                {
                    throw new ScadaException("BaseComponent expected.");
                }
                break;

            case SchemeChangeTypes.ImageAdded:
            case SchemeChangeTypes.ImageRenamed:
            case SchemeChangeTypes.ImageDeleted:
                if (changedObject is Image)
                {
                    ChangedObject = ((Image)changedObject).Copy();
                    ImageName     = ((Image)changedObject).Name;
                    OldImageName  = (oldKey as string) ?? "";
                }
                else
                {
                    throw new ScadaException("Image expected.");
                }
                break;
            }
        }
Beispiel #4
0
        /// <summary>
        /// Обработать событие изменения схемы
        /// </summary>
        private void Scheme_ItemChanged(object sender, SchemeChangeTypes changeType, object changedObject, object oldKey)
        {
            // создание объекта изменения
            Change change = new Change(changeType, changedObject, oldKey)
            {
                Stamp = ++changeStampCntr
            };

            // добавление изменения в список изменений
            lock (changes)
            {
                changes.Add(change);
            }

            // добавление изменения в историю
            History.Add(changeType, changedObject, oldKey);

            // установка признака изменений
            Modified = true;
        }
Beispiel #5
0
        private void Scheme_ItemChanged(object sender, SchemeChangeTypes changeType,
                                        object changedObject, object oldKey)
        {
            ExecuteAction(() =>
            {
                switch (changeType)
                {
                case SchemeChangeTypes.ComponentAdded:
                    // привязка события на изменение компонента
                    ((BaseComponent)changedObject).ItemChanged += Scheme_ItemChanged;

                    // добавление компонента в выпадающий список
                    cbSchComp.Items.Add(changedObject);
                    break;

                case SchemeChangeTypes.ComponentChanged:
                    // обновление текста выпадающего списка при изменении отображаемого наименования выбранного объекта
                    object selItem = cbSchComp.SelectedItem;
                    if (selItem != null)
                    {
                        string newDisplayName = selItem.ToString();
                        string oldDisplayName = cbSchComp.Text;
                        if (oldDisplayName != newDisplayName)
                        {
                            cbSchComp.Items[cbSchComp.SelectedIndex] = selItem;
                        }
                    }
                    break;

                case SchemeChangeTypes.ComponentDeleted:
                    // удаление компонента из выпадающего списка
                    cbSchComp.Items.Remove(changedObject);
                    break;
                }

                SetButtonsEnabled();
            });
        }
Beispiel #6
0
 /// <summary>
 /// Вызвать событие ItemChanged.
 /// </summary>
 public void OnItemChanged(SchemeChangeTypes changeType, object changedObject, object oldKey = null)
 {
     ItemChanged?.Invoke(this, changeType, changedObject, oldKey);
 }