Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / ndp / fx / src / CompMod / System / ComponentModel / NestedContainer.cs / 1 / NestedContainer.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.ComponentModel { using System; using System.ComponentModel; using System.Globalization; using System.IO; using System.Security.Permissions; ////// A nested container is a container that is owned by another component. Nested /// containers can be found by querying a component site's services for NestedConainter. /// Nested containers are a useful tool to establish owner relationships among components. /// All components within a nested container are named with the owning component's name /// as a prefix. /// [HostProtection(SharedState = true)] public class NestedContainer : Container, INestedContainer { private IComponent _owner; ////// Creates a new NestedContainer. /// public NestedContainer(IComponent owner) { if (owner == null) { throw new ArgumentNullException("owner"); } _owner = owner; _owner.Disposed += new EventHandler(OnOwnerDisposed); } ////// The component that owns this nested container. /// public IComponent Owner { get { return _owner; } } ////// Retrieves the name of the owning component. This may be overridden to /// provide a custom owner name. The default searches the owner's site for /// INestedSite and calls FullName, or ISite.Name if there is no nested site. /// If neither is available, this returns null. /// protected virtual string OwnerName { get { string ownerName = null; if (_owner != null && _owner.Site != null) { INestedSite nestedOwnerSite = _owner.Site as INestedSite; if (nestedOwnerSite != null) { ownerName = nestedOwnerSite.FullName; } else { ownerName = _owner.Site.Name; } } return ownerName; } } ////// Creates a site for the component within the container. /// protected override ISite CreateSite(IComponent component, string name) { if (component == null) { throw new ArgumentNullException("component"); } return new Site(component, this, name); } ////// Override of Container's dispose. /// protected override void Dispose(bool disposing) { if (disposing) { _owner.Disposed -= new EventHandler(OnOwnerDisposed); } base.Dispose(disposing); } ////// protected override object GetService(Type service) { if (service == typeof(INestedContainer)) { return this; } else { return base.GetService(service); } } ///[To be supplied.] ////// Called when our owning component is destroyed. /// private void OnOwnerDisposed(object sender, EventArgs e) { Dispose(); } ////// Simple site implementation. We do some special processing to name the site, but /// that's about it. /// private class Site : INestedSite { private IComponent component; private NestedContainer container; private string name; internal Site(IComponent component, NestedContainer container, string name) { this.component = component; this.container = container; this.name = name; } // The component sited by this component site. public IComponent Component { get { return component; } } // The container in which the component is sited. public IContainer Container { get { return container; } } public Object GetService(Type service) { return((service == typeof(ISite)) ? this : container.GetService(service)); } // Indicates whether the component is in design mode. public bool DesignMode { get { IComponent owner = container.Owner; if (owner != null && owner.Site != null) { return owner.Site.DesignMode; } return false; } } public string FullName { get { if (name != null) { string ownerName = container.OwnerName; string childName = name; if (ownerName != null) { childName = string.Format(CultureInfo.InvariantCulture, "{0}.{1}", ownerName, childName); } return childName; } return name; } } // The name of the component. // public String Name { get { return name; } set { if (value == null || name == null || !value.Equals(name)) { container.ValidateName(component, value); name = value; } } } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.ComponentModel { using System; using System.ComponentModel; using System.Globalization; using System.IO; using System.Security.Permissions; ////// A nested container is a container that is owned by another component. Nested /// containers can be found by querying a component site's services for NestedConainter. /// Nested containers are a useful tool to establish owner relationships among components. /// All components within a nested container are named with the owning component's name /// as a prefix. /// [HostProtection(SharedState = true)] public class NestedContainer : Container, INestedContainer { private IComponent _owner; ////// Creates a new NestedContainer. /// public NestedContainer(IComponent owner) { if (owner == null) { throw new ArgumentNullException("owner"); } _owner = owner; _owner.Disposed += new EventHandler(OnOwnerDisposed); } ////// The component that owns this nested container. /// public IComponent Owner { get { return _owner; } } ////// Retrieves the name of the owning component. This may be overridden to /// provide a custom owner name. The default searches the owner's site for /// INestedSite and calls FullName, or ISite.Name if there is no nested site. /// If neither is available, this returns null. /// protected virtual string OwnerName { get { string ownerName = null; if (_owner != null && _owner.Site != null) { INestedSite nestedOwnerSite = _owner.Site as INestedSite; if (nestedOwnerSite != null) { ownerName = nestedOwnerSite.FullName; } else { ownerName = _owner.Site.Name; } } return ownerName; } } ////// Creates a site for the component within the container. /// protected override ISite CreateSite(IComponent component, string name) { if (component == null) { throw new ArgumentNullException("component"); } return new Site(component, this, name); } ////// Override of Container's dispose. /// protected override void Dispose(bool disposing) { if (disposing) { _owner.Disposed -= new EventHandler(OnOwnerDisposed); } base.Dispose(disposing); } ////// protected override object GetService(Type service) { if (service == typeof(INestedContainer)) { return this; } else { return base.GetService(service); } } ///[To be supplied.] ////// Called when our owning component is destroyed. /// private void OnOwnerDisposed(object sender, EventArgs e) { Dispose(); } ////// Simple site implementation. We do some special processing to name the site, but /// that's about it. /// private class Site : INestedSite { private IComponent component; private NestedContainer container; private string name; internal Site(IComponent component, NestedContainer container, string name) { this.component = component; this.container = container; this.name = name; } // The component sited by this component site. public IComponent Component { get { return component; } } // The container in which the component is sited. public IContainer Container { get { return container; } } public Object GetService(Type service) { return((service == typeof(ISite)) ? this : container.GetService(service)); } // Indicates whether the component is in design mode. public bool DesignMode { get { IComponent owner = container.Owner; if (owner != null && owner.Site != null) { return owner.Site.DesignMode; } return false; } } public string FullName { get { if (name != null) { string ownerName = container.OwnerName; string childName = name; if (ownerName != null) { childName = string.Format(CultureInfo.InvariantCulture, "{0}.{1}", ownerName, childName); } return childName; } return name; } } // The name of the component. // public String Name { get { return name; } set { if (value == null || name == null || !value.Equals(name)) { container.ValidateName(component, value); name = value; } } } } } } // 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
- DataRow.cs
- Compensation.cs
- DrawingDrawingContext.cs
- SamlDelegatingWriter.cs
- RightsManagementEncryptedStream.cs
- SynchronizationContextHelper.cs
- Int32CollectionValueSerializer.cs
- SafeNativeMethods.cs
- UnmanagedMemoryAccessor.cs
- XmlDigitalSignatureProcessor.cs
- ToolStripButton.cs
- OrderedEnumerableRowCollection.cs
- StreamGeometryContext.cs
- ToolStripRenderEventArgs.cs
- UpdateRecord.cs
- StrongNameHelpers.cs
- KeyFrames.cs
- TripleDESCryptoServiceProvider.cs
- PrePrepareMethodAttribute.cs
- MessageSecurityOverTcpElement.cs
- ExternalCalls.cs
- WizardStepBase.cs
- OleDbReferenceCollection.cs
- TogglePattern.cs
- UriTemplateDispatchFormatter.cs
- FileCodeGroup.cs
- NullableDecimalMinMaxAggregationOperator.cs
- CodeGotoStatement.cs
- InternalEnumValidator.cs
- DateTimeConverter.cs
- TextEditorTyping.cs
- SafeRightsManagementPubHandle.cs
- UpdatePanel.cs
- Guid.cs
- TypeBuilderInstantiation.cs
- AddingNewEventArgs.cs
- DynamicILGenerator.cs
- SettingsContext.cs
- PeerSecurityManager.cs
- HtmlTableRowCollection.cs
- SharedPerformanceCounter.cs
- VBCodeProvider.cs
- PkcsUtils.cs
- SqlDataReaderSmi.cs
- DiscoveryInnerClientManaged11.cs
- FormatVersion.cs
- GlobalProxySelection.cs
- UserPreferenceChangedEventArgs.cs
- ZipFileInfoCollection.cs
- CallId.cs
- CodeMethodReturnStatement.cs
- WebPartManager.cs
- ListMarkerSourceInfo.cs
- PerformanceCounterPermission.cs
- ApplicationActivator.cs
- DatePickerDateValidationErrorEventArgs.cs
- EntityContainerRelationshipSetEnd.cs
- WindowsAuthenticationModule.cs
- InstanceStore.cs
- TransformerInfoCollection.cs
- CodeBinaryOperatorExpression.cs
- HelpKeywordAttribute.cs
- AnnotationAdorner.cs
- TypefaceMetricsCache.cs
- DataGridViewAccessibleObject.cs
- SafeMemoryMappedViewHandle.cs
- TemplateManager.cs
- UnionExpr.cs
- DataRecordObjectView.cs
- WebRequest.cs
- DataColumnMapping.cs
- OracleConnection.cs
- TokenizerHelper.cs
- LocalizedNameDescriptionPair.cs
- DynamicVirtualDiscoSearcher.cs
- QueryBranchOp.cs
- DisposableCollectionWrapper.cs
- WebPartManagerInternals.cs
- ProtocolsConfigurationEntry.cs
- Point4D.cs
- FixUpCollection.cs
- NamedPipeDuplicateContext.cs
- Label.cs
- ConstraintCollection.cs
- DetailsViewDeletedEventArgs.cs
- ShapeTypeface.cs
- SoapCodeExporter.cs
- DWriteFactory.cs
- HyperLinkColumn.cs
- BmpBitmapEncoder.cs
- Operand.cs
- XsdDateTime.cs
- AppDomainShutdownMonitor.cs
- ListParaClient.cs
- GridViewColumnHeader.cs
- XmlStringTable.cs
- SqlDataSourceView.cs
- SHA256CryptoServiceProvider.cs
- ModuleConfigurationInfo.cs
- Axis.cs