Code:
                         / 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / xsp / System / Web / UI / WebParts / GenericWebPart.cs / 1305376 / GenericWebPart.cs
                        
                        
                            //------------------------------------------------------------------------------ 
// 
//     Copyright (c) Microsoft Corporation.  All rights reserved.
//  
//----------------------------------------------------------------------------- 
namespace System.Web.UI.WebControls.WebParts { 
 
    using System;
    using System.Collections; 
    using System.ComponentModel;
    using System.Globalization;
    using System.Web.UI;
    using System.Web.UI.WebControls; 
    using System.Web.Util;
 
    ///  
    /// A WebPart that can wrap any other generic server control, and provide it
    /// with "WebPart-ness." 
    /// 1. Implements several properties if not set on the WebPart by looking for an
    /// attribute on the contained control.
    /// 2. Implement IWebEditable to allow the PropertyGridEditorPart to tunnel-in
    /// and browse the contained control. 
    ///  
    [ 
    ToolboxItem(false) 
    ]
    public class GenericWebPart : WebPart { 
        internal const string IDPrefix = "gwp";
        private Control _childControl;
        private IWebPart _childIWebPart; 
        private string _subtitle;
 
        ///  
        /// Intializes an instance of GenericWebPart with the control it is to wrap.
        ///   
        protected internal GenericWebPart(Control control) {
            if (control == null) {
                throw new ArgumentNullException("control");
            } 
            if (control is WebPart) {
                throw new ArgumentException(SR.GetString(SR.GenericWebPart_CannotWrapWebPart), "control"); 
            } 
            if (control is BasePartialCachingControl) {
                throw new ArgumentException(SR.GetString(SR.GenericWebPart_CannotWrapOutputCachedControl), "control"); 
            }
            if (String.IsNullOrEmpty(control.ID)) {
                throw new ArgumentException(SR.GetString(SR.GenericWebPart_NoID, control.GetType().FullName));
            } 
            ID = IDPrefix + control.ID; 
            _childControl = control; 
            _childIWebPart = _childControl as IWebPart;
            CopyChildAttributes(); 
        }
        public override string CatalogIconImageUrl {
            get { 
                if (_childIWebPart != null) {
                    return _childIWebPart.CatalogIconImageUrl; 
                } 
                else {
                    return base.CatalogIconImageUrl; 
                }
            }
            set {
                if (_childIWebPart != null) { 
                    _childIWebPart.CatalogIconImageUrl = value;
                } 
                else { 
                    base.CatalogIconImageUrl = value;
                } 
            }
        }
        public Control ChildControl { 
            get {
                Debug.Assert(_childControl != null, "ChildControl cannot be null."); 
                return _childControl; 
            }
        } 
        public override string Description {
            get {
                if (_childIWebPart != null) { 
                    return _childIWebPart.Description;
                } 
                else { 
                    return base.Description;
                } 
            }
            set {
                if (_childIWebPart != null) {
                    _childIWebPart.Description = value; 
                }
                else { 
                    base.Description = value; 
                }
            } 
        }
        public override Unit Height {
            get { 
                WebControl c = ChildControl as WebControl;
                if (c != null) { 
                    return c.Height; 
                }
                else { 
                    return base.Height;
                }
            }
            set { 
                WebControl c = ChildControl as WebControl;
                if (c != null) { 
                    c.Height = value; 
                }
                else { 
                    base.Height = value;
                }
            }
        } 
        // Seal the ID property so we can set it in the constructor without an FxCop violation. 
        public sealed override string ID { 
            get {
                return base.ID; 
            }
            set {
                base.ID = value;
            } 
        }
 
        public override string Subtitle { 
            get {
                if (_childIWebPart != null) { 
                    return _childIWebPart.Subtitle;
                }
                else {
                    return (_subtitle != null ? _subtitle : String.Empty); 
                }
            } 
        } 
        public override string Title { 
            get {
                if (_childIWebPart != null) {
                    return _childIWebPart.Title;
                } 
                else {
                    return base.Title; 
                } 
            }
            set { 
                if (_childIWebPart != null) {
                    _childIWebPart.Title = value;
                }
                else { 
                    base.Title = value;
                } 
            } 
        }
 
