AnnotationComponentChooser.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Framework / System / Windows / Annotations / AnnotationComponentChooser.cs / 1305600 / AnnotationComponentChooser.cs

                            //---------------------------------------------------------------------------- 
// 
//    Copyright(C) Microsoft Corporation.  All rights reserved.
// 
// 
// Description:
//      AnnotationComponentChooser 
// 
// History:
//  04/01/2004 axelk:   Created AnnotationComponentChooser.cs 
//
// Copyright(C) 2002 by Microsoft Corporation.  All rights reserved.
//---------------------------------------------------------------------------
using System; 
using System.Diagnostics;
using System.Reflection; 
using System.Windows; 
using System.Windows.Controls;
using MS.Internal.Annotations; 
using MS.Internal.Annotations.Component;

namespace System.Windows.Annotations
{ 
    /// 
    /// Instances of this class choose an IAnnotationComponent for a given AttachedAnnotation. 
    /// The AnnotationService.Chooser DP is used to set such instances on the application tree. 
    /// 
    internal sealed class AnnotationComponentChooser 
    {

        #region Public Statics
 
        /*
         *  This member is not used in V1.  Its only used to set no chooser but in V1 we don't 
         *  expose changing the chooser.  We have one and only one chooser. 
         *
        ///  
        /// Singleton to set no chooser to be used.
        /// 
        public static readonly AnnotationComponentChooser None = new NoAnnotationComponentChooser();
         * 
         */
 
        #endregion Public Statics 

        #region Constructors 

        /// 
        /// Return a default AnnotationComponentChooser
        ///  
        public AnnotationComponentChooser() { }
 
        #endregion Constructors 

        #region Public Methods 

        /// 
        /// Choose an IAnnotationComponent for a given IAttachedAnnotation.  Implementation in AnnotationComponentChooser knows
        /// about all out-of-box IAnnotationComponents.  The default mapping will be stated here later. 
        /// Subclasses can overwrite this method to return application specific mapping.
        /// Note: In future release this method should be made virtual. 
        ///  
        /// The IAttachedAnnotation that needs an IAnnotationComponent 
        ///  
        public IAnnotationComponent ChooseAnnotationComponent(IAttachedAnnotation attachedAnnotation)
        {
            if (attachedAnnotation == null) throw new ArgumentNullException("attachedAnnotation");
 
            IAnnotationComponent ac = null;
 
            // Text StickyNote 
            if (attachedAnnotation.Annotation.AnnotationType == StickyNoteControl.TextSchemaName)
            { 
                ac = new StickyNoteControl(StickyNoteType.Text) as IAnnotationComponent;
            }
            // Ink StickyNote
            else if (attachedAnnotation.Annotation.AnnotationType == StickyNoteControl.InkSchemaName) 
            {
                ac = new StickyNoteControl(StickyNoteType.Ink) as IAnnotationComponent; 
            } 
            // Highlight
            else if (attachedAnnotation.Annotation.AnnotationType == HighlightComponent.TypeName) 
            {
                ac = new HighlightComponent() as IAnnotationComponent;
            }
 
            return ac;
        } 
 
        #endregion Public Methods
 
        #region Private Classes
        /*
         * This class won't be used in V1.  We have one and only one chooser.  There's no way to change it.
         * 
        /// 
        /// There is only one instance of this class (in AnnotationComponentChooser.None), it always returns null for any given IAttachedAnnotation. 
        /// It does not throw an exception for a null attached annotation. 
        /// It indicates that no choosing should be performed in the subtree that the instance is attached to.
        ///  
        private class NoAnnotationComponentChooser : AnnotationComponentChooser
        {
            public override IAnnotationComponent ChooseAnnotationComponent(IAttachedAnnotation attachedAnnotation)
            { 
                return null;
            } 
        } 
         *
         */ 
        #endregion Private Classes
    }
}

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.


                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK