localization.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Framework / System / Windows / localization.cs / 1 / localization.cs

                            //---------------------------------------------------------------------------- 
//
// 
//    Copyright (C) Microsoft Corporation.  All rights reserved.
//  
//
// 
// Description: Localization.Comments & Localization.Attributes attached properties 
//
// History: 
//  12/4/2004: [....] Created the file
//  3/11/2005: [....] rename Loc to Localization class
//
//--------------------------------------------------------------------------- 
using System.Collections;
using System.Diagnostics; 
using MS.Internal.Globalization; 

namespace System.Windows 
{
    //
    // Note: the class name and property name must be kept in sync'ed with
    // Framework\MS\Internal\Globalization\LocalizationComments.cs file. 
    // Compiler checks for them by literal string comparisons.
    // 
    ///  
    /// Class defines attached properties for Comments and Localizability
    ///  
    public static class Localization
    {
        /// 
        /// DependencyProperty for Comments property. 
        /// 
        public static readonly DependencyProperty CommentsProperty = 
            DependencyProperty.RegisterAttached( 
                "Comments",
                typeof(string), 
                typeof(Localization)
                );

        ///  
        /// DependencyProperty for Localizability property.
        ///  
        public static readonly DependencyProperty AttributesProperty = 
            DependencyProperty.RegisterAttached(
                "Attributes", 
                typeof(string),
                typeof(Localization)
                );
 
        /// 
        /// Reads the attached property Comments from given element. 
        ///  
        /// The element from which to read the attached property.
        /// The property's value. 
        [AttachedPropertyBrowsableForType(typeof(object))]
        public static string GetComments(object element)
        {
            if (element == null) 
            {
                throw new ArgumentNullException("element"); 
            } 

            return GetValue(element, CommentsProperty); 
        }

        /// 
        /// Writes the attached property Comments to the given element. 
        /// 
        /// The element to which to write the attached property. 
        /// The property value to set 
        public static void SetComments(object element, string comments)
        { 
            if (element == null)
            {
                throw new ArgumentNullException("element");
            } 

            LocComments.ParsePropertyComments(comments); 
            SetValue(element, CommentsProperty, comments); 
        }
 
        /// 
        /// Reads the attached property Localizability from given element.
        /// 
        /// The element from which to read the attached property. 
        /// The property's value.
        [AttachedPropertyBrowsableForType(typeof(object))] 
        public static string GetAttributes(object element) 
        {
            if (element == null) 
            {
                throw new ArgumentNullException("element");
            }
 
            return GetValue(element, AttributesProperty);
        } 
 
        /// 
        /// Writes the attached property Localizability to the given element. 
        /// 
        /// The element to which to write the attached property.
        /// The property value to set
        public static void SetAttributes(object element, string attributes) 
        {
            if (element == null) 
            { 
                throw new ArgumentNullException("element");
            } 

            LocComments.ParsePropertyLocalizabilityAttributes(attributes);
            SetValue(element, AttributesProperty, attributes);
        } 

        private static string GetValue(object element, DependencyProperty property) 
        { 
            DependencyObject dependencyObject = element as DependencyObject;
            if (dependencyObject != null) 
            {
                // For DO, get the value from the property system
                return (string) dependencyObject.GetValue(property);
            } 

            // For objects, get the value from our own hashtable 
            if (property == CommentsProperty) 
            {
                lock(_commentsOnObjects.SyncRoot) 
                {
                    return (string) _commentsOnObjects[element];
                }
            } 
            else
            { 
                Debug.Assert(property == AttributesProperty); 
                lock(_attributesOnObjects.SyncRoot)
                { 
                    return (string) _attributesOnObjects[element];
                }
            }
        } 

        private static void SetValue(object element, DependencyProperty property, string value) 
        { 
            DependencyObject dependencyObject = element as DependencyObject;
            if (dependencyObject != null) 
            {
                // For DO, store the value in the property system
                dependencyObject.SetValue(property, value);
                return; 
            }
 
            // For other objects, store the value in our own hashtable 
            if (property == CommentsProperty)
            { 
                lock(_commentsOnObjects.SyncRoot)
                {
                    _commentsOnObjects[element] = value;
                } 
            }
            else 
            { 
                Debug.Assert(property == AttributesProperty);
                lock(_attributesOnObjects.SyncRoot) 
                {
                    _attributesOnObjects[element] = value;
                }
            } 
        }
 
 
        ///
        /// private storage for values set on objects 
        ///
        private static Hashtable _commentsOnObjects = new Hashtable();
        private static Hashtable _attributesOnObjects = new Hashtable();
    } 
}

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
                        

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