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
- InternalBufferOverflowException.cs
- SelectedCellsCollection.cs
- TypeResolver.cs
- TabControl.cs
- XmlQueryContext.cs
- XhtmlConformanceSection.cs
- NetNamedPipeBindingElement.cs
- JoinSymbol.cs
- Boolean.cs
- ZipIOLocalFileHeader.cs
- SmiEventStream.cs
- FormView.cs
- Scene3D.cs
- DBConcurrencyException.cs
- Registration.cs
- SafeNativeMethods.cs
- ObjectDataSource.cs
- ScriptRegistrationManager.cs
- HtmlButton.cs
- ListViewItemMouseHoverEvent.cs
- UserUseLicenseDictionaryLoader.cs
- PersonalizationStateQuery.cs
- PartialList.cs
- ApplicationInfo.cs
- EntityContainerEmitter.cs
- SqlUtil.cs
- RijndaelManagedTransform.cs
- NativeMethods.cs
- _Semaphore.cs
- ToolBar.cs
- AliasedExpr.cs
- ListBindingHelper.cs
- ContentDefinition.cs
- CorrelationManager.cs
- ProxySimple.cs
- DesignTimeParseData.cs
- HostingEnvironment.cs
- TextBreakpoint.cs
- PipeException.cs
- UndoManager.cs
- XsltSettings.cs
- ResourceWriter.cs
- RuntimeHelpers.cs
- X509ClientCertificateAuthentication.cs
- ObjectDesignerDataSourceView.cs
- ContextMenuStripGroupCollection.cs
- IndentedWriter.cs
- XmlReflectionMember.cs
- CompiledQueryCacheKey.cs
- Speller.cs
- Header.cs
- UnsafeNativeMethods.cs
- EnumerableCollectionView.cs
- HostedTransportConfigurationBase.cs
- MetadataProperty.cs
- MetadataItem.cs
- HashRepartitionStream.cs
- DebugInfoGenerator.cs
- ListViewItem.cs
- IssuanceLicense.cs
- BamlLocalizableResourceKey.cs
- PageStatePersister.cs
- MsmqHostedTransportManager.cs
- FunctionUpdateCommand.cs
- EventTrigger.cs
- DecimalFormatter.cs
- AsyncOperationContext.cs
- WindowsPen.cs
- StorageEntitySetMapping.cs
- AutomationAttributeInfo.cs
- TypeElement.cs
- ScriptMethodAttribute.cs
- MenuBase.cs
- ByteStream.cs
- _HeaderInfoTable.cs
- ThicknessConverter.cs
- PerfCounters.cs
- TextFormatterImp.cs
- NativeMethods.cs
- CompilationUnit.cs
- TextBoxView.cs
- DayRenderEvent.cs
- DescendantBaseQuery.cs
- ImageFormat.cs
- DocumentPageView.cs
- ValidationSummary.cs
- FixedDocumentSequencePaginator.cs
- ExtendedPropertyDescriptor.cs
- XslTransform.cs
- WmlPageAdapter.cs
- Reference.cs
- QueryPageSettingsEventArgs.cs
- BinaryOperationBinder.cs
- DateTimeAutomationPeer.cs
- VisualStyleRenderer.cs
- MatchingStyle.cs
- MDIClient.cs
- MenuCommand.cs
- GestureRecognitionResult.cs
- RichTextBox.cs