Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Framework / System / Windows / Documents / ValidationHelper.cs / 1 / ValidationHelper.cs
//----------------------------------------------------------------------------
//
// File: ValidationHelper.cs
//
// Copyright (C) Microsoft Corporation. All rights reserved.
//
// Description: Helpers for TOM parameter validation.
//
//---------------------------------------------------------------------------
namespace System.Windows.Documents
{
using MS.Internal; // Invariant.Assert
using System.ComponentModel;
using System.Windows;
using System.Windows.Media;
internal static class ValidationHelper
{
//-----------------------------------------------------
//
// Internal Methods
//
//-----------------------------------------------------
#region Internal Methods
// Verifies a TextPointer is non-null and
// is associated with a given TextContainer.
//
// Throws an appropriate exception if a test fails.
internal static void VerifyPosition(ITextContainer tree, ITextPointer position)
{
VerifyPosition(tree, position, "position");
}
// Verifies a TextPointer is non-null and is associated with a given TextContainer.
//
// Throws an appropriate exception if a test fails.
internal static void VerifyPosition(ITextContainer container, ITextPointer position, string paramName)
{
if (position == null)
{
throw new ArgumentNullException(paramName);
}
if (position.TextContainer != container)
{
throw new ArgumentException(SR.Get(SRID.NotInAssociatedTree, paramName));
}
}
// Verifies two positions are safe to use as a logical text span.
//
// Throws ArgumentNullException if startPosition == null || endPosition == null
// ArgumentException if startPosition.TextContainer != endPosition.TextContainer or
// startPosition > endPosition
internal static void VerifyPositionPair(ITextPointer startPosition, ITextPointer endPosition)
{
if (startPosition == null)
{
throw new ArgumentNullException("startPosition");
}
if (endPosition == null)
{
throw new ArgumentNullException("endPosition");
}
if (startPosition.TextContainer != endPosition.TextContainer)
{
throw new ArgumentException(SR.Get(SRID.InDifferentTextContainers, "startPosition", "endPosition"));
}
if (startPosition.CompareTo(endPosition) > 0)
{
throw new ArgumentException(SR.Get(SRID.BadTextPositionOrder, "startPosition", "endPosition"));
}
}
// Throws an ArgumentException if direction is not a valid enum.
internal static void VerifyDirection(LogicalDirection direction, string argumentName)
{
if (direction != LogicalDirection.Forward &&
direction != LogicalDirection.Backward)
{
throw new InvalidEnumArgumentException(argumentName, (int)direction, typeof(LogicalDirection));
}
}
// Throws an ArgumentException if edge is not a valid enum.
internal static void VerifyElementEdge(ElementEdge edge, string param)
{
if (edge != ElementEdge.BeforeStart &&
edge != ElementEdge.AfterStart &&
edge != ElementEdge.BeforeEnd &&
edge != ElementEdge.AfterEnd)
{
throw new InvalidEnumArgumentException(param, (int)edge, typeof(ElementEdge));
}
}
// ...............................................................
//
// TextSchema Validation
//
// ...............................................................
// Checks whether it is valid to insert the child object at passed position.
internal static void ValidateChild(TextPointer position, object child, string paramName)
{
Invariant.Assert(position != null);
Invariant.Assert(position.Parent != null);
if (child == null)
{
throw new ArgumentNullException(paramName);
}
if (!TextSchema.IsValidChild(/*position:*/position, /*childType:*/child.GetType()))
{
throw new ArgumentException(SR.Get(SRID.TextSchema_ChildTypeIsInvalid, position.Parent.GetType().Name, child.GetType().Name));
}
// The new child should not be currently in other text tree
if (child is TextElement)
{
if (((TextElement)child).Parent != null)
{
throw new ArgumentException(SR.Get(SRID.TextSchema_TheChildElementBelongsToAnotherTreeAlready, child.GetType().Name));
}
}
else
{
Invariant.Assert(child is UIElement);
// Cannot call UIElement.Parent across assembly boundary. So skip this part of validation. This condition will be checked elsewhere anyway.
//if (((UIElement)child).Parent != null)
//{
// throw new ArgumentException(SR.Get(SRID.TextSchema_TheChildElementBelongsToAnotherTreeAlready, child.GetType().Name));
//}
}
}
#endregion Internal methods
}
}
// 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
- SdlChannelSink.cs
- ArraySegment.cs
- RequestQueue.cs
- Matrix3DConverter.cs
- hebrewshape.cs
- TextEditorSelection.cs
- Formatter.cs
- TextStore.cs
- ComplexObject.cs
- XhtmlBasicLabelAdapter.cs
- Composition.cs
- SqlRewriteScalarSubqueries.cs
- DataBoundControlAdapter.cs
- EmitterCache.cs
- WindowsGrip.cs
- Speller.cs
- SqlClientWrapperSmiStream.cs
- CallbackHandler.cs
- SafeUserTokenHandle.cs
- ListViewItemSelectionChangedEvent.cs
- TableRow.cs
- TableAdapterManagerHelper.cs
- XmlMapping.cs
- ExtentKey.cs
- FileDataSourceCache.cs
- SafeRightsManagementPubHandle.cs
- DataGridViewEditingControlShowingEventArgs.cs
- DictionaryContent.cs
- KeyboardNavigation.cs
- PropertySourceInfo.cs
- ExpandableObjectConverter.cs
- CryptographicAttribute.cs
- SafeBitVector32.cs
- TrackingProfileCache.cs
- ContextStack.cs
- SqlDataSourceSelectingEventArgs.cs
- ClockGroup.cs
- Serializer.cs
- StateMachine.cs
- BitmapEffectGroup.cs
- OdbcUtils.cs
- WebPartConnectionsConfigureVerb.cs
- entitydatasourceentitysetnameconverter.cs
- DataSourceCache.cs
- AuthenticatedStream.cs
- DrawingServices.cs
- FamilyMap.cs
- Enum.cs
- ButtonBase.cs
- TransformGroup.cs
- RandomNumberGenerator.cs
- typedescriptorpermission.cs
- DateTimeSerializationSection.cs
- ListDependantCardsRequest.cs
- DataGridState.cs
- StrokeFIndices.cs
- TraceFilter.cs
- ObjectListItemCollection.cs
- UnknownBitmapDecoder.cs
- InfoCardCryptoHelper.cs
- RSACryptoServiceProvider.cs
- RawStylusInputCustomDataList.cs
- ListManagerBindingsCollection.cs
- PointUtil.cs
- Win32KeyboardDevice.cs
- RoutedEventValueSerializer.cs
- PowerStatus.cs
- ToolStripOverflow.cs
- EncoderExceptionFallback.cs
- ObjectRef.cs
- ByteStorage.cs
- StateDesigner.cs
- ContextDataSourceContextData.cs
- UpdateManifestForBrowserApplication.cs
- ServiceNameCollection.cs
- RegexFCD.cs
- DependencyPropertyKey.cs
- HtmlInputImage.cs
- CasesDictionary.cs
- WebPartConnectVerb.cs
- WebConfigurationHost.cs
- StringResourceManager.cs
- EntitySetBaseCollection.cs
- WsrmFault.cs
- WindowsListViewSubItem.cs
- ZipIOLocalFileBlock.cs
- ScriptingRoleServiceSection.cs
- CodeAssignStatement.cs
- ToolStripManager.cs
- DataGridViewCheckBoxCell.cs
- Win32KeyboardDevice.cs
- _CommandStream.cs
- SortedDictionary.cs
- XmlAnyElementAttribute.cs
- Sql8ConformanceChecker.cs
- SapiRecoContext.cs
- HwndHostAutomationPeer.cs
- ChannelManager.cs
- EmptyTextWriter.cs
- InternalPermissions.cs