        public override string TitleIconImageUrl {
            get {
                if (_childIWebPart != null) {
                    return _childIWebPart.TitleIconImageUrl; 
                }
                else { 
                    return base.TitleIconImageUrl; 
                }
            } 
            set {
                if (_childIWebPart != null) {
                    _childIWebPart.TitleIconImageUrl = value;
                } 
                else {
                    base.TitleIconImageUrl = value; 
                } 
            }
        } 
        public override string TitleUrl {
            get {
                if (_childIWebPart != null) { 
                    return _childIWebPart.TitleUrl;
                } 
                else { 
                    return base.TitleUrl;
                } 
            }
            set {
                if (_childIWebPart != null) {
                    _childIWebPart.TitleUrl = value; 
                }
                else { 
                    base.TitleUrl = value; 
                }
            } 
        }
        public override WebPartVerbCollection Verbs {
            get { 
                if (ChildControl != null) {
                    IWebActionable webActionableChildControl = ChildControl as IWebActionable; 
                    if (webActionableChildControl != null) { 
                        return new WebPartVerbCollection(base.Verbs, webActionableChildControl.Verbs);
                    } 
                }
                return base.Verbs;
            }
        } 
        public override object WebBrowsableObject { 
            get { 
                IWebEditable webEditableChildControl = ChildControl as IWebEditable;
                if (webEditableChildControl != null) { 
                    return webEditableChildControl.WebBrowsableObject;
                }
                else {
                    return ChildControl; 
                }
            } 
        } 
        public override Unit Width { 
            get {
                WebControl c = ChildControl as WebControl;
                if (c != null) {
                    return c.Width; 
                }
                else { 
                    return base.Width; 
                }
            } 
            set {
                WebControl c = ChildControl as WebControl;
                if (c != null) {
                    c.Width = value; 
                }
                else { 
                    base.Width = value; 
                }
            } 
        }
        private void CopyChildAttributes() {
            // Copy the attribute values from the ChildControl to the GenericWebPart properties. 
            IAttributeAccessor childAttributeAccessor = ChildControl as IAttributeAccessor;
            if (childAttributeAccessor != null) { 
                base.AuthorizationFilter = childAttributeAccessor.GetAttribute("AuthorizationFilter"); 
                base.CatalogIconImageUrl = childAttributeAccessor.GetAttribute("CatalogIconImageUrl");
                base.Description = childAttributeAccessor.GetAttribute("Description"); 
                string exportMode = childAttributeAccessor.GetAttribute("ExportMode");
                if (exportMode != null) {
                    base.ExportMode = (WebPartExportMode)(Util.GetEnumAttribute( 
                        "ExportMode", exportMode, typeof(WebPartExportMode)));
                } 
 
                // Don't need to check base.Subtitle, since we always want to use the Subtitle on the
                // ChildControl if it is present.  Also, the property is not settable on WebPart, so we 
                // know that base.Subtitle will always be String.Empty.
                _subtitle = childAttributeAccessor.GetAttribute("Subtitle");
                base.Title = childAttributeAccessor.GetAttribute("Title"); 
                base.TitleIconImageUrl = childAttributeAccessor.GetAttribute("TitleIconImageUrl");
                base.TitleUrl = childAttributeAccessor.GetAttribute("TitleUrl"); 
            } 
            // Remove all the attributes from the ChildControl, whether or not they were copied 
            // to the GenericWebPart property.  We want to remove the attributes so they are not
            // rendered on the ChildControl.  (VSWhidbey 313674)
            WebControl childWebControl = ChildControl as WebControl;
            if (childWebControl != null) { 
                // If the ChildControl is a WebControl, we want to completely remove the attributes.
                childWebControl.Attributes.Remove("AuthorizationFilter"); 
                childWebControl.Attributes.Remove("CatalogIconImageUrl"); 
                childWebControl.Attributes.Remove("Description");
                childWebControl.Attributes.Remove("ExportMode"); 
                childWebControl.Attributes.Remove("Subtitle");
                childWebControl.Attributes.Remove("Title");
                childWebControl.Attributes.Remove("TitleIconImageUrl");
                childWebControl.Attributes.Remove("TitleUrl"); 
            }
            else if (childAttributeAccessor != null) { 
                // If the ChildControl is not a WebControl, we cannot remove the attributes, so we set 
                // them to null instead.
                childAttributeAccessor.SetAttribute("AuthorizationFilter", null); 
                childAttributeAccessor.SetAttribute("CatalogIconImageUrl", null);
                childAttributeAccessor.SetAttribute("Description", null);
                childAttributeAccessor.SetAttribute("ExportMode", null);
                childAttributeAccessor.SetAttribute("Subtitle", null); 
                childAttributeAccessor.SetAttribute("Title", null);
                childAttributeAccessor.SetAttribute("TitleIconImageUrl", null); 
                childAttributeAccessor.SetAttribute("TitleUrl", null); 
            }
        } 
        protected internal override void CreateChildControls() {
            ((GenericWebPartControlCollection)Controls).AddGenericControl(ChildControl);
        } 
        protected override ControlCollection CreateControlCollection() { 
            return new GenericWebPartControlCollection(this); 
        }
 
