Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / wpf / src / Framework / MS / Internal / Annotations / AnnotationMap.cs / 1 / AnnotationMap.cs
//---------------------------------------------------------------------------- //// Copyright(C) Microsoft Corporation. All rights reserved. // // // Description: // AnnotationMap contains the implementation of the map // map between annotation id and attached annotations used by the service // // History: // 11/11/2003 magedz: created // 10/22/2004 rruiz: Moved this class to MS.Internal namespace. // // Copyright(C) 2002 by Microsoft Corporation. All rights reserved. // //--------------------------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.Windows.Annotations; namespace MS.Internal.Annotations { ////// The AnnotationMap holds a map between the Id's of annotations and IAttachedAnnotations /// internal class AnnotationMap { ////// Add an IAttachedAnnotation to the annotation map. /// /// the IAttachedAnnotation to be added to the map internal void AddAttachedAnnotation(IAttachedAnnotation attachedAnnotation) { Listlist = null; if (!_annotationIdToAttachedAnnotations.TryGetValue(attachedAnnotation.Annotation.Id, out list)) { list = new List (1); _annotationIdToAttachedAnnotations.Add(attachedAnnotation.Annotation.Id, list); } list.Add(attachedAnnotation); } /// /// Remove an IAttachedAnnotation from the annotation map. /// /// internal void RemoveAttachedAnnotation(IAttachedAnnotation attachedAnnotation) { Listlist = null; if (_annotationIdToAttachedAnnotations.TryGetValue(attachedAnnotation.Annotation.Id, out list)) { list.Remove(attachedAnnotation); if (list.Count == 0) { _annotationIdToAttachedAnnotations.Remove(attachedAnnotation.Annotation.Id); } } } /// /// Returns whether or not there are any annotations currently loaded. This can be /// used to avoid costly walks of the tree. /// internal bool IsEmpty { get { return _annotationIdToAttachedAnnotations.Count == 0; } } ////// Return a list of IAttachedAnnotations for a given annotation id /// /// ///list of IAttachedAnnotations internal ListGetAttachedAnnotations(Guid annotationId) { List list = null; if (!_annotationIdToAttachedAnnotations.TryGetValue(annotationId, out list)) { // return empty list if annotation id not found return _emptyList; } Debug.Assert(list != null, "there should be an attached annotation list for the annotationId: " + annotationId.ToString()); return list; } /// /// Return a list of all IAttachedAnnotations in the map /// ///list of IAttachedAnnotations internal ListGetAllAttachedAnnotations() { List result = new List (_annotationIdToAttachedAnnotations.Keys.Count); foreach (Guid annId in _annotationIdToAttachedAnnotations.Keys) { List list = _annotationIdToAttachedAnnotations[annId]; result.AddRange(list); } if (result.Count == 0) { return _emptyList; } return result; } // hash table to hold annotation id to AttachedAnnotations list private Dictionary > _annotationIdToAttachedAnnotations = new Dictionary >(); // a readonly empty list - cached for performance reasons private static readonly List _emptyList = new List (0); } } // 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. // // // Description: // AnnotationMap contains the implementation of the map // map between annotation id and attached annotations used by the service // // History: // 11/11/2003 magedz: created // 10/22/2004 rruiz: Moved this class to MS.Internal namespace. // // Copyright(C) 2002 by Microsoft Corporation. All rights reserved. // //--------------------------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.Windows.Annotations; namespace MS.Internal.Annotations { ////// The AnnotationMap holds a map between the Id's of annotations and IAttachedAnnotations /// internal class AnnotationMap { ////// Add an IAttachedAnnotation to the annotation map. /// /// the IAttachedAnnotation to be added to the map internal void AddAttachedAnnotation(IAttachedAnnotation attachedAnnotation) { Listlist = null; if (!_annotationIdToAttachedAnnotations.TryGetValue(attachedAnnotation.Annotation.Id, out list)) { list = new List (1); _annotationIdToAttachedAnnotations.Add(attachedAnnotation.Annotation.Id, list); } list.Add(attachedAnnotation); } /// /// Remove an IAttachedAnnotation from the annotation map. /// /// internal void RemoveAttachedAnnotation(IAttachedAnnotation attachedAnnotation) { Listlist = null; if (_annotationIdToAttachedAnnotations.TryGetValue(attachedAnnotation.Annotation.Id, out list)) { list.Remove(attachedAnnotation); if (list.Count == 0) { _annotationIdToAttachedAnnotations.Remove(attachedAnnotation.Annotation.Id); } } } /// /// Returns whether or not there are any annotations currently loaded. This can be /// used to avoid costly walks of the tree. /// internal bool IsEmpty { get { return _annotationIdToAttachedAnnotations.Count == 0; } } ////// Return a list of IAttachedAnnotations for a given annotation id /// /// ///list of IAttachedAnnotations internal ListGetAttachedAnnotations(Guid annotationId) { List list = null; if (!_annotationIdToAttachedAnnotations.TryGetValue(annotationId, out list)) { // return empty list if annotation id not found return _emptyList; } Debug.Assert(list != null, "there should be an attached annotation list for the annotationId: " + annotationId.ToString()); return list; } /// /// Return a list of all IAttachedAnnotations in the map /// ///list of IAttachedAnnotations internal ListGetAllAttachedAnnotations() { List result = new List (_annotationIdToAttachedAnnotations.Keys.Count); foreach (Guid annId in _annotationIdToAttachedAnnotations.Keys) { List list = _annotationIdToAttachedAnnotations[annId]; result.AddRange(list); } if (result.Count == 0) { return _emptyList; } return result; } // hash table to hold annotation id to AttachedAnnotations list private Dictionary > _annotationIdToAttachedAnnotations = new Dictionary >(); // a readonly empty list - cached for performance reasons private static readonly List _emptyList = new List (0); } } // 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
- FloaterParagraph.cs
- MenuItemBindingCollection.cs
- LinearGradientBrush.cs
- ServiceObjectContainer.cs
- ChangeProcessor.cs
- DataGridBeginningEditEventArgs.cs
- SHA384Cng.cs
- HtmlCommandAdapter.cs
- Path.cs
- LinqDataSourceValidationException.cs
- safelink.cs
- AdjustableArrowCap.cs
- ColumnClickEvent.cs
- LockedBorderGlyph.cs
- TextLine.cs
- DtrList.cs
- WebServiceEnumData.cs
- CaseExpr.cs
- SQLBinaryStorage.cs
- XmlSchemaAttributeGroupRef.cs
- SafeViewOfFileHandle.cs
- MergablePropertyAttribute.cs
- XMLSchema.cs
- PathSegmentCollection.cs
- MdiWindowListItemConverter.cs
- CompositionAdorner.cs
- IdleTimeoutMonitor.cs
- StubHelpers.cs
- FontStretchConverter.cs
- ToolboxComponentsCreatingEventArgs.cs
- AttributeQuery.cs
- Regex.cs
- PointLightBase.cs
- InternalCache.cs
- CriticalFinalizerObject.cs
- ConnectorEditor.cs
- TreeViewHitTestInfo.cs
- XmlDocumentSerializer.cs
- VirtualPathProvider.cs
- DnsEndPoint.cs
- RecoverInstanceLocksCommand.cs
- NumberSubstitution.cs
- WindowsSecurityToken.cs
- CapabilitiesRule.cs
- SessionStateItemCollection.cs
- SQLInt64Storage.cs
- WindowsListViewScroll.cs
- SimpleWorkerRequest.cs
- DataFormats.cs
- Journaling.cs
- BinaryObjectInfo.cs
- StyleSheet.cs
- EventItfInfo.cs
- CancellableEnumerable.cs
- _NetRes.cs
- Parser.cs
- AddInEnvironment.cs
- CheckPair.cs
- TreeViewCancelEvent.cs
- CounterCreationDataCollection.cs
- PageFunction.cs
- Hash.cs
- SettingsBase.cs
- XmlWhitespace.cs
- ContainerFilterService.cs
- ManagementObjectSearcher.cs
- TextElementAutomationPeer.cs
- TreeNodeCollection.cs
- MediaTimeline.cs
- PageBuildProvider.cs
- MessageBox.cs
- InvalidEnumArgumentException.cs
- PasswordBoxAutomationPeer.cs
- TextRunProperties.cs
- Figure.cs
- UnknownBitmapEncoder.cs
- ProcessMessagesAsyncResult.cs
- MethodMessage.cs
- PrefixHandle.cs
- UnmanagedMarshal.cs
- HtmlImage.cs
- LocatorPart.cs
- ImageAnimator.cs
- StandardToolWindows.cs
- XmlSerializationWriter.cs
- FormsAuthenticationModule.cs
- KeysConverter.cs
- UIntPtr.cs
- EdmRelationshipRoleAttribute.cs
- HttpFileCollection.cs
- WebBaseEventKeyComparer.cs
- IpcServerChannel.cs
- EntityDataSourceStatementEditor.cs
- DynamicObjectAccessor.cs
- BrowserCapabilitiesFactoryBase.cs
- PeerApplication.cs
- LineGeometry.cs
- XmlWriter.cs
- RowToParametersTransformer.cs
- DataGridViewColumnStateChangedEventArgs.cs