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
- Funcletizer.cs
- SecurityHelper.cs
- SQLSingleStorage.cs
- BamlTreeUpdater.cs
- RectangleF.cs
- SimpleLine.cs
- SqlRowUpdatedEvent.cs
- ThreadAttributes.cs
- AppDomainManager.cs
- DelegateBodyWriter.cs
- LookupNode.cs
- FusionWrap.cs
- RSAPKCS1KeyExchangeDeformatter.cs
- CounterCreationDataCollection.cs
- Peer.cs
- SizeConverter.cs
- KeyInterop.cs
- OperandQuery.cs
- IdentifierService.cs
- EndpointDiscoveryMetadataCD1.cs
- PrintingPermissionAttribute.cs
- IsolatedStorageException.cs
- SpecialTypeDataContract.cs
- WebConfigurationHostFileChange.cs
- ContextQuery.cs
- ListViewTableCell.cs
- RestHandler.cs
- SmtpReplyReader.cs
- QualifiedCellIdBoolean.cs
- ActivitySurrogateSelector.cs
- XPathSingletonIterator.cs
- TreeNodeStyleCollection.cs
- CompilationUtil.cs
- NativeCompoundFileAPIs.cs
- ProviderConnectionPoint.cs
- BamlTreeNode.cs
- ModelItemImpl.cs
- FontFamily.cs
- DependentList.cs
- TextPenaltyModule.cs
- ControlPersister.cs
- DBNull.cs
- CrossSiteScriptingValidation.cs
- NegatedCellConstant.cs
- DataGridHeaderBorder.cs
- DrawingCollection.cs
- FormViewInsertEventArgs.cs
- ServiceNameCollection.cs
- TdsParser.cs
- TypeKeyValue.cs
- GeometryDrawing.cs
- ServiceObjectContainer.cs
- Model3D.cs
- TracedNativeMethods.cs
- StrongNameKeyPair.cs
- oledbconnectionstring.cs
- GeneratedView.cs
- CaseInsensitiveOrdinalStringComparer.cs
- PenLineCapValidation.cs
- XmlSchemaChoice.cs
- MouseBinding.cs
- ScrollableControl.cs
- SqlCacheDependencySection.cs
- DummyDataSource.cs
- CapacityStreamGeometryContext.cs
- ScopelessEnumAttribute.cs
- ClaimTypeElementCollection.cs
- MouseWheelEventArgs.cs
- COM2FontConverter.cs
- ParameterBuilder.cs
- DataGridViewSelectedColumnCollection.cs
- DrawingState.cs
- ZipIOExtraFieldElement.cs
- TextContainer.cs
- HandledMouseEvent.cs
- RegisteredHiddenField.cs
- TypeConverter.cs
- FileSystemEventArgs.cs
- XamlInterfaces.cs
- MappingException.cs
- ParentUndoUnit.cs
- BamlRecords.cs
- Page.cs
- DataGridViewAutoSizeModeEventArgs.cs
- MethodBody.cs
- Options.cs
- DictionaryContent.cs
- OleDbTransaction.cs
- UInt64Storage.cs
- CompoundFileReference.cs
- MetadataHelper.cs
- DriveInfo.cs
- Calendar.cs
- FrameworkContentElementAutomationPeer.cs
- CookielessHelper.cs
- WebBrowserEvent.cs
- DescendantBaseQuery.cs
- ForeignKeyFactory.cs
- EntityChangedParams.cs
- Listbox.cs