CatalogPartChrome.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 / fx / src / xsp / System / Web / UI / WebParts / CatalogPartChrome.cs / 1305376 / CatalogPartChrome.cs

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

namespace System.Web.UI.WebControls.WebParts { 
 
    using System;
    using System.Collections; 
    using System.ComponentModel;
    using System.Drawing;
    using System.Globalization;
    using System.Web; 
    using System.Web.UI;
    using System.Web.UI.WebControls; 
 
    public class CatalogPartChrome {
 
        private CatalogZoneBase _zone;

        // PERF: Cache these, since they are needed for every CatalogPart in the zone
        private Page _page; 
        private Style _chromeStyleWithBorder;
        private Style _chromeStyleNoBorder; 
 
        public CatalogPartChrome(CatalogZoneBase zone) {
            if (zone == null) { 
                throw new ArgumentNullException("zone");
            }
            _zone = zone;
            _page = zone.Page; 
        }
 
        protected CatalogZoneBase Zone { 
            get {
                return _zone; 
            }
        }

        protected virtual Style CreateCatalogPartChromeStyle(CatalogPart catalogPart, PartChromeType chromeType) { 
            if (catalogPart == null) {
                throw new ArgumentNullException("catalogPart"); 
            } 
            if ((chromeType < PartChromeType.Default) || (chromeType > PartChromeType.BorderOnly)) {
                throw new ArgumentOutOfRangeException("chromeType"); 
            }

            if (chromeType == PartChromeType.BorderOnly || chromeType == PartChromeType.TitleAndBorder) {
                if (_chromeStyleWithBorder == null) { 
                    Style style = new Style();
                    style.CopyFrom(Zone.PartChromeStyle); 
 
                    if (style.BorderStyle == BorderStyle.NotSet) {
                        style.BorderStyle = BorderStyle.Solid; 
                    }
                    if (style.BorderWidth == Unit.Empty) {
                        style.BorderWidth = Unit.Pixel(1);
                    } 
                    if (style.BorderColor == Color.Empty) {
                        style.BorderColor = Color.Black; 
                    } 

                    _chromeStyleWithBorder = style; 
                }
                return _chromeStyleWithBorder;
            }
            else { 
                if (_chromeStyleNoBorder == null) {
                    Style style = new Style(); 
                    style.CopyFrom(Zone.PartChromeStyle); 

                    if (style.BorderStyle != BorderStyle.NotSet) { 
                        style.BorderStyle = BorderStyle.NotSet;
                    }
                    if (style.BorderWidth != Unit.Empty) {
                        style.BorderWidth = Unit.Empty; 
                    }
                    if (style.BorderColor != Color.Empty) { 
                        style.BorderColor = Color.Empty; 
                    }
 
                    _chromeStyleNoBorder = style;
                }
                return _chromeStyleNoBorder;
            } 
        }
 
        public virtual void PerformPreRender() { 
        }
 
        public virtual void RenderCatalogPart(HtmlTextWriter writer, CatalogPart catalogPart) {
            if (catalogPart == null) {
                throw new ArgumentNullException("catalogPart");
            } 

            PartChromeType chromeType = Zone.GetEffectiveChromeType(catalogPart); 
            Style partChromeStyle = CreateCatalogPartChromeStyle(catalogPart, chromeType); 

            // 
            if (!partChromeStyle.IsEmpty) {
                partChromeStyle.AddAttributesToRender(writer, Zone);
            }
            writer.AddAttribute(HtmlTextWriterAttribute.Cellspacing, "0"); 
            // Use CellPadding=2 to match WebPartChrome (VSWhidbey 324397)
            writer.AddAttribute(HtmlTextWriterAttribute.Cellpadding, "2"); 
            writer.AddAttribute(HtmlTextWriterAttribute.Border, "0"); 

            writer.AddStyleAttribute(HtmlTextWriterStyle.Width, "100%"); 

            writer.RenderBeginTag(HtmlTextWriterTag.Table);

            if (chromeType == PartChromeType.TitleOnly || chromeType == PartChromeType.TitleAndBorder) { 
                writer.RenderBeginTag(HtmlTextWriterTag.Tr);
 
                // Can apply PartTitleStyle directly, since the title bar doesn't contain a nested table 
                Style partTitleStyle = Zone.PartTitleStyle;
                if (!partTitleStyle.IsEmpty) { 
                    partTitleStyle.AddAttributesToRender(writer, Zone);
                }
                writer.RenderBeginTag(HtmlTextWriterTag.Td);
 
                RenderTitle(writer, catalogPart);
 
                writer.RenderEndTag();  // Td 
                writer.RenderEndTag();  // Tr
            } 

            if (catalogPart.ChromeState != PartChromeState.Minimized) {
                writer.RenderBeginTag(HtmlTextWriterTag.Tr);
                Style partStyle = Zone.PartStyle; 
                if (!partStyle.IsEmpty) {
                    partStyle.AddAttributesToRender(writer, Zone); 
                } 

                // For now, I don't think we should render extra padding here.  People writing custom 
                // CatalogParts can add a margin to their contents if they want it.  This is not the
                // same as the WebPartChrome case, since for WebParts we allow people to use ServerControls,
                // that will likely not have a margin.  (VSWhidbey 324397)
                // writer.AddStyleAttribute(HtmlTextWriterStyle.Padding, "5px"); 

                writer.RenderBeginTag(HtmlTextWriterTag.Td); 
 
                //
                RenderPartContents(writer, catalogPart); 

                RenderItems(writer, catalogPart);

                writer.RenderEndTag();  // Td 
                writer.RenderEndTag();  // Tr
            } 
 
            writer.RenderEndTag();  // Table
        } 

