StyleReferenceConverter.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / MIT / System / Web / UI / MobileControls / Design / Converters / StyleReferenceConverter.cs / 1305376 / StyleReferenceConverter.cs

                            //------------------------------------------------------------------------------ 
// 
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// 
//----------------------------------------------------------------------------- 

namespace System.Web.UI.Design.MobileControls.Converters 
{ 
    using System.Diagnostics;
    using System.Collections; 
    using System.Globalization;
    using System.ComponentModel;
    using System.Web.UI.MobileControls;
    using System.Web.UI.Design.MobileControls.Adapters; 
    using System.Web.UI.Design.MobileControls.Util;
 
    ///  
    ///    
    ///       Can filter and retrieve several types of values from controls. 
    ///    
    /// 
    [
        System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand, 
        Flags=System.Security.Permissions.SecurityPermissionFlag.UnmanagedCode)
    ] 
    [Obsolete("The System.Web.Mobile.dll assembly has been deprecated and should no longer be used. For information about how to develop ASP.NET mobile applications, see http://go.microsoft.com/fwlink/?LinkId=157231.")] 
    internal class StyleReferenceConverter: StringConverter
    { 
        protected virtual Object [] GetStyles(Object instance)
        {
            StyleSheet styleSheet = null;
            Style instanceStyle = null; 

            // Remember, ChoicePropertyFilter is a MobileControl, so we must 
            // check for ChoicePropertyFilter first... 
            if (instance is IDeviceSpecificChoiceDesigner)
            { 
                instance = ((IDeviceSpecificChoiceDesigner)instance).UnderlyingObject;
            }

            if (instance is System.Web.UI.MobileControls.Style) 
            {
                instanceStyle = (Style) instance; 
                if (instanceStyle.Control is StyleSheet) 
                {
                    styleSheet = (StyleSheet) instanceStyle.Control; 
                }
                else if ((instanceStyle.Control is Form && instanceStyle is PagerStyle) ||
                    (instanceStyle.Control is ObjectList))
                { 
                    if (instanceStyle.Control.MobilePage != null)
                    { 
                        styleSheet = instanceStyle.Control.MobilePage.StyleSheet; 
                    }
                    else 
                    {
                        return null;
                    }
                } 
                else
                { 
                    Debug.Fail("Unsupported objects passed in"); 
                }
            } 
            else if (instance is System.Web.UI.MobileControls.MobileControl)
            {
                MobileControl control = (MobileControl)instance;
                if (control.MobilePage == null) 
                {
                    return null; 
                } 
                styleSheet = control.MobilePage.StyleSheet;
            } 
            else if (instance is Array)
            {
                Array array = (Array)instance;
                Debug.Assert(array.Length > 0); 

                return GetStyles(array.GetValue(0)); 
            } 
            else
            { 
                Debug.Fail("Unsupported type passed in");
                return null;
            }
            Debug.Assert(null != styleSheet); 

            ICollection styles = styleSheet.Styles; 
            ArrayList styleArray = new ArrayList(); 
            foreach (String key in styles)
            { 
                System.Web.UI.MobileControls.Style style = styleSheet[key];
                if (style.Name != null && style.Name.Length > 0)
                {
                    if (null == instanceStyle || 0 != String.Compare(instanceStyle.Name, style.Name, StringComparison.Ordinal)) 
                    {
                        styleArray.Add(style.Name); 
                    } 
                }
            } 

            if (styleSheet == StyleSheet.Default)
            {
                styleArray.Sort(); 
                return styleArray.ToArray();
            } 
 
            styles = StyleSheet.Default.Styles;
            foreach (String key in styles) 
            {
                System.Web.UI.MobileControls.Style style = StyleSheet.Default[key];
                if (style.Name != null && style.Name.Length > 0)
                { 
                    if (null == instanceStyle || 0 != String.Compare(instanceStyle.Name, style.Name, StringComparison.Ordinal))
                    { 
                        styleArray.Add(style.Name); 
                    }
                } 
            }

            if (styleArray.Count <= 1)
            { 
                return styleArray.ToArray();
            } 
 
            styleArray.Sort();
            String preID = ((String)styleArray[0]).ToLower(CultureInfo.InvariantCulture); 

            int i = 1;
            while (i < styleArray.Count)
            { 
                if (String.Equals((String)styleArray[i], preID, StringComparison.OrdinalIgnoreCase)) {
                    styleArray.RemoveAt(i); 
                } 
                else
                { 
                    preID = ((String)styleArray[i]).ToLower(CultureInfo.InvariantCulture);
                    i++;
                }
            } 

            return styleArray.ToArray(); 
        } 

        ///  
        ///    
        ///       Returns a collection of standard values retrieved from the context specified
        ///       by the specified type descriptor.
        ///     
        /// 
        ///  
        ///    A type descriptor that specifies the location of the context to convert from. 
        /// 
        ///  
        ///    
        ///       A StandardValuesCollection that represents the standard values collected from
        ///       the specified context.
        ///     
        /// 
        public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context) 
        { 
            if (context == null || context.Instance == null)
            { 
                return null;
            }

            Object [] objValues = GetStyles(context.Instance); 
            if (objValues != null)
            { 
                return new StandardValuesCollection(objValues); 
            }
            else 
            {
                return null;
            }
        } 

        ///  
        ///     
        ///       Gets whether
        ///       or not the context specified contains exclusive standard values. 
        ///    
        /// 
        /// 
        ///    A type descriptor that indicates the context to convert from. 
        /// 
        ///  
        ///     
        ///     if the specified context contains exclusive standard
        ///       values, otherwise . 
        ///    
        /// 
        public override bool GetStandardValuesExclusive(ITypeDescriptorContext context)
        { 
            return false;
        } 
 
        /// 
        ///     
        ///       Gets whether or not the specified context contains supported standard
        ///       values.
        ///    
        ///  
        /// 
        ///    A type descriptor that indicates the context to convert from. 
        ///  
        /// 
        ///     
        ///     if the specified context conatins supported standard
        ///       values, otherwise .
        ///    
        ///  
        public override bool GetStandardValuesSupported(ITypeDescriptorContext context)
        { 
            return true; 
        }
    } 
}

// 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