Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / ndp / fx / src / xsp / System / Web / UI / WebParts / GenericWebPart.cs / 1 / 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.Security.Permissions; 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) ] [AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)] [AspNetHostingPermission(SecurityAction.InheritanceDemand, Level=AspNetHostingPermissionLevel.Minimal)] 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.Security.Permissions; 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) ] [AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)] [AspNetHostingPermission(SecurityAction.InheritanceDemand, Level=AspNetHostingPermissionLevel.Minimal)] 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
- SyntaxCheck.cs
- DrawItemEvent.cs
- SystemResourceKey.cs
- TraceHwndHost.cs
- DataGridViewColumnCollectionDialog.cs
- ForEachAction.cs
- EntityConnection.cs
- InheritanceContextChangedEventManager.cs
- Literal.cs
- TypedReference.cs
- ContentFilePart.cs
- CachedTypeface.cs
- ConfigurationSettings.cs
- DataGridViewCellStyle.cs
- ManifestResourceInfo.cs
- AvTraceFormat.cs
- TypeSystemHelpers.cs
- DoubleCollectionValueSerializer.cs
- HitTestFilterBehavior.cs
- FixedHighlight.cs
- ToolStripContainer.cs
- ObjectHandle.cs
- StrokeNodeData.cs
- Control.cs
- TreeNode.cs
- RelatedImageListAttribute.cs
- AffineTransform3D.cs
- SQLBytes.cs
- BindingCompleteEventArgs.cs
- xamlnodes.cs
- ModifiableIteratorCollection.cs
- WebPartCloseVerb.cs
- LoginName.cs
- InputMethodStateChangeEventArgs.cs
- ComplexPropertyEntry.cs
- CfgSemanticTag.cs
- GifBitmapDecoder.cs
- UIPermission.cs
- TypeSchema.cs
- Sql8ConformanceChecker.cs
- SecureUICommand.cs
- AccessText.cs
- BindingBase.cs
- SendingRequestEventArgs.cs
- IdentifierService.cs
- ObjRef.cs
- WebPartDisplayModeCancelEventArgs.cs
- PersonalizationProviderCollection.cs
- HandledMouseEvent.cs
- XmlSchemaSimpleType.cs
- glyphs.cs
- IssuedTokenParametersElement.cs
- XPathDocument.cs
- WebBrowser.cs
- ConfigurationStrings.cs
- BasicHttpBinding.cs
- WinEventWrap.cs
- URLString.cs
- PrimaryKeyTypeConverter.cs
- base64Transforms.cs
- ConfigXmlText.cs
- MatrixCamera.cs
- FrameworkContextData.cs
- ImmComposition.cs
- UIInitializationException.cs
- HttpCapabilitiesBase.cs
- Byte.cs
- UshortList2.cs
- SimpleWebHandlerParser.cs
- ISFClipboardData.cs
- GiveFeedbackEventArgs.cs
- ColorAnimationBase.cs
- HMACSHA256.cs
- GlyphShapingProperties.cs
- DetailsViewDeletedEventArgs.cs
- BindingContext.cs
- JapaneseLunisolarCalendar.cs
- FontStyleConverter.cs
- ISAPIApplicationHost.cs
- CollectionChange.cs
- ToolStripRenderer.cs
- EFDataModelProvider.cs
- LoginView.cs
- TraceContextEventArgs.cs
- SamlAdvice.cs
- COAUTHINFO.cs
- VSWCFServiceContractGenerator.cs
- HyperLinkDataBindingHandler.cs
- TextRangeEdit.cs
- XmlReader.cs
- StyleModeStack.cs
- _AcceptOverlappedAsyncResult.cs
- CompilerTypeWithParams.cs
- Point3DAnimationUsingKeyFrames.cs
- VisualTransition.cs
- MulticastIPAddressInformationCollection.cs
- FormViewDeleteEventArgs.cs
- TypeUnloadedException.cs
- DeviceOverridableAttribute.cs
- XmlSequenceWriter.cs