TemplateEditingService.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / ndp / fx / src / Designer / WebForms / System / Web / UI / Design / TemplateEditingService.cs / 1 / TemplateEditingService.cs

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

namespace System.Web.UI.Design { 
 
    using System;
    using System.ComponentModel; 
    using System.ComponentModel.Design;
    using System.Design;
    using System.Diagnostics;
    using System.Web.UI; 
    using System.Web.UI.WebControls;
 
    ///  
    /// 
    [System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand, Flags=System.Security.Permissions.SecurityPermissionFlag.UnmanagedCode)] 
    [Obsolete("Use of this type is not recommended because template editing is handled in ControlDesigner. To support template editing expose template data in the TemplateGroups property and call SetViewFlags(ViewFlags.TemplateEditing, true). http://go.microsoft.com/fwlink/?linkid=14202")]
    public sealed class TemplateEditingService : ITemplateEditingService, IDisposable {

        private IDesignerHost designerHost; 

        ///  
        public TemplateEditingService(IDesignerHost designerHost) { 
            if (designerHost == null) {
                throw new ArgumentNullException("designerHost"); 
            }
            this.designerHost = designerHost;
        }
 
        /// 
        public bool SupportsNestedTemplateEditing { 
            get { 
                return false;
            } 
        }

        /// 
        public ITemplateEditingFrame CreateFrame(TemplatedControlDesigner designer, string frameName, string[] templateNames) { 
            return CreateFrame(designer, frameName, templateNames, null, null);
        } 
 
        /// 
        public ITemplateEditingFrame CreateFrame(TemplatedControlDesigner designer, string frameName, string[] templateNames, Style controlStyle, Style[] templateStyles) { 
            if (designer == null) {
                throw new ArgumentNullException("designer");
            }
            if ((frameName == null) || (frameName.Length == 0)) { 
                throw new ArgumentNullException("frameName");
            } 
            if ((templateNames == null) || (templateNames.Length == 0)) { 
                throw new ArgumentException("templateNames");
            } 
            if ((templateStyles != null) && (templateStyles.Length != templateNames.Length)) {
                throw new ArgumentException("templateStyles");
            }
 
            frameName = CreateFrameName(frameName);
 
            return new TemplateEditingFrame(designer, frameName, templateNames, controlStyle, templateStyles); 
        }
 
        private string CreateFrameName(string frameName) {
            Debug.Assert((frameName != null) && (frameName.Length != 0));

            // Strips out the ampersand typically used for menu mnemonics 

            int index = frameName.IndexOf('&'); 
            if (index < 0) { 
                return frameName;
            } 
            else if (index == 0) {
                return frameName.Substring(index + 1);
            }
            else { 
                return frameName.Substring(0, index) + frameName.Substring(index + 1);
            } 
        } 

        ///  
        public void Dispose() {
            Dispose(true);
            GC.SuppressFinalize(this);
        } 

        ///  
        ~TemplateEditingService() { 
            Dispose(false);
        } 

        private void Dispose(bool disposing) {
            if (disposing) {
                designerHost = null; 
            }
        } 
 
        /// 
        public string GetContainingTemplateName(Control control) { 
            string containingTemplateName = String.Empty;
            HtmlControlDesigner designer = (HtmlControlDesigner)designerHost.GetDesigner(control);

            if (designer != null) { 
                IHtmlControlDesignerBehavior behavior = designer.BehaviorInternal;
 
                NativeMethods.IHTMLElement htmlElement = (NativeMethods.IHTMLElement)behavior.DesignTimeElement; 
                if (htmlElement != null) {
                    object[] varTemplateName = new Object[1]; 
                    NativeMethods.IHTMLElement htmlelemParentNext;
                    NativeMethods.IHTMLElement htmlelemParentCur = htmlElement.GetParentElement();

                    while (htmlelemParentCur != null) { 
                        htmlelemParentCur.GetAttribute("templatename", /*lFlags*/ 0, varTemplateName);
 
                        if (varTemplateName[0] != null && varTemplateName[0].GetType() == typeof(string)) { 
                            containingTemplateName = varTemplateName[0].ToString();
                            break; 
                        }

                        htmlelemParentNext = htmlelemParentCur.GetParentElement();
                        htmlelemParentCur = htmlelemParentNext; 
                    }
                } 
            } 

            return containingTemplateName; 
        }
    }
}
 

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