Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / wpf / src / Framework / System / Windows / Documents / nulltextcontainer.cs / 1 / nulltextcontainer.cs
//----------------------------------------------------------------------------
//
// Copyright (C) 2003 by Microsoft Corporation. All rights reserved.
//
//
// Description:
// NullTextContainer is an immutable empty TextContainer that contains
// single collapsed Start/End position. This is primarily used internally
// so parameter check is mostly replaced with debug assert.
//
// History:
// 07/14/2004 - Zhenbin Xu (ZhenbinX) - Created.
//
//---------------------------------------------------------------------------
namespace System.Windows.Documents
{
using System;
using System.Diagnostics;
using System.Windows.Threading;
using System.Windows; // DependencyID etc.
using MS.Internal.Documents;
using MS.Internal;
//=====================================================================
///
/// NullTextContainer is an immutable empty TextContainer that contains
/// single collapsed Start/End position. This is primarily used internally
/// so parameter check is mostly replaced with debug assert.
///
internal sealed class NullTextContainer : ITextContainer
{
//-------------------------------------------------------------------
//
// Connstructors
//
//----------------------------------------------------------------------
#region Constructors
internal NullTextContainer()
{
_start = new NullTextPointer(this, LogicalDirection.Backward);
_end = new NullTextPointer(this, LogicalDirection.Forward);
}
#endregion Constructors
//-------------------------------------------------------------------
//
// Public Methods
//
//----------------------------------------------------------------------
#region Public Methods
//
// This is readonly Text OM. All modification methods returns false
//
void ITextContainer.BeginChange()
{
}
///
///
///
void ITextContainer.BeginChangeNoUndo()
{
// We don't support undo, so follow the BeginChange codepath.
((ITextContainer)this).BeginChange();
}
///
///
void ITextContainer.EndChange()
{
((ITextContainer)this).EndChange(false /* skipEvents */);
}
///
///
void ITextContainer.EndChange(bool skipEvents)
{
}
// Allocate a new ITextPointer at the specified offset.
// Equivalent to this.Start.CreatePointer(offset), but does not
// necessarily allocate this.Start.
ITextPointer ITextContainer.CreatePointerAtOffset(int offset, LogicalDirection direction)
{
return ((ITextContainer)this).Start.CreatePointer(offset, direction);
}
// Not Implemented.
ITextPointer ITextContainer.CreatePointerAtCharOffset(int charOffset, LogicalDirection direction)
{
throw new NotImplementedException();
}
ITextPointer ITextContainer.CreateDynamicTextPointer(StaticTextPointer position, LogicalDirection direction)
{
return ((ITextPointer)position.Handle0).CreatePointer(direction);
}
StaticTextPointer ITextContainer.CreateStaticPointerAtOffset(int offset)
{
return new StaticTextPointer(this, ((ITextContainer)this).CreatePointerAtOffset(offset, LogicalDirection.Forward));
}
TextPointerContext ITextContainer.GetPointerContext(StaticTextPointer pointer, LogicalDirection direction)
{
return ((ITextPointer)pointer.Handle0).GetPointerContext(direction);
}
int ITextContainer.GetOffsetToPosition(StaticTextPointer position1, StaticTextPointer position2)
{
return ((ITextPointer)position1.Handle0).GetOffsetToPosition((ITextPointer)position2.Handle0);
}
int ITextContainer.GetTextInRun(StaticTextPointer position, LogicalDirection direction, char[] textBuffer, int startIndex, int count)
{
return ((ITextPointer)position.Handle0).GetTextInRun(direction, textBuffer, startIndex, count);
}
object ITextContainer.GetAdjacentElement(StaticTextPointer position, LogicalDirection direction)
{
return ((ITextPointer)position.Handle0).GetAdjacentElement(direction);
}
DependencyObject ITextContainer.GetParent(StaticTextPointer position)
{
return null;
}
StaticTextPointer ITextContainer.CreatePointer(StaticTextPointer position, int offset)
{
return new StaticTextPointer(this, ((ITextPointer)position.Handle0).CreatePointer(offset));
}
StaticTextPointer ITextContainer.GetNextContextPosition(StaticTextPointer position, LogicalDirection direction)
{
return new StaticTextPointer(this, ((ITextPointer)position.Handle0).GetNextContextPosition(direction));
}
int ITextContainer.CompareTo(StaticTextPointer position1, StaticTextPointer position2)
{
return ((ITextPointer)position1.Handle0).CompareTo((ITextPointer)position2.Handle0);
}
int ITextContainer.CompareTo(StaticTextPointer position1, ITextPointer position2)
{
return ((ITextPointer)position1.Handle0).CompareTo(position2);
}
object ITextContainer.GetValue(StaticTextPointer position, DependencyProperty formattingProperty)
{
return ((ITextPointer)position.Handle0).GetValue(formattingProperty);
}
#endregion Public Methods
//--------------------------------------------------------------------
//
// Public Properties
//
//---------------------------------------------------------------------
#region Public Properties
///
///
///
bool ITextContainer.IsReadOnly
{
get
{
return true;
}
}
///
///
///
ITextPointer ITextContainer.Start
{
get
{
Debug.Assert(_start != null);
return _start;
}
}
///
///
///
ITextPointer ITextContainer.End
{
get
{
Debug.Assert(_end != null);
return _end;
}
}
///
/// Autoincremented counter of content changes in this TextContainer
///
uint ITextContainer.Generation
{
get
{
// For read-only content, return some constant value.
return 0;
}
}
///
/// Collection of highlights applied to TextContainer content.
///
Highlights ITextContainer.Highlights
{
get
{
//agurcan: The following line makes it hard to use debugger on FDS code so I'm commenting it out
//Debug.Assert(false, "Unexpected Highlights access on NullTextContainer!");
return null;
}
}
///
///
///
DependencyObject ITextContainer.Parent
{
get { return null; }
}
// Optional text selection, always null for this ITextContainer.
ITextSelection ITextContainer.TextSelection
{
get { return null; }
set { Invariant.Assert(false, "NullTextContainer is never associated with a TextEditor/TextSelection!"); }
}
// Optional undo manager, always null for this ITextContainer.
UndoManager ITextContainer.UndoManager { get { return null; } }
//
// Copyright (C) 2003 by Microsoft Corporation. All rights reserved.
//
//
// Description:
// NullTextContainer is an immutable empty TextContainer that contains
// single collapsed Start/End position. This is primarily used internally
// so parameter check is mostly replaced with debug assert.
//
// History:
// 07/14/2004 - Zhenbin Xu (ZhenbinX) - Created.
//
//---------------------------------------------------------------------------
namespace System.Windows.Documents
{
using System;
using System.Diagnostics;
using System.Windows.Threading;
using System.Windows; // DependencyID etc.
using MS.Internal.Documents;
using MS.Internal;
//=====================================================================
///
/// NullTextContainer is an immutable empty TextContainer that contains
/// single collapsed Start/End position. This is primarily used internally
/// so parameter check is mostly replaced with debug assert.
///
internal sealed class NullTextContainer : ITextContainer
{
//-------------------------------------------------------------------
//
// Connstructors
//
//----------------------------------------------------------------------
#region Constructors
internal NullTextContainer()
{
_start = new NullTextPointer(this, LogicalDirection.Backward);
_end = new NullTextPointer(this, LogicalDirection.Forward);
}
#endregion Constructors
//-------------------------------------------------------------------
//
// Public Methods
//
//----------------------------------------------------------------------
#region Public Methods
//
// This is readonly Text OM. All modification methods returns false
//
void ITextContainer.BeginChange()
{
}
///
///
///
void ITextContainer.BeginChangeNoUndo()
{
// We don't support undo, so follow the BeginChange codepath.
((ITextContainer)this).BeginChange();
}
///
///
void ITextContainer.EndChange()
{
((ITextContainer)this).EndChange(false /* skipEvents */);
}
///
///
void ITextContainer.EndChange(bool skipEvents)
{
}
// Allocate a new ITextPointer at the specified offset.
// Equivalent to this.Start.CreatePointer(offset), but does not
// necessarily allocate this.Start.
ITextPointer ITextContainer.CreatePointerAtOffset(int offset, LogicalDirection direction)
{
return ((ITextContainer)this).Start.CreatePointer(offset, direction);
}
// Not Implemented.
ITextPointer ITextContainer.CreatePointerAtCharOffset(int charOffset, LogicalDirection direction)
{
throw new NotImplementedException();
}
ITextPointer ITextContainer.CreateDynamicTextPointer(StaticTextPointer position, LogicalDirection direction)
{
return ((ITextPointer)position.Handle0).CreatePointer(direction);
}
StaticTextPointer ITextContainer.CreateStaticPointerAtOffset(int offset)
{
return new StaticTextPointer(this, ((ITextContainer)this).CreatePointerAtOffset(offset, LogicalDirection.Forward));
}
TextPointerContext ITextContainer.GetPointerContext(StaticTextPointer pointer, LogicalDirection direction)
{
return ((ITextPointer)pointer.Handle0).GetPointerContext(direction);
}
int ITextContainer.GetOffsetToPosition(StaticTextPointer position1, StaticTextPointer position2)
{
return ((ITextPointer)position1.Handle0).GetOffsetToPosition((ITextPointer)position2.Handle0);
}
int ITextContainer.GetTextInRun(StaticTextPointer position, LogicalDirection direction, char[] textBuffer, int startIndex, int count)
{
return ((ITextPointer)position.Handle0).GetTextInRun(direction, textBuffer, startIndex, count);
}
object ITextContainer.GetAdjacentElement(StaticTextPointer position, LogicalDirection direction)
{
return ((ITextPointer)position.Handle0).GetAdjacentElement(direction);
}
DependencyObject ITextContainer.GetParent(StaticTextPointer position)
{
return null;
}
StaticTextPointer ITextContainer.CreatePointer(StaticTextPointer position, int offset)
{
return new StaticTextPointer(this, ((ITextPointer)position.Handle0).CreatePointer(offset));
}
StaticTextPointer ITextContainer.GetNextContextPosition(StaticTextPointer position, LogicalDirection direction)
{
return new StaticTextPointer(this, ((ITextPointer)position.Handle0).GetNextContextPosition(direction));
}
int ITextContainer.CompareTo(StaticTextPointer position1, StaticTextPointer position2)
{
return ((ITextPointer)position1.Handle0).CompareTo((ITextPointer)position2.Handle0);
}
int ITextContainer.CompareTo(StaticTextPointer position1, ITextPointer position2)
{
return ((ITextPointer)position1.Handle0).CompareTo(position2);
}
object ITextContainer.GetValue(StaticTextPointer position, DependencyProperty formattingProperty)
{
return ((ITextPointer)position.Handle0).GetValue(formattingProperty);
}
#endregion Public Methods
//--------------------------------------------------------------------
//
// Public Properties
//
//---------------------------------------------------------------------
#region Public Properties
///
///
///
bool ITextContainer.IsReadOnly
{
get
{
return true;
}
}
///
///
///
ITextPointer ITextContainer.Start
{
get
{
Debug.Assert(_start != null);
return _start;
}
}
///
///
///
ITextPointer ITextContainer.End
{
get
{
Debug.Assert(_end != null);
return _end;
}
}
///
/// Autoincremented counter of content changes in this TextContainer
///
uint ITextContainer.Generation
{
get
{
// For read-only content, return some constant value.
return 0;
}
}
///
/// Collection of highlights applied to TextContainer content.
///
Highlights ITextContainer.Highlights
{
get
{
//agurcan: The following line makes it hard to use debugger on FDS code so I'm commenting it out
//Debug.Assert(false, "Unexpected Highlights access on NullTextContainer!");
return null;
}
}
///
///
///
DependencyObject ITextContainer.Parent
{
get { return null; }
}
// Optional text selection, always null for this ITextContainer.
ITextSelection ITextContainer.TextSelection
{
get { return null; }
set { Invariant.Assert(false, "NullTextContainer is never associated with a TextEditor/TextSelection!"); }
}
// Optional undo manager, always null for this ITextContainer.
UndoManager ITextContainer.UndoManager { get { return null; } }
//
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- TargetException.cs
- ProfilePropertySettings.cs
- XmlSerializerAssemblyAttribute.cs
- SqlConnectionManager.cs
- PropertyEmitter.cs
- LinkTarget.cs
- NameTable.cs
- UniformGrid.cs
- DotExpr.cs
- ToolStripRendererSwitcher.cs
- SignatureResourcePool.cs
- DataSourceControlBuilder.cs
- TextTreeObjectNode.cs
- SqlNotificationRequest.cs
- DataGridViewColumnEventArgs.cs
- SortDescription.cs
- TypeLibConverter.cs
- StringKeyFrameCollection.cs
- DataServiceConfiguration.cs
- KeyProperty.cs
- AggregateException.cs
- UnmanagedBitmapWrapper.cs
- TraceXPathNavigator.cs
- RootBrowserWindowAutomationPeer.cs
- CollectionConverter.cs
- ListComponentEditor.cs
- ValidationPropertyAttribute.cs
- Types.cs
- WebPartDescriptionCollection.cs
- ItemCheckEvent.cs
- ChildrenQuery.cs
- DecoderBestFitFallback.cs
- EntityDataSourceDesigner.cs
- XmlSchemaSubstitutionGroup.cs
- TraceListener.cs
- GraphicsPathIterator.cs
- SQLInt64Storage.cs
- Style.cs
- Guid.cs
- WindowsRebar.cs
- Internal.cs
- PropertyItemInternal.cs
- TypeLoadException.cs
- MasterPageCodeDomTreeGenerator.cs
- DiscoveryMessageProperty.cs
- MimeObjectFactory.cs
- HTTPNotFoundHandler.cs
- XmlSchemaAnnotated.cs
- MetadataCacheItem.cs
- CqlParserHelpers.cs
- ButtonChrome.cs
- TableItemPatternIdentifiers.cs
- ProtocolsConfigurationEntry.cs
- RuleSettingsCollection.cs
- WorkflowControlEndpoint.cs
- SpnegoTokenProvider.cs
- DirectoryInfo.cs
- DriveInfo.cs
- MissingSatelliteAssemblyException.cs
- DataGridViewCellLinkedList.cs
- DataRecordInfo.cs
- Floater.cs
- AdornerLayer.cs
- InvalidDocumentContentsException.cs
- TransactionTable.cs
- DataGridCell.cs
- XmlElementAttributes.cs
- HtmlButton.cs
- XPathItem.cs
- ToggleProviderWrapper.cs
- ObjectViewListener.cs
- ExceptionValidationRule.cs
- TransportContext.cs
- Debug.cs
- RawStylusInputReport.cs
- Quaternion.cs
- ByteConverter.cs
- MasterPageCodeDomTreeGenerator.cs
- GridView.cs
- ProcessHostServerConfig.cs
- CharEnumerator.cs
- EventItfInfo.cs
- TextPointer.cs
- DataGridColumnReorderingEventArgs.cs
- ConfigurationStrings.cs
- Task.cs
- DispatcherOperation.cs
- ExpressionEditorAttribute.cs
- DataGridViewCell.cs
- SpellerInterop.cs
- SmiSettersStream.cs
- TextServicesCompartment.cs
- Propagator.cs
- SqlFlattener.cs
- SrgsToken.cs
- CreateSequenceResponse.cs
- MenuTracker.cs
- ContentFileHelper.cs
- COAUTHIDENTITY.cs
- MsmqException.cs