Ejemplo n.º 1
0
 public static void EnsureNotReadOnly(this IReadOnlyScope scope)
 {
     scope.EnsureNotNull(nameof(scope));
     //
     if (scope.IsReadOnly)
     {
         throw new EonException(FormatXResource(typeof(InvalidOperationException), "CanNotModifyObjectDueReadOnly", scope));
     }
 }
Ejemplo n.º 2
0
 // TODO: Put strings into the resources.
 //
 public static void EnsureChangeToPermanentReadOnly(this IReadOnlyScope scope, ReadOnlyStateTag newState)
 {
     scope.EnsureNotNull(nameof(scope));
     newState.EnsureNotNull(nameof(newState));
     //
     if (newState.IsReadOnly && !newState.IsPermanent)
     {
         throw new EonException(message: $"Изменение состояния доступности редактирования данного объекта согласно указанным параметрам не может быть выполнено. Возможно, объект не поддерживает такое изменение состояния доступности редактирования.{Environment.NewLine}\tОбъект:{scope.FmtStr().GNLI2()}{Environment.NewLine}\tПараметры:{newState.FmtStr().GNLI2()}");
     }
 }
Ejemplo n.º 3
0
 // TODO: Put strings into the resources.
 //
 public static void EnsurePermanentReadOnly(this IReadOnlyScope scope)
 {
     scope.EnsureNotNull(nameof(scope));
     //
     if (!scope.IsPermanentReadOnly)
     {
         throw
             new EonException(message: $"Область (компонент) не имеет устойчивой недоступности редактирования (т.е. состояние доступности редактирования этой области (компонента) потенциально может быть изменено).{Environment.NewLine}\tОбласть (компонент):{Environment.NewLine}{scope.FmtStr().GI2()}");
     }
 }
Ejemplo n.º 4
0
        protected override void OnSetReadOnly(ReadOnlyStateTag previousState, ReadOnlyStateTag newState)
        {
            this.EnsureChangeToPermanentReadOnly(newState: newState);
            //
            base.OnSetReadOnly(previousState: previousState, newState: newState);
            //
            IReadOnlyScope metadataAsReadOnlyScope = ReadDA(ref _metadataLink, considerDisposeRequest: true)?.Target.Value;

            metadataAsReadOnlyScope?.SetReadOnly(isReadOnly: newState.IsReadOnly, isPermanent: newState.IsPermanent);
        }
Ejemplo n.º 5
0
        public bool IsSubset(IReadOnlyScope scope)
        {
            if (string.IsNullOrWhiteSpace(scope.ScopeString))
            {
                return(true);
            }

            for (int i = 0; i < scope.Scopes.Count; i++)
            {
                if (scopes.IndexOf(scope.Scopes[i]) < 0)
                {
                    return(false);
                }
            }

            return(true);
        }
Ejemplo n.º 6
0
        protected override void OnSetReadOnly(ReadOnlyStateTag previousState, ReadOnlyStateTag newState)
        {
            this.EnsureChangeToPermanentReadOnly(newState: newState);
            //
            base.OnSetReadOnly(previousState, newState);
            //
            IReadOnlyScope metadataElementAsReadOnlyScope = ReadDA(ref _metadataElement, considerDisposeRequest: true);

            metadataElementAsReadOnlyScope?.SetReadOnly(isReadOnly: newState.IsReadOnly, isPermanent: newState.IsPermanent);
            //
            foreach (var childNode in EnumerateDA(ReadDA(ref _children, considerDisposeRequest: true), considerDisposeRequest: true).OfType <IReadOnlyScope>())
            {
                childNode.SetReadOnly(isReadOnly: newState.IsReadOnly, isPermanent: newState.IsPermanent);
            }
            //
            foreach (var inclusion in EnumerateDA(ReadDA(ref _inclusions, considerDisposeRequest: true), considerDisposeRequest: true).OfType <IReadOnlyScope>())
            {
                inclusion.SetReadOnly(isReadOnly: newState.IsReadOnly, isPermanent: newState.IsPermanent);
            }
        }