Code:
/ 4.0 / 4.0 / 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.
//----------------------------------------------------------------------------
//
// 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

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- OptimisticConcurrencyException.cs
- InfoCardRSAPKCS1KeyExchangeDeformatter.cs
- HMACSHA384.cs
- UrlPath.cs
- externdll.cs
- TextServicesCompartmentEventSink.cs
- RectKeyFrameCollection.cs
- DecimalFormatter.cs
- SqlDataSourceCommandEventArgs.cs
- NavigationCommands.cs
- DataBoundLiteralControl.cs
- DiscardableAttribute.cs
- RealProxy.cs
- Executor.cs
- SchemaImporterExtension.cs
- ToolStripRenderer.cs
- AsmxEndpointPickerExtension.cs
- ClonableStack.cs
- DataViewManagerListItemTypeDescriptor.cs
- MulticastOption.cs
- SectionXmlInfo.cs
- HttpBrowserCapabilitiesWrapper.cs
- RowSpanVector.cs
- ConfigXmlText.cs
- SynchronizedInputHelper.cs
- Mappings.cs
- KerberosSecurityTokenParameters.cs
- SqlUDTStorage.cs
- Trace.cs
- SelectionEditingBehavior.cs
- InheritedPropertyDescriptor.cs
- StructureChangedEventArgs.cs
- UnmanagedBitmapWrapper.cs
- XmlDownloadManager.cs
- MessageQueuePermission.cs
- InstanceNotFoundException.cs
- SequentialActivityDesigner.cs
- ListViewContainer.cs
- AutomationElement.cs
- TreeViewImageKeyConverter.cs
- ImageListStreamer.cs
- SqlRecordBuffer.cs
- XPathDocument.cs
- StringSorter.cs
- TitleStyle.cs
- PropertyOverridesDialog.cs
- MediaScriptCommandRoutedEventArgs.cs
- HTTPRemotingHandler.cs
- DataGridView.cs
- StringBuilder.cs
- DefaultEventAttribute.cs
- ProtocolInformationWriter.cs
- DependencyPropertyDescriptor.cs
- GlyphTypeface.cs
- Path.cs
- Help.cs
- ManagedWndProcTracker.cs
- Byte.cs
- ControlDesignerState.cs
- SQLBytes.cs
- FileEnumerator.cs
- SqlUdtInfo.cs
- TextParagraphView.cs
- NameValuePermission.cs
- MimeTextImporter.cs
- SqlProfileProvider.cs
- Marshal.cs
- Form.cs
- PocoEntityKeyStrategy.cs
- SafeNativeMethodsOther.cs
- GrammarBuilder.cs
- Polygon.cs
- ActivityBindForm.Designer.cs
- PointLight.cs
- ClientUtils.cs
- GeometryGroup.cs
- ParserStreamGeometryContext.cs
- AssociationTypeEmitter.cs
- Point3DAnimationBase.cs
- InternalMappingException.cs
- Win32SafeHandles.cs
- ClosableStream.cs
- TextDpi.cs
- unsafenativemethodsother.cs
- ListQueryResults.cs
- XamlParser.cs
- SafeNativeMethods.cs
- PeerEndPoint.cs
- SchemaManager.cs
- Int64Animation.cs
- AttachedPropertyBrowsableAttribute.cs
- TableCell.cs
- SelectionGlyph.cs
- ResolvedKeyFrameEntry.cs
- XmlWriterSettings.cs
- OracleCommand.cs
- StringSorter.cs
- DurationConverter.cs
- RowCache.cs
- EdmValidator.cs