Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / 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
- SessionStateItemCollection.cs
- HtmlObjectListAdapter.cs
- InstanceData.cs
- SafeBitVector32.cs
- Missing.cs
- IntSecurity.cs
- ColumnMapTranslator.cs
- ConnectionManagementSection.cs
- ModulesEntry.cs
- SafeNativeMethods.cs
- ParenExpr.cs
- ContainerControl.cs
- CodeDomSerializerException.cs
- AmbientLight.cs
- SqlIdentifier.cs
- MouseActionConverter.cs
- MaskInputRejectedEventArgs.cs
- FormsAuthenticationUserCollection.cs
- Repeater.cs
- SwitchElementsCollection.cs
- Animatable.cs
- MarkupObject.cs
- UniqueID.cs
- XmlSerializerSection.cs
- HttpWebRequestElement.cs
- DecoderReplacementFallback.cs
- TransformDescriptor.cs
- Subtree.cs
- TreeViewHitTestInfo.cs
- NativeObjectSecurity.cs
- UTF32Encoding.cs
- Application.cs
- StylusButtonEventArgs.cs
- RegisteredExpandoAttribute.cs
- DESCryptoServiceProvider.cs
- StateItem.cs
- XmlnsCache.cs
- ProviderCommandInfoUtils.cs
- RouteCollection.cs
- UnknownBitmapDecoder.cs
- NotSupportedException.cs
- NonVisualControlAttribute.cs
- Dump.cs
- ParameterReplacerVisitor.cs
- OracleRowUpdatingEventArgs.cs
- HierarchicalDataSourceControl.cs
- Window.cs
- ToolStripActionList.cs
- ArgumentOutOfRangeException.cs
- PlaceHolder.cs
- CultureTableRecord.cs
- WorkflowMarkupElementEventArgs.cs
- Predicate.cs
- ConditionalBranch.cs
- objectresult_tresulttype.cs
- CacheEntry.cs
- EntityExpressionVisitor.cs
- Script.cs
- XamlFxTrace.cs
- Peer.cs
- HierarchicalDataBoundControl.cs
- SerializerDescriptor.cs
- BooleanFunctions.cs
- NativeMethodsCLR.cs
- DetailsViewModeEventArgs.cs
- COM2ComponentEditor.cs
- XmlAnyElementAttribute.cs
- StateChangeEvent.cs
- Predicate.cs
- TypeConverterHelper.cs
- ToolStripItemImageRenderEventArgs.cs
- WorkflowInstanceTerminatedRecord.cs
- HttpListenerException.cs
- TcpStreams.cs
- ClientOptions.cs
- DirectionalLight.cs
- DoubleStorage.cs
- XmlSubtreeReader.cs
- ManualResetEvent.cs
- EdmScalarPropertyAttribute.cs
- ScrollViewer.cs
- WmpBitmapDecoder.cs
- ObjectConverter.cs
- QueryOptionExpression.cs
- WmfPlaceableFileHeader.cs
- ScriptResourceAttribute.cs
- ListBoxDesigner.cs
- CodePageEncoding.cs
- EncodingDataItem.cs
- ClientScriptManager.cs
- MergeLocalizationDirectives.cs
- RequestSecurityToken.cs
- SoapInteropTypes.cs
- ServiceBehaviorAttribute.cs
- X509CertificateClaimSet.cs
- TemplatePartAttribute.cs
- nulltextnavigator.cs
- WindowsListViewGroupHelper.cs
- ProcessHostConfigUtils.cs
- ViewStateException.cs