Example #1
0
        public virtual void CancelEdit(IUserEditable originatingObject)
        {
            if (!IsEditing || !ReferenceEquals(_originatingEditingObject, originatingObject))
            {
                return;
            }

            IsEditing = false;

            var accessor = GetTypeAccessor();

            foreach (var propertyName in GetBackupProperties())
            {
                var value = BackupValues[propertyName];
                RemoveTracker(propertyName);

                if (!IsEqualToBackup(accessor[this, propertyName], propertyName))
                {
                    accessor[this, propertyName] = value;
                }

                if (value is IUserEditable editable && GetEditableProperties().Contains(propertyName))
                {
                    editable.CancelEdit(this);
                }
            }

            UserModifiedProperties.Clear();
            IsUserModified            = false;
            _originatingEditingObject = null;
        }
Example #2
0
        public virtual void EndEdit(IUserEditable originatingObject)
        {
            if (!IsEditing || !ReferenceEquals(_originatingEditingObject, originatingObject))
            {
                return;
            }

            IsEditing = false;
            foreach (var propertyName in GetBackupProperties())
            {
                var value = PropertyHelper.GetPropertyValue(this, propertyName);

                if (GetEditableProperties().Contains(propertyName) && value is IUserEditable editable)
                {
                    RemoveTracker(propertyName);
                    editable.EndEdit(this);
                }
            }

            UserModifiedProperties.Clear();
            IsUserModified = false;


            _originatingEditingObject = null;
        }
Example #3
0
        public void CancelEdit(IUserEditable originatingObject)
        {
            if (!IsEditing || !ReferenceEquals(_originatingEditingObject, originatingObject))
            {
                return;
            }

            IsUserModified = false;
            IsEditing      = false;

            foreach (var i in this.Union(_backupValues))
            {
                i.PropertyChanged -= _sharedPropertyChangedEventHandler;
                i.CancelEdit(this);
            }


            this.SynchronizeCollection(_backupValues);


            foreach (var i in this)
            {
                i.CancelEdit(this);
            }

            _originatingEditingObject = null;
        }
        public override void BeginEdit(IUserEditable originatingObject)
        {
            if (!IsEditing)
            {
                _lastCharacteristicsUserModifiedValue = false;
                _lastTypesUserModifiedValue           = false;
            }


            base.BeginEdit(originatingObject);
        }
Example #5
0
        public void BeginEdit(IUserEditable originatingObject)
        {
            _backupValues             = new List <T>(this);
            IsUserModified            = false;
            IsEditing                 = true;
            _originatingEditingObject = originatingObject;
            _userModifiedItems.Clear();

            foreach (var i in this)
            {
                i.BeginEdit(this);
                i.PropertyChanged += _sharedPropertyChangedEventHandler;
            }
        }
Example #6
0
        public void EndEdit(IUserEditable originatingObject)
        {
            if (!IsEditing || !ReferenceEquals(_originatingEditingObject, originatingObject))
            {
                return;
            }
            IsUserModified = false;
            IsEditing      = false;
            foreach (var i in this)
            {
                i.PropertyChanged -= _sharedPropertyChangedEventHandler;
                i.EndEdit(this);
            }

            _originatingEditingObject = null;
        }
Example #7
0
        public virtual void BeginEdit(IUserEditable originatingObject)
        {
            if (IsEditing)
            {
                return;
            }
            IsUserModified            = false;
            IsEditing                 = true;
            _originatingEditingObject = originatingObject;

            var accessor = GetTypeAccessor();

            foreach (var propertyName in GetBackupProperties())
            {
                var value = accessor[this, propertyName];
                BackupValues[propertyName] = value;

                if (GetEditableProperties().Contains(propertyName) && value is IUserEditable editable)
                {
                    editable.BeginEdit(this);
                    ApplyTracker(propertyName, value);
                }
            }
        }