PropertyState.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / Tools / System.Activities.Presentation / System / Activities / Presentation / Base / Core / Internal / PropertyEditing / State / PropertyState.cs / 1305376 / PropertyState.cs

                            //---------------------------------------------------------------- 
// Copyright (c) Microsoft Corporation.  All rights reserved.
//---------------------------------------------------------------
namespace System.Activities.Presentation.Internal.PropertyEditing.State
{ 
    using System;
    using System.Diagnostics; 
    using System.Diagnostics.CodeAnalysis; 
    using System.Runtime;
 
    // 
    // Simple state object that knows how to remember state for a single property.
    // The only thing it currently remembers is whether the property's sub-properties
    // are expanded or collapsed. 
    // 
    internal class PropertyState : PersistedState 
    { 

        private const bool DefaultSubPropertiesExpanded = false; 

        private string _propertyName;
        private bool _subPropertiesExpanded = DefaultSubPropertiesExpanded;
 
        // 
        // Basic ctor 
        //  
        // Property to wrap around
        [SuppressMessage("Microsoft.Performance", "CA1805:DoNotInitializeUnnecessarily")] 
        public PropertyState(string propertyName)
        {
            Fx.Assert(!string.IsNullOrEmpty(propertyName), "Expected a full property name");
            _propertyName = propertyName; 
        }
 
        //  
        // We key these state objects by their property names
        //  
        public override object Key
        {
            get { return _propertyName; }
        } 

        //  
        // Returns true if any of the contained values differ from the default 
        // 
        public override bool IsSignificant 
        {
            get { return _subPropertiesExpanded != DefaultSubPropertiesExpanded; }
        }
 
        // 
        // Gets or sets a flag indicating whether the sub-properties of the contained 
        // property have been expanded or collapsed. 
        // 
        public bool SubPropertiesExpanded 
        {
            get { return _subPropertiesExpanded; }
            set { _subPropertiesExpanded = value; }
        } 

        //  
        // Serializes this object into a simple string (AppDomains like strings). 
        //
        // Format: PropertyName,SubPropertiesExpanded;NextPropertyName,SubPropertiesExpanded;... 
        // Where bools are recorded as 0 = false and 1 = true
        // 
        // Serialized version of this state object (may be null)
        protected override string SerializeCore() 
        {
            return string.Concat( 
                PersistedStateUtilities.Escape(_propertyName), 
                ',',
                PersistedStateUtilities.BoolToDigit(_subPropertiesExpanded)); 
        }

        // 
        // Attempts to deserialize a string into a PropertyState object 
        // 
        // String to deserialize 
        // Instance of PropertyState if the serialized string was valid, null otherwise. 
        public static PropertyState Deserialize(string propertyStateString)
        { 
            string[] args = propertyStateString.Split(',');
            if (args == null || args.Length != 2)
            {
                return null; 
            }
 
            bool? subPropertiesExpanded = PersistedStateUtilities.DigitToBool(args[1]); 
            if (subPropertiesExpanded == null)
            { 
                return null;
            }

            string propertyName = PersistedStateUtilities.Unescape(args[0]); 
            if (string.IsNullOrEmpty(propertyName))
            { 
                return null; 
            }
 
            PropertyState propertyState = new PropertyState(propertyName);
            propertyState.SubPropertiesExpanded = (bool)subPropertiesExpanded;
            return propertyState;
        } 
    }
} 

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//---------------------------------------------------------------- 
// Copyright (c) Microsoft Corporation.  All rights reserved.
//---------------------------------------------------------------
namespace System.Activities.Presentation.Internal.PropertyEditing.State
{ 
    using System;
    using System.Diagnostics; 
    using System.Diagnostics.CodeAnalysis; 
    using System.Runtime;
 
    // 
    // Simple state object that knows how to remember state for a single property.
    // The only thing it currently remembers is whether the property's sub-properties
    // are expanded or collapsed. 
    // 
    internal class PropertyState : PersistedState 
    { 

        private const bool DefaultSubPropertiesExpanded = false; 

        private string _propertyName;
        private bool _subPropertiesExpanded = DefaultSubPropertiesExpanded;
 
        // 
        // Basic ctor 
        //  
        // Property to wrap around
        [SuppressMessage("Microsoft.Performance", "CA1805:DoNotInitializeUnnecessarily")] 
        public PropertyState(string propertyName)
        {
            Fx.Assert(!string.IsNullOrEmpty(propertyName), "Expected a full property name");
            _propertyName = propertyName; 
        }
 
        //  
        // We key these state objects by their property names
        //  
        public override object Key
        {
            get { return _propertyName; }
        } 

        //  
        // Returns true if any of the contained values differ from the default 
        // 
        public override bool IsSignificant 
        {
            get { return _subPropertiesExpanded != DefaultSubPropertiesExpanded; }
        }
 
        // 
        // Gets or sets a flag indicating whether the sub-properties of the contained 
        // property have been expanded or collapsed. 
        // 
        public bool SubPropertiesExpanded 
        {
            get { return _subPropertiesExpanded; }
            set { _subPropertiesExpanded = value; }
        } 

        //  
        // Serializes this object into a simple string (AppDomains like strings). 
        //
        // Format: PropertyName,SubPropertiesExpanded;NextPropertyName,SubPropertiesExpanded;... 
        // Where bools are recorded as 0 = false and 1 = true
        // 
        // Serialized version of this state object (may be null)
        protected override string SerializeCore() 
        {
            return string.Concat( 
                PersistedStateUtilities.Escape(_propertyName), 
                ',',
                PersistedStateUtilities.BoolToDigit(_subPropertiesExpanded)); 
        }

        // 
        // Attempts to deserialize a string into a PropertyState object 
        // 
        // String to deserialize 
        // Instance of PropertyState if the serialized string was valid, null otherwise. 
        public static PropertyState Deserialize(string propertyStateString)
        { 
            string[] args = propertyStateString.Split(',');
            if (args == null || args.Length != 2)
            {
                return null; 
            }
 
            bool? subPropertiesExpanded = PersistedStateUtilities.DigitToBool(args[1]); 
            if (subPropertiesExpanded == null)
            { 
                return null;
            }

            string propertyName = PersistedStateUtilities.Unescape(args[0]); 
            if (string.IsNullOrEmpty(propertyName))
            { 
                return null; 
            }
 
            PropertyState propertyState = new PropertyState(propertyName);
            propertyState.SubPropertiesExpanded = (bool)subPropertiesExpanded;
            return propertyState;
        } 
    }
} 

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.

                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK