Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / DEVDIV / depot / DevDiv / releases / whidbey / QFE / 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 _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. ( 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. //------------------------------------------------------------------------------ //// 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 _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. ( 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- StylusDevice.cs
- XmlNodeWriter.cs
- Attribute.cs
- ExecutionContext.cs
- HttpWebRequest.cs
- ProcessInputEventArgs.cs
- CompositeFontParser.cs
- RuntimeResourceSet.cs
- SettingsSection.cs
- Timeline.cs
- LocatorPart.cs
- EventToken.cs
- CultureTable.cs
- BooleanConverter.cs
- BinaryObjectWriter.cs
- TextParagraphProperties.cs
- IncrementalCompileAnalyzer.cs
- IntegerValidatorAttribute.cs
- ProcessHost.cs
- JsonReader.cs
- XsdDuration.cs
- BufferModesCollection.cs
- OleDbParameter.cs
- PreviewPrintController.cs
- TreeNodeConverter.cs
- ObjectContextServiceProvider.cs
- XamlSerializer.cs
- XmlSchemaSubstitutionGroup.cs
- BaseDataList.cs
- InvokeProviderWrapper.cs
- GZipStream.cs
- ProviderCommandInfoUtils.cs
- LocalValueEnumerator.cs
- OleDbFactory.cs
- DataBinding.cs
- StringComparer.cs
- Material.cs
- ComponentConverter.cs
- TreeViewImageIndexConverter.cs
- FrameworkContentElement.cs
- XamlPointCollectionSerializer.cs
- CreateUserErrorEventArgs.cs
- CompositeTypefaceMetrics.cs
- WeakReferenceKey.cs
- InputElement.cs
- DefaultValueMapping.cs
- RootProfilePropertySettingsCollection.cs
- Pair.cs
- IOThreadScheduler.cs
- ObjectQueryProvider.cs
- AdapterUtil.cs
- WinFormsSecurity.cs
- XAMLParseException.cs
- HealthMonitoringSection.cs
- DecoderFallback.cs
- FileRegion.cs
- TemplateControl.cs
- InvalidWMPVersionException.cs
- LinqDataSourceDeleteEventArgs.cs
- BitmapEffectGeneralTransform.cs
- XmlDocumentFragment.cs
- SaveWorkflowAsyncResult.cs
- Hash.cs
- ActivationServices.cs
- WorkflowRuntime.cs
- DesignBindingValueUIHandler.cs
- VBCodeProvider.cs
- TraceXPathNavigator.cs
- Multiply.cs
- StringArrayConverter.cs
- UnsafeNativeMethods.cs
- TextFragmentEngine.cs
- DesigntimeLicenseContext.cs
- BitmapEffectrendercontext.cs
- ImportContext.cs
- HttpCachePolicy.cs
- ParameterReplacerVisitor.cs
- Decorator.cs
- Condition.cs
- ZipIOCentralDirectoryBlock.cs
- XmlSerializationGeneratedCode.cs
- CommandEventArgs.cs
- AssociationSet.cs
- GACMembershipCondition.cs
- AssemblyAttributesGoHere.cs
- XmlReflectionImporter.cs
- OdbcException.cs
- _AuthenticationState.cs
- RMEnrollmentPage1.cs
- ConnectionInterfaceCollection.cs
- BaseProcessor.cs
- MiniConstructorInfo.cs
- KeysConverter.cs
- CollectionDataContractAttribute.cs
- ReferencedCollectionType.cs
- DrawingAttributes.cs
- Timeline.cs
- SqlConnection.cs
- UIElement.cs
- PageParserFilter.cs