        private void RenderItem(HtmlTextWriter writer, WebPartDescription webPartDescription) {
            string description = webPartDescription.Description;
            if (String.IsNullOrEmpty(description)) { 
                description = webPartDescription.Title;
            } 
 
            RenderItemCheckBox(writer, webPartDescription.ID);
 
            writer.Write(" ");

            if (Zone.ShowCatalogIcons) {
                string icon = webPartDescription.CatalogIconImageUrl; 
                if (!String.IsNullOrEmpty(icon)) {
                    RenderItemIcon(writer, icon, description); 
                    writer.Write(" "); 
                }
            } 

            RenderItemText(writer, webPartDescription.ID, webPartDescription.Title, description);

            writer.WriteBreak(); 
        }
 
        private void RenderItemCheckBox(HtmlTextWriter writer, string value) { 
            Zone.EditUIStyle.AddAttributesToRender(writer, Zone);
            writer.AddAttribute(HtmlTextWriterAttribute.Type, "checkbox"); 
            writer.AddAttribute(HtmlTextWriterAttribute.Id, Zone.GetCheckBoxID(value));
            writer.AddAttribute(HtmlTextWriterAttribute.Name, Zone.CheckBoxName);
            writer.AddAttribute(HtmlTextWriterAttribute.Value, value);
            writer.RenderBeginTag(HtmlTextWriterTag.Input); 
            writer.RenderEndTag();  // Input
 
            if (_page != null) { 
                _page.ClientScript.RegisterForEventValidation(Zone.CheckBoxName);
            } 
        }

        private void RenderItemIcon(HtmlTextWriter writer, string iconUrl, string description) {
            System.Web.UI.WebControls.Image img = new System.Web.UI.WebControls.Image(); 
            img.AlternateText = description;
 
            // 
            img.ImageUrl = iconUrl;
            img.BorderStyle = BorderStyle.None; 
            img.Page = _page;
            img.RenderControl(writer);
        }
 
        private void RenderItemText(HtmlTextWriter writer, string value, string text, string description) {
            Zone.LabelStyle.AddAttributesToRender(writer, Zone); 
            writer.AddAttribute(HtmlTextWriterAttribute.For, Zone.GetCheckBoxID(value)); 
            writer.AddAttribute(HtmlTextWriterAttribute.Title, description, true /* fEncode */);
            writer.RenderBeginTag(HtmlTextWriterTag.Label); 
            writer.WriteEncodedText(text);
            writer.RenderEndTag();
        }
 
        private void RenderItems(HtmlTextWriter writer, CatalogPart catalogPart) {
            WebPartDescriptionCollection availableWebParts = catalogPart.GetAvailableWebPartDescriptions(); 
 
            if (availableWebParts != null) {
                foreach (WebPartDescription webPartDescription in availableWebParts) { 
                    RenderItem(writer, webPartDescription);
                }
            }
        } 

        protected virtual void RenderPartContents(HtmlTextWriter writer, CatalogPart catalogPart) { 
            if (catalogPart == null) { 
                throw new ArgumentNullException("catalogPart");
            } 
            catalogPart.RenderControl(writer);
        }

        private void RenderTitle(HtmlTextWriter writer, CatalogPart catalogPart) { 
            Label label = new Label();
            label.Text = catalogPart.DisplayTitle; 
            label.ToolTip = catalogPart.Description; 
            label.Page = _page;
            label.RenderControl(writer); 
        }
    }
}
 

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

namespace System.Web.UI.WebControls.WebParts { 
 
    using System;
    using System.Collections; 
    using System.ComponentModel;
    using System.Drawing;
    using System.Globalization;
    using System.Web; 
    using System.Web.UI;
    using System.Web.UI.WebControls; 
 
    public class CatalogPartChrome {
 
        private CatalogZoneBase _zone;

        // PERF: Cache these, since they are needed for every CatalogPart in the zone
        private Page _page; 
        private Style _chromeStyleWithBorder;
        private Style _chromeStyleNoBorder; 
 
        public CatalogPartChrome(CatalogZoneBase zone) {
            if (zone == null) { 
                throw new ArgumentNullException("zone");
            }
            _zone = zone;
            _page = zone.Page; 
        }
 
        protected CatalogZoneBase Zone { 
            get {
                return _zone; 
            }
        }

        protected virtual Style CreateCatalogPartChromeStyle(CatalogPart catalogPart, PartChromeType chromeType) { 
            if (catalogPart == null) {
                throw new ArgumentNullException("catalogPart"); 
            } 
            if ((chromeType < PartChromeType.Default) || (chromeType > PartChromeType.BorderOnly)) {
                throw new ArgumentOutOfRangeException("chromeType"); 
            }

            if (chromeType == PartChromeType.BorderOnly || chromeType == PartChromeType.TitleAndBorder) {
                if (_chromeStyleWithBorder == null) { 
                    Style style = new Style();
                    style.CopyFrom(Zone.PartChromeStyle); 
 
                    if (style.BorderStyle == BorderStyle.NotSet) {
                        style.BorderStyle = BorderStyle.Solid; 
                    }
                    if (style.BorderWidth == Unit.Empty) {
                        style.BorderWidth = Unit.Pixel(1);
                    } 
                    if (style.BorderColor == Color.Empty) {
                        style.BorderColor = Color.Black; 
                    } 

                    _chromeStyleWithBorder = style; 
                }
                return _chromeStyleWithBorder;
            }
            else { 
                if (_chromeStyleNoBorder == null) {
                    Style style = new Style(); 
                    style.CopyFrom(Zone.PartChromeStyle); 

                    if (style.BorderStyle != BorderStyle.NotSet) { 
                        style.BorderStyle = BorderStyle.NotSet;
                    }
                    if (style.BorderWidth != Unit.Empty) {
                        style.BorderWidth = Unit.Empty; 
                    }
                    if (style.BorderColor != Color.Empty) { 
                        style.BorderColor = Color.Empty; 
                    }
 
                    _chromeStyleNoBorder = style;
                }
                return _chromeStyleNoBorder;
            } 
        }
 
        public virtual void PerformPreRender() { 
        }
 
        public virtual void RenderCatalogPart(HtmlTextWriter writer, CatalogPart catalogPart) {
            if (catalogPart == null) {
                throw new ArgumentNullException("catalogPart");
            } 

            PartChromeType chromeType = Zone.GetEffectiveChromeType(catalogPart); 
            Style partChromeStyle = CreateCatalogPartChromeStyle(catalogPart, chromeType); 

            // 
            if (!partChromeStyle.IsEmpty) {
                partChromeStyle.AddAttributesToRender(writer, Zone);
            }
            writer.AddAttribute(HtmlTextWriterAttribute.Cellspacing, "0"); 
            // Use CellPadding=2 to match WebPartChrome (VSWhidbey 324397)
            writer.AddAttribute(HtmlTextWriterAttribute.Cellpadding, "2"); 
            writer.AddAttribute(HtmlTextWriterAttribute.Border, "0"); 

            writer.AddStyleAttribute(HtmlTextWriterStyle.Width, "100%"); 

            writer.RenderBeginTag(HtmlTextWriterTag.Table);

            if (chromeType == PartChromeType.TitleOnly || chromeType == PartChromeType.TitleAndBorder) { 
                writer.RenderBeginTag(HtmlTextWriterTag.Tr);
 
                // Can apply PartTitleStyle directly, since the title bar doesn't contain a nested table 
                Style partTitleStyle = Zone.PartTitleStyle;
                if (!partTitleStyle.IsEmpty) { 
                    partTitleStyle.AddAttributesToRender(writer, Zone);
                }
                writer.RenderBeginTag(HtmlTextWriterTag.Td);
 
                RenderTitle(writer, catalogPart);
 
                writer.RenderEndTag();  // Td 
                writer.RenderEndTag();  // Tr
            } 

            if (catalogPart.ChromeState != PartChromeState.Minimized) {
                writer.RenderBeginTag(HtmlTextWriterTag.Tr);
                Style partStyle = Zone.PartStyle; 
                if (!partStyle.IsEmpty) {
                    partStyle.AddAttributesToRender(writer, Zone); 
                } 

                // For now, I don't think we should render extra padding here.  People writing custom 
                // CatalogParts can add a margin to their contents if they want it.  This is not the
                // same as the WebPartChrome case, since for WebParts we allow people to use ServerControls,
                // that will likely not have a margin.  (VSWhidbey 324397)
                // writer.AddStyleAttribute(HtmlTextWriterStyle.Padding, "5px"); 

                writer.RenderBeginTag(HtmlTextWriterTag.Td); 
 
                //
                RenderPartContents(writer, catalogPart); 

                RenderItems(writer, catalogPart);

                writer.RenderEndTag();  // Td 
                writer.RenderEndTag();  // Tr
            } 
 
            writer.RenderEndTag();  // Table
        } 

        private void RenderItem(HtmlTextWriter writer, WebPartDescription webPartDescription) {
            string description = webPartDescription.Description;
            if (String.IsNullOrEmpty(description)) { 
                description = webPartDescription.Title;
            } 
 
            RenderItemCheckBox(writer, webPartDescription.ID);
 
            writer.Write(" ");

            if (Zone.ShowCatalogIcons) {
                string icon = webPartDescription.CatalogIconImageUrl; 
                if (!String.IsNullOrEmpty(icon)) {
                    RenderItemIcon(writer, icon, description); 
                    writer.Write(" "); 
                }
            } 

            RenderItemText(writer, webPartDescription.ID, webPartDescription.Title, description);

            writer.WriteBreak(); 
        }
 
        private void RenderItemCheckBox(HtmlTextWriter writer, string value) { 
            Zone.EditUIStyle.AddAttributesToRender(writer, Zone);
            writer.AddAttribute(HtmlTextWriterAttribute.Type, "checkbox"); 
            writer.AddAttribute(HtmlTextWriterAttribute.Id, Zone.GetCheckBoxID(value));
            writer.AddAttribute(HtmlTextWriterAttribute.Name, Zone.CheckBoxName);
            writer.AddAttribute(HtmlTextWriterAttribute.Value, value);
            writer.RenderBeginTag(HtmlTextWriterTag.Input); 
            writer.RenderEndTag();  // Input
 
            if (_page != null) { 
                _page.ClientScript.RegisterForEventValidation(Zone.CheckBoxName);
            } 
        }

        private void RenderItemIcon(HtmlTextWriter writer, string iconUrl, string description) {
            System.Web.UI.WebControls.Image img = new System.Web.UI.WebControls.Image(); 
            img.AlternateText = description;
 
            // 
            img.ImageUrl = iconUrl;
            img.BorderStyle = BorderStyle.None; 
            img.Page = _page;
            img.RenderControl(writer);
        }
 
        private void RenderItemText(HtmlTextWriter writer, string value, string text, string description) {
            Zone.LabelStyle.AddAttributesToRender(writer, Zone); 
            writer.AddAttribute(HtmlTextWriterAttribute.For, Zone.GetCheckBoxID(value)); 
            writer.AddAttribute(HtmlTextWriterAttribute.Title, description, true /* fEncode */);
            writer.RenderBeginTag(HtmlTextWriterTag.Label); 
            writer.WriteEncodedText(text);
            writer.RenderEndTag();
        }
 
        private void RenderItems(HtmlTextWriter writer, CatalogPart catalogPart) {
            WebPartDescriptionCollection availableWebParts = catalogPart.GetAvailableWebPartDescriptions(); 
 
            if (availableWebParts != null) {
                foreach (WebPartDescription webPartDescription in availableWebParts) { 
                    RenderItem(writer, webPartDescription);
                }
            }
        } 

        protected virtual void RenderPartContents(HtmlTextWriter writer, CatalogPart catalogPart) { 
            if (catalogPart == null) { 
                throw new ArgumentNullException("catalogPart");
            } 
            catalogPart.RenderControl(writer);
        }

        private void RenderTitle(HtmlTextWriter writer, CatalogPart catalogPart) { 
            Label label = new Label();
            label.Text = catalogPart.DisplayTitle; 
            label.ToolTip = catalogPart.Description; 
            label.Page = _page;
            label.RenderControl(writer); 
        }
    }
}
 

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