Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Framework / MS / Internal / Data / XmlNodeChangedEventManager.cs / 1305600 / XmlNodeChangedEventManager.cs
//----------------------------------------------------------------------------
//
//
// Copyright (C) Microsoft Corporation. All rights reserved.
//
//
// Description: Manager for the XmlNodeChanged event in the "weak event listener"
// pattern. See WeakEventTable.cs for an overview.
//
//---------------------------------------------------------------------------
using System;
using System.Xml;
using System.Windows; // WeakEventManager
namespace MS.Internal.Data
{
///
/// Manager for the XmlDocument.XmlNodeChanged event.
///
internal class XmlNodeChangedEventManager : WeakEventManager
{
#region Constructors
//
// Constructors
//
private XmlNodeChangedEventManager()
{
}
#endregion Constructors
#region Public Methods
//
// Public Methods
//
///
/// Add a listener to the given source's event.
///
public static void AddListener(XmlDocument source, IWeakEventListener listener)
{
if (source == null)
throw new ArgumentNullException("source");
if (listener == null)
throw new ArgumentNullException("listener");
CurrentManager.ProtectedAddListener(source, listener);
}
///
/// Remove a listener to the given source's event.
///
public static void RemoveListener(XmlDocument source, IWeakEventListener listener)
{
if (source == null)
throw new ArgumentNullException("source");
if (listener == null)
throw new ArgumentNullException("listener");
CurrentManager.ProtectedRemoveListener(source, listener);
}
#endregion Public Methods
#region Protected Methods
//
// Protected Methods
//
///
/// Listen to the given source for the event.
///
protected override void StartListening(object source)
{
XmlNodeChangedEventHandler handler = new XmlNodeChangedEventHandler(OnXmlNodeChanged);
XmlDocument doc = (XmlDocument)source;
doc.NodeInserted += handler;
doc.NodeRemoved += handler;
doc.NodeChanged += handler;
}
///
/// Stop listening to the given source for the event.
///
protected override void StopListening(object source)
{
XmlNodeChangedEventHandler handler = new XmlNodeChangedEventHandler(OnXmlNodeChanged);
XmlDocument doc = (XmlDocument)source;
doc.NodeInserted -= handler;
doc.NodeRemoved -= handler;
doc.NodeChanged -= handler;
}
#endregion Protected Methods
#region Private Properties
//
// Private Properties
//
// get the event manager for the current thread
private static XmlNodeChangedEventManager CurrentManager
{
get
{
Type managerType = typeof(XmlNodeChangedEventManager);
XmlNodeChangedEventManager manager = (XmlNodeChangedEventManager)GetCurrentManager(managerType);
// at first use, create and register a new manager
if (manager == null)
{
manager = new XmlNodeChangedEventManager();
SetCurrentManager(managerType, manager);
}
return manager;
}
}
#endregion Private Properties
#region Private Methods
//
// Private Methods
//
// event handler for XmlNodeChanged event
private void OnXmlNodeChanged(object sender, XmlNodeChangedEventArgs args)
{
DeliverEvent(sender, args);
}
#endregion Private Methods
}
}
// 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
- HwndMouseInputProvider.cs
- CompilerWrapper.cs
- XmlAnyElementAttribute.cs
- TextHidden.cs
- MergeLocalizationDirectives.cs
- DataKeyPropertyAttribute.cs
- SemaphoreSlim.cs
- WebBrowserProgressChangedEventHandler.cs
- AsnEncodedData.cs
- XsdDateTime.cs
- DependencyPropertyChangedEventArgs.cs
- DBConnection.cs
- OpenTypeLayoutCache.cs
- CheckBoxList.cs
- IsolatedStorageFileStream.cs
- TreeViewBindingsEditorForm.cs
- ContextActivityUtils.cs
- ToolStripContentPanelRenderEventArgs.cs
- FontSource.cs
- SecurityElement.cs
- InputMethodStateChangeEventArgs.cs
- TextRangeEditTables.cs
- XmlSchemaSimpleContent.cs
- HostAdapter.cs
- NativeRightsManagementAPIsStructures.cs
- DataGridState.cs
- Int32CollectionConverter.cs
- DataGridViewCellStyle.cs
- QueryResponse.cs
- CompositeFontInfo.cs
- GatewayDefinition.cs
- CreateUserWizard.cs
- ClientSession.cs
- WinEventQueueItem.cs
- StringConcat.cs
- CTreeGenerator.cs
- UIPropertyMetadata.cs
- SupportingTokenChannel.cs
- WebPartsPersonalizationAuthorization.cs
- C14NUtil.cs
- ArcSegment.cs
- XamlTypeMapper.cs
- ExpressionReplacer.cs
- ItemMap.cs
- ColumnWidthChangingEvent.cs
- XPathDescendantIterator.cs
- WebPartDisplayModeCancelEventArgs.cs
- PersonalizationStateInfoCollection.cs
- FastPropertyAccessor.cs
- StyleHelper.cs
- ColumnResizeAdorner.cs
- CellConstant.cs
- KnownTypesProvider.cs
- Image.cs
- IgnoreDeviceFilterElement.cs
- XmlValueConverter.cs
- LoadRetryStrategyFactory.cs
- XmlSchemaAppInfo.cs
- CatalogUtil.cs
- WebSysDefaultValueAttribute.cs
- _ShellExpression.cs
- HashMembershipCondition.cs
- WrappedKeySecurityToken.cs
- MeasurementDCInfo.cs
- ListControl.cs
- HandlerFactoryWrapper.cs
- TagMapInfo.cs
- XmlElementAttributes.cs
- FlowNode.cs
- errorpatternmatcher.cs
- UrlMappingsModule.cs
- hwndwrapper.cs
- Site.cs
- BindingCompleteEventArgs.cs
- RoleService.cs
- CryptoConfig.cs
- ActivityExecutionContextCollection.cs
- RelOps.cs
- Icon.cs
- BitmapEffectGroup.cs
- WebRequest.cs
- RoleGroupCollection.cs
- TabControl.cs
- brushes.cs
- WebBrowserNavigatingEventHandler.cs
- MobileContainerDesigner.cs
- RadioButtonFlatAdapter.cs
- EventListener.cs
- HtmlEncodedRawTextWriter.cs
- PersonalizableTypeEntry.cs
- WebService.cs
- FileSystemInfo.cs
- AuthorizationPolicyTypeElement.cs
- PropertySourceInfo.cs
- CapabilitiesSection.cs
- XomlDesignerLoader.cs
- ContourSegment.cs
- TextParagraphView.cs
- AppliedDeviceFiltersDialog.cs
- MatrixTransform.cs