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
- DaylightTime.cs
- SamlSerializer.cs
- WebBaseEventKeyComparer.cs
- Transform.cs
- MenuCommand.cs
- SmiEventStream.cs
- FloatUtil.cs
- AspNetSynchronizationContext.cs
- _LazyAsyncResult.cs
- LoginStatusDesigner.cs
- WebOperationContext.cs
- ObjectDataSourceView.cs
- Interfaces.cs
- TraceEventCache.cs
- FixedBufferAttribute.cs
- QueryPageSettingsEventArgs.cs
- ConfigXmlText.cs
- SudsCommon.cs
- ObjectReaderCompiler.cs
- CookieHandler.cs
- ScriptReference.cs
- SerializerDescriptor.cs
- LicenseProviderAttribute.cs
- DataGridViewCellValueEventArgs.cs
- RepeaterItemCollection.cs
- XPathAncestorQuery.cs
- OpCellTreeNode.cs
- EndOfStreamException.cs
- CustomWebEventKey.cs
- PenThreadWorker.cs
- EntityModelSchemaGenerator.cs
- XPathPatternParser.cs
- ImageCodecInfoPrivate.cs
- sitestring.cs
- CodeIterationStatement.cs
- Point.cs
- PerfService.cs
- Certificate.cs
- InputScope.cs
- FloatUtil.cs
- UpDownBaseDesigner.cs
- HasCopySemanticsAttribute.cs
- SizeF.cs
- DataControlFieldCell.cs
- PrintController.cs
- GridViewRowCollection.cs
- parserscommon.cs
- Regex.cs
- PeerCollaboration.cs
- Script.cs
- LineInfo.cs
- Fx.cs
- ParallelDesigner.xaml.cs
- ShimAsPublicXamlType.cs
- DataGridCommandEventArgs.cs
- ServiceInfoCollection.cs
- ErrorEventArgs.cs
- GridItemPattern.cs
- ServiceDebugElement.cs
- EntityCommandCompilationException.cs
- MarshalByValueComponent.cs
- SizeAnimation.cs
- OracleFactory.cs
- SmiRecordBuffer.cs
- QilNode.cs
- RealProxy.cs
- ProtocolElement.cs
- SqlDuplicator.cs
- TextEditorCharacters.cs
- CryptoProvider.cs
- DelegateBodyWriter.cs
- OdbcConnectionOpen.cs
- EventBindingService.cs
- util.cs
- SpecialTypeDataContract.cs
- StringUtil.cs
- QilChoice.cs
- HtmlWindow.cs
- TextFormatter.cs
- DataControlFieldHeaderCell.cs
- DesignerVerbCollection.cs
- BamlTreeUpdater.cs
- LayoutEngine.cs
- TracedNativeMethods.cs
- BooleanFacetDescriptionElement.cs
- BasicCellRelation.cs
- ACE.cs
- TransformConverter.cs
- formatstringdialog.cs
- OutOfMemoryException.cs
- DefaultTextStore.cs
- WebPartTracker.cs
- CustomErrorsSectionWrapper.cs
- EventBuilder.cs
- EventsTab.cs
- ContractComponent.cs
- JsonReaderDelegator.cs
- TreeNodeMouseHoverEvent.cs
- XmlMembersMapping.cs
- TextContainerChangedEventArgs.cs