Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / wpf / src / Framework / System / Windows / Annotations / AnnotationComponentChooser.cs / 1 / 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
- ExplicitDiscriminatorMap.cs
- DecimalConverter.cs
- ProfileEventArgs.cs
- DataGridViewLinkColumn.cs
- SmuggledIUnknown.cs
- SafeJobHandle.cs
- HiddenField.cs
- JsonReaderDelegator.cs
- ObjectFullSpanRewriter.cs
- Size3D.cs
- UTF8Encoding.cs
- HTMLTagNameToTypeMapper.cs
- SmtpReplyReaderFactory.cs
- Visual3D.cs
- CalculatedColumn.cs
- ReadOnlyDictionary.cs
- LocalizationParserHooks.cs
- XmlName.cs
- SQLDouble.cs
- TableColumn.cs
- StreamedWorkflowDefinitionContext.cs
- IIS7WorkerRequest.cs
- ExitEventArgs.cs
- XmlUTF8TextWriter.cs
- TextMarkerSource.cs
- Transform.cs
- DesignerTextBoxAdapter.cs
- HtmlFormWrapper.cs
- MessageQueueAccessControlEntry.cs
- EdmValidator.cs
- DynamicValueConverter.cs
- DataTrigger.cs
- ReadOnlyHierarchicalDataSource.cs
- XomlCompiler.cs
- MeasurementDCInfo.cs
- StorageBasedPackageProperties.cs
- ThrowOnMultipleAssignment.cs
- webbrowsersite.cs
- SqlConnectionString.cs
- ConfigurationConverterBase.cs
- PropertyRef.cs
- HMACSHA512.cs
- StylusEditingBehavior.cs
- RowToFieldTransformer.cs
- ZipPackagePart.cs
- SoapFormatExtensions.cs
- CollectionViewGroupInternal.cs
- ToolStripOverflowButton.cs
- TPLETWProvider.cs
- ColorInterpolationModeValidation.cs
- WebPartTransformerAttribute.cs
- FactoryId.cs
- CodeConditionStatement.cs
- SplashScreenNativeMethods.cs
- xmlsaver.cs
- BamlTreeUpdater.cs
- ListView.cs
- EventDescriptor.cs
- ParameterCollection.cs
- Predicate.cs
- storepermission.cs
- BindingNavigator.cs
- MimeTypePropertyAttribute.cs
- CoreChannel.cs
- SafeArrayRankMismatchException.cs
- Utils.cs
- PartManifestEntry.cs
- IsolatedStoragePermission.cs
- Debug.cs
- QueryMath.cs
- ClientSettingsProvider.cs
- AssociationTypeEmitter.cs
- MetadataPropertyCollection.cs
- HandleRef.cs
- ThreadExceptionEvent.cs
- DropShadowBitmapEffect.cs
- PrinterResolution.cs
- ListView.cs
- CodeIndexerExpression.cs
- ActivityBindForm.Designer.cs
- UrlPath.cs
- PtsContext.cs
- ImageMapEventArgs.cs
- DebugView.cs
- XmlObjectSerializerContext.cs
- HttpListenerResponse.cs
- XmlSchemaCompilationSettings.cs
- LowerCaseStringConverter.cs
- DataControlPagerLinkButton.cs
- ParameterInfo.cs
- DataTemplateKey.cs
- ProgramPublisher.cs
- Console.cs
- SessionPageStateSection.cs
- CapabilitiesAssignment.cs
- StringValueConverter.cs
- UriParserTemplates.cs
- BamlTreeNode.cs
- TracePayload.cs
- SwitchElementsCollection.cs