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
- ResourceManager.cs
- StylusShape.cs
- PropertyDescriptorCollection.cs
- DateTimeConstantAttribute.cs
- DesignerActionHeaderItem.cs
- AudienceUriMode.cs
- TagPrefixInfo.cs
- TypeLibConverter.cs
- StrongNamePublicKeyBlob.cs
- ThicknessAnimation.cs
- UpdatePanel.cs
- FontStretch.cs
- CodeDomSerializerException.cs
- TemplateKey.cs
- WebBrowsableAttribute.cs
- NameValueFileSectionHandler.cs
- HtmlMeta.cs
- SubstitutionDesigner.cs
- RuntimeConfigLKG.cs
- Point3DValueSerializer.cs
- CatalogZoneDesigner.cs
- DiscardableAttribute.cs
- Size3DValueSerializer.cs
- MsmqHostedTransportManager.cs
- KeyboardNavigation.cs
- WebPartChrome.cs
- TypeDelegator.cs
- ImageInfo.cs
- OleDbCommandBuilder.cs
- DbConnectionClosed.cs
- TemplateBaseAction.cs
- MetadataFile.cs
- XsltCompileContext.cs
- SmtpClient.cs
- WindowsUpDown.cs
- PermissionAttributes.cs
- Matrix3D.cs
- IntSecurity.cs
- _IPv6Address.cs
- XamlToRtfWriter.cs
- DataSourceViewSchemaConverter.cs
- EntityReference.cs
- CustomWebEventKey.cs
- DirtyTextRange.cs
- SiteMapDataSourceView.cs
- HtmlTableRow.cs
- PtsContext.cs
- DataRecordInfo.cs
- SimpleFileLog.cs
- ManagementInstaller.cs
- CapabilitiesAssignment.cs
- RelatedPropertyManager.cs
- InvalidCastException.cs
- ScrollChrome.cs
- AuthStoreRoleProvider.cs
- CodeCompiler.cs
- AuthenticationManager.cs
- ToolStripControlHost.cs
- FontUnit.cs
- FormViewPageEventArgs.cs
- RSAOAEPKeyExchangeDeformatter.cs
- RuntimeVariablesExpression.cs
- DownloadProgressEventArgs.cs
- ProgressBar.cs
- Fonts.cs
- coordinatorscratchpad.cs
- XpsFilter.cs
- CssStyleCollection.cs
- MenuItemStyleCollection.cs
- QualifierSet.cs
- Utility.cs
- DeviceSpecificDesigner.cs
- BindingMemberInfo.cs
- PrinterSettings.cs
- UTF7Encoding.cs
- CollectionBuilder.cs
- HttpInputStream.cs
- Pair.cs
- InfoCardSymmetricCrypto.cs
- FixedDSBuilder.cs
- SystemIPInterfaceProperties.cs
- TextAdaptor.cs
- InternalCache.cs
- EntityKeyElement.cs
- TabletDeviceInfo.cs
- InputBuffer.cs
- HtmlInputHidden.cs
- ListItemsCollectionEditor.cs
- Codec.cs
- TextOutput.cs
- DisplayNameAttribute.cs
- FacetValueContainer.cs
- AppDomainFactory.cs
- DocumentSequenceHighlightLayer.cs
- DelimitedListTraceListener.cs
- DetailsViewDeletedEventArgs.cs
- HwndProxyElementProvider.cs
- Identity.cs
- TextBoxBase.cs
- SelectionWordBreaker.cs