        public override EditorPartCollection CreateEditorParts() {
            IWebEditable webEditableChildControl = ChildControl as IWebEditable;
            if (webEditableChildControl != null) {
                return new EditorPartCollection(base.CreateEditorParts(), webEditableChildControl.CreateEditorParts()); 
            }
            else { 
                return base.CreateEditorParts(); 
            }
        } 
        protected internal override void Render(HtmlTextWriter writer) {
            // Copied from CompositeControl.Render()
            if (DesignMode) { 
                EnsureChildControls();
            } 
 
            RenderContents(writer);
        } 
        private sealed class GenericWebPartControlCollection : ControlCollection {
            public GenericWebPartControlCollection(GenericWebPart owner) : base(owner) {
                SetCollectionReadOnly(SR.GenericWebPart_CannotModify); 
            }
 
            ///  
            /// Allows adding the generic control to be wrapped.
            ///   
            public void AddGenericControl(Control control) {
                string originalError = SetCollectionReadOnly(null);
                // Extra try-catch block to prevent elevation of privilege attack via exception filter
                try { 
                    try {
                        Clear(); 
                        Add(control); 
                    }
                    finally { 
                        SetCollectionReadOnly(originalError);
                    }
                }
                catch { 
                    throw;
                } 
            } 
        }
    } 
}
// 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.Globalization;
    using System.Web.UI;
    using System.Web.UI.WebControls; 
    using System.Web.Util;
 
    ///  
    /// A WebPart that can wrap any other generic server control, and provide it
    /// with "WebPart-ness." 
    /// 1. Implements several properties if not set on the WebPart by looking for an
    /// attribute on the contained control.
    /// 2. Implement IWebEditable to allow the PropertyGridEditorPart to tunnel-in
    /// and browse the contained control. 
    ///  
    [ 
    ToolboxItem(false) 
    ]
    public class GenericWebPart : WebPart { 
        internal const string IDPrefix = "gwp";
        private Control _childControl;
        private IWebPart _childIWebPart; 
        private string _subtitle;
 
        ///  
        /// Intializes an instance of GenericWebPart with the control it is to wrap.
        ///   
        protected internal GenericWebPart(Control control) {
            if (control == null) {
                throw new ArgumentNullException("control");
            } 
            if (control is WebPart) {
                throw new ArgumentException(SR.GetString(SR.GenericWebPart_CannotWrapWebPart), "control"); 
            } 
            if (control is BasePartialCachingControl) {
                throw new ArgumentException(SR.GetString(SR.GenericWebPart_CannotWrapOutputCachedControl), "control"); 
            }
            if (String.IsNullOrEmpty(control.ID)) {
                throw new ArgumentException(SR.GetString(SR.GenericWebPart_NoID, control.GetType().FullName));
            } 
            ID = IDPrefix + control.ID; 
            _childControl = control; 
            _childIWebPart = _childControl as IWebPart;
            CopyChildAttributes(); 
        }
        public override string CatalogIconImageUrl {
            get { 
                if (_childIWebPart != null) {
                    return _childIWebPart.CatalogIconImageUrl; 
                } 
                else {
                    return base.CatalogIconImageUrl; 
                }
            }
            set {
                if (_childIWebPart != null) { 
                    _childIWebPart.CatalogIconImageUrl = value;
                } 
                else { 
                    base.CatalogIconImageUrl = value;
                } 
            }
        }
        public Control ChildControl { 
            get {
                Debug.Assert(_childControl != null, "ChildControl cannot be null."); 
                return _childControl; 
            }
        } 
        public override string Description {
            get {
                if (_childIWebPart != null) { 
                    return _childIWebPart.Description;
                } 
                else { 
                    return base.Description;
                } 
            }
            set {
                if (_childIWebPart != null) {
                    _childIWebPart.Description = value; 
                }
                else { 
                    base.Description = value; 
                }
            } 
        }
        public override Unit Height {
            get { 
                WebControl c = ChildControl as WebControl;
                if (c != null) { 
                    return c.Height; 
                }
                else { 
                    return base.Height;
                }
            }
            set { 
                WebControl c = ChildControl as WebControl;
                if (c != null) { 
                    c.Height = value; 
                }
                else { 
                    base.Height = value;
                }
            }
        } 
        // Seal the ID property so we can set it in the constructor without an FxCop violation. 
        public sealed override string ID { 
            get {
                return base.ID; 
            }
            set {
                base.ID = value;
            } 
        }
 
        public override string Subtitle { 
            get {
                if (_childIWebPart != null) { 
                    return _childIWebPart.Subtitle;
                }
                else {
                    return (_subtitle != null ? _subtitle : String.Empty); 
                }
            } 
        } 
        public override string Title { 
            get {
                if (_childIWebPart != null) {
                    return _childIWebPart.Title;
                } 
                else {
                    return base.Title; 
                } 
            }
            set { 
                if (_childIWebPart != null) {
                    _childIWebPart.Title = value;
                }
                else { 
                    base.Title = value;
                } 
            } 
        }
 
        public override string TitleIconImageUrl {
            get {
                if (_childIWebPart != null) {
                    return _childIWebPart.TitleIconImageUrl; 
                }
                else { 
                    return base.TitleIconImageUrl; 
                }
            } 
            set {
                if (_childIWebPart != null) {
                    _childIWebPart.TitleIconImageUrl = value;
                } 
                else {
                    base.TitleIconImageUrl = value; 
                } 
            }
        } 
        public override string TitleUrl {
            get {
                if (_childIWebPart != null) { 
                    return _childIWebPart.TitleUrl;
                } 
                else { 
                    return base.TitleUrl;
                } 
            }
            set {
                if (_childIWebPart != null) {
                    _childIWebPart.TitleUrl = value; 
                }
                else { 
                    base.TitleUrl = value; 
                }
            } 
        }
        public override WebPartVerbCollection Verbs {
            get { 
                if (ChildControl != null) {
                    IWebActionable webActionableChildControl = ChildControl as IWebActionable; 
                    if (webActionableChildControl != null) { 
                        return new WebPartVerbCollection(base.Verbs, webActionableChildControl.Verbs);
                    } 
                }
                return base.Verbs;
            }
        } 
        public override object WebBrowsableObject { 
            get { 
                IWebEditable webEditableChildControl = ChildControl as IWebEditable;
                if (webEditableChildControl != null) { 
                    return webEditableChildControl.WebBrowsableObject;
                }
                else {
                    return ChildControl; 
                }
            } 
        } 
        public override Unit Width { 
            get {
                WebControl c = ChildControl as WebControl;
                if (c != null) {
                    return c.Width; 
                }
                else { 
                    return base.Width; 
                }
            } 
            set {
                WebControl c = ChildControl as WebControl;
                if (c != null) {
                    c.Width = value; 
                }
                else { 
                    base.Width = value; 
                }
            } 
        }
        private void CopyChildAttributes() {
            // Copy the attribute values from the ChildControl to the GenericWebPart properties. 
            IAttributeAccessor childAttributeAccessor = ChildControl as IAttributeAccessor;
            if (childAttributeAccessor != null) { 
                base.AuthorizationFilter = childAttributeAccessor.GetAttribute("AuthorizationFilter"); 
                base.CatalogIconImageUrl = childAttributeAccessor.GetAttribute("CatalogIconImageUrl");
                base.Description = childAttributeAccessor.GetAttribute("Description"); 
                string exportMode = childAttributeAccessor.GetAttribute("ExportMode");
                if (exportMode != null) {
                    base.ExportMode = (WebPartExportMode)(Util.GetEnumAttribute( 
                        "ExportMode", exportMode, typeof(WebPartExportMode)));
                } 
 
                // Don't need to check base.Subtitle, since we always want to use the Subtitle on the
                // ChildControl if it is present.  Also, the property is not settable on WebPart, so we 
                // know that base.Subtitle will always be String.Empty.
                _subtitle = childAttributeAccessor.GetAttribute("Subtitle");
                base.Title = childAttributeAccessor.GetAttribute("Title"); 
                base.TitleIconImageUrl = childAttributeAccessor.GetAttribute("TitleIconImageUrl");
                base.TitleUrl = childAttributeAccessor.GetAttribute("TitleUrl"); 
            } 
            // Remove all the attributes from the ChildControl, whether or not they were copied 
            // to the GenericWebPart property.  We want to remove the attributes so they are not
            // rendered on the ChildControl.  (VSWhidbey 313674)
            WebControl childWebControl = ChildControl as WebControl;
            if (childWebControl != null) { 
                // If the ChildControl is a WebControl, we want to completely remove the attributes.
                childWebControl.Attributes.Remove("AuthorizationFilter"); 
                childWebControl.Attributes.Remove("CatalogIconImageUrl"); 
                childWebControl.Attributes.Remove("Description");
                childWebControl.Attributes.Remove("ExportMode"); 
                childWebControl.Attributes.Remove("Subtitle");
                childWebControl.Attributes.Remove("Title");
                childWebControl.Attributes.Remove("TitleIconImageUrl");
                childWebControl.Attributes.Remove("TitleUrl"); 
            }
            else if (childAttributeAccessor != null) { 
                // If the ChildControl is not a WebControl, we cannot remove the attributes, so we set 
                // them to null instead.
                childAttributeAccessor.SetAttribute("AuthorizationFilter", null); 
                childAttributeAccessor.SetAttribute("CatalogIconImageUrl", null);
                childAttributeAccessor.SetAttribute("Description", null);
                childAttributeAccessor.SetAttribute("ExportMode", null);
                childAttributeAccessor.SetAttribute("Subtitle", null); 
                childAttributeAccessor.SetAttribute("Title", null);
                childAttributeAccessor.SetAttribute("TitleIconImageUrl", null); 
                childAttributeAccessor.SetAttribute("TitleUrl", null); 
            }
        } 
        protected internal override void CreateChildControls() {
            ((GenericWebPartControlCollection)Controls).AddGenericControl(ChildControl);
        } 
        protected override ControlCollection CreateControlCollection() { 
            return new GenericWebPartControlCollection(this); 
        }
 
        public override EditorPartCollection CreateEditorParts() {
            IWebEditable webEditableChildControl = ChildControl as IWebEditable;
            if (webEditableChildControl != null) {
                return new EditorPartCollection(base.CreateEditorParts(), webEditableChildControl.CreateEditorParts()); 
            }
            else { 
                return base.CreateEditorParts(); 
            }
        } 
        protected internal override void Render(HtmlTextWriter writer) {
            // Copied from CompositeControl.Render()
            if (DesignMode) { 
                EnsureChildControls();
            } 
 
            RenderContents(writer);
        } 
        private sealed class GenericWebPartControlCollection : ControlCollection {
            public GenericWebPartControlCollection(GenericWebPart owner) : base(owner) {
                SetCollectionReadOnly(SR.GenericWebPart_CannotModify); 
            }
 
            ///  
            /// Allows adding the generic control to be wrapped.
            ///   
            public void AddGenericControl(Control control) {
                string originalError = SetCollectionReadOnly(null);
                // Extra try-catch block to prevent elevation of privilege attack via exception filter
                try { 
                    try {
                        Clear(); 
                        Add(control); 
                    }
                    finally { 
                        SetCollectionReadOnly(originalError);
                    }
                }
                catch { 
                    throw;
                } 
            } 
        }
    } 
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
                        
                        
                        
                        
                    Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- XmlTextReaderImpl.cs
 - HWStack.cs
 - TextStore.cs
 - InternalSafeNativeMethods.cs
 - ClientOptions.cs
 - SurrogateChar.cs
 - ThreadExceptionEvent.cs
 - XmlParserContext.cs
 - XmlNamespaceMapping.cs
 - SecurityUtils.cs
 - PolicyStatement.cs
 - Timeline.cs
 - ImageProxy.cs
 - JsonWriter.cs
 - XmlArrayAttribute.cs
 - TableItemStyle.cs
 - configsystem.cs
 - PermissionToken.cs
 - StringDictionaryCodeDomSerializer.cs
 - FaultPropagationRecord.cs
 - HttpDictionary.cs
 - DataPagerFieldItem.cs
 - ResourceWriter.cs
 - UriTemplateVariablePathSegment.cs
 - EpmContentSerializerBase.cs
 - ImplicitInputBrush.cs
 - FontFamilyConverter.cs
 - QilExpression.cs
 - RightsManagementLicense.cs
 - DecimalMinMaxAggregationOperator.cs
 - RelationshipDetailsRow.cs
 - DatagridviewDisplayedBandsData.cs
 - WaitHandleCannotBeOpenedException.cs
 - FileSystemInfo.cs
 - SubtreeProcessor.cs
 - DesignTimeData.cs
 - EventProviderWriter.cs
 - _FixedSizeReader.cs
 - OutOfProcStateClientManager.cs
 - QueryExpr.cs
 - PointValueSerializer.cs
 - PreservationFileReader.cs
 - TableDetailsRow.cs
 - FlowDocumentPage.cs
 - ComponentSerializationService.cs
 - VisualTarget.cs
 - Compiler.cs
 - EnumType.cs
 - MiniAssembly.cs
 - Region.cs
 - MSG.cs
 - SqlStatistics.cs
 - _NTAuthentication.cs
 - PropertyMapper.cs
 - brushes.cs
 - ToolStripAdornerWindowService.cs
 - CopyOnWriteList.cs
 - NamedElement.cs
 - __TransparentProxy.cs
 - WorkflowStateRollbackService.cs
 - XsltInput.cs
 - BitConverter.cs
 - ArraySet.cs
 - InvalidDataException.cs
 - CodePageUtils.cs
 - ItemCheckedEvent.cs
 - DesignerActionListCollection.cs
 - ConfigurationStrings.cs
 - HtmlInputRadioButton.cs
 - QilInvokeLateBound.cs
 - NodeCounter.cs
 - IndicFontClient.cs
 - GenericRootAutomationPeer.cs
 - TaskHelper.cs
 - SerializationSectionGroup.cs
 - KeyConverter.cs
 - DesignerVerbCollection.cs
 - DuplicateWaitObjectException.cs
 - ConnectorDragDropGlyph.cs
 - ValidationPropertyAttribute.cs
 - FlowNode.cs
 - EntityProviderFactory.cs
 - HatchBrush.cs
 - TextBoxAutoCompleteSourceConverter.cs
 - DataSourceView.cs
 - FixedSOMTable.cs
 - GradientStop.cs
 - PenLineCapValidation.cs
 - FlowchartDesigner.Helpers.cs
 - IgnoreSectionHandler.cs
 - AssemblyInfo.cs
 - StubHelpers.cs
 - Interop.cs
 - MetadataPropertyvalue.cs
 - ConfigurationValidatorAttribute.cs
 - StoragePropertyMapping.cs
 - TypeGeneratedEventArgs.cs
 - JsonXmlDataContract.cs
 - SafeReversePInvokeHandle.cs
 - DataGridViewRowDividerDoubleClickEventArgs.cs