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 / TextTreeInsertElementUndoUnit.cs / 1 / TextTreeInsertElementUndoUnit.cs
//----------------------------------------------------------------------------
//
// File: TextTreeInsertElementUndoUnit.cs
//
// Description: Undo unit for TextContainer.InsertElement calls.
//
// History:
// 03/03/2004 : benwest - Created
//
//---------------------------------------------------------------------------
using System;
using MS.Internal;
namespace System.Windows.Documents
{
// Undo unit for TextContainer.InsertElement calls.
internal class TextTreeInsertElementUndoUnit : TextTreeUndoUnit
{
//-----------------------------------------------------
//
// Constructors
//
//-----------------------------------------------------
#region Constructors
// Creates a new undo unit instance.
// symbolOffset should be just before the start edge of the TextElement to remove.
// If deep is true, this unit will undo not only the scoping element
// insert, but also all content scoped by the element.
internal TextTreeInsertElementUndoUnit(TextContainer tree, int symbolOffset, bool deep) : base(tree, symbolOffset)
{
_deep = deep;
}
#endregion Constructors
//------------------------------------------------------
//
// Public Methods
//
//-----------------------------------------------------
#region Public Methods
// Called by the undo manager. Restores tree state to its condition
// when the unit was created. Assumes the tree state matches conditions
// just after the unit was created.
public override void DoCore()
{
TextPointer start;
TextPointer end;
TextElement element;
VerifyTreeContentHashCode();
start = new TextPointer(this.TextContainer, this.SymbolOffset, LogicalDirection.Forward);
Invariant.Assert(start.GetPointerContext(LogicalDirection.Forward) == TextPointerContext.ElementStart, "TextTree undo unit out of [....] with TextTree.");
element = start.GetAdjacentElementFromOuterPosition(LogicalDirection.Forward);
if (_deep)
{
// Extract the element and its content.
end = new TextPointer(this.TextContainer, element.TextElementNode, ElementEdge.AfterEnd);
this.TextContainer.DeleteContentInternal(start, end);
}
else
{
// Just extract the element, not its content.
this.TextContainer.ExtractElementInternal(element);
}
}
#endregion Public Methods
//------------------------------------------------------
//
// Private Fields
//
//------------------------------------------------------
#region Private Fields
// If true, this unit tracks a TextElement and its scoped content.
// Otherwise, this unit only tracks the TextElement.
private readonly bool _deep;
#endregion Private Fields
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
//----------------------------------------------------------------------------
//
// File: TextTreeInsertElementUndoUnit.cs
//
// Description: Undo unit for TextContainer.InsertElement calls.
//
// History:
// 03/03/2004 : benwest - Created
//
//---------------------------------------------------------------------------
using System;
using MS.Internal;
namespace System.Windows.Documents
{
// Undo unit for TextContainer.InsertElement calls.
internal class TextTreeInsertElementUndoUnit : TextTreeUndoUnit
{
//-----------------------------------------------------
//
// Constructors
//
//-----------------------------------------------------
#region Constructors
// Creates a new undo unit instance.
// symbolOffset should be just before the start edge of the TextElement to remove.
// If deep is true, this unit will undo not only the scoping element
// insert, but also all content scoped by the element.
internal TextTreeInsertElementUndoUnit(TextContainer tree, int symbolOffset, bool deep) : base(tree, symbolOffset)
{
_deep = deep;
}
#endregion Constructors
//------------------------------------------------------
//
// Public Methods
//
//-----------------------------------------------------
#region Public Methods
// Called by the undo manager. Restores tree state to its condition
// when the unit was created. Assumes the tree state matches conditions
// just after the unit was created.
public override void DoCore()
{
TextPointer start;
TextPointer end;
TextElement element;
VerifyTreeContentHashCode();
start = new TextPointer(this.TextContainer, this.SymbolOffset, LogicalDirection.Forward);
Invariant.Assert(start.GetPointerContext(LogicalDirection.Forward) == TextPointerContext.ElementStart, "TextTree undo unit out of [....] with TextTree.");
element = start.GetAdjacentElementFromOuterPosition(LogicalDirection.Forward);
if (_deep)
{
// Extract the element and its content.
end = new TextPointer(this.TextContainer, element.TextElementNode, ElementEdge.AfterEnd);
this.TextContainer.DeleteContentInternal(start, end);
}
else
{
// Just extract the element, not its content.
this.TextContainer.ExtractElementInternal(element);
}
}
#endregion Public Methods
//------------------------------------------------------
//
// Private Fields
//
//------------------------------------------------------
#region Private Fields
// If true, this unit tracks a TextElement and its scoped content.
// Otherwise, this unit only tracks the TextElement.
private readonly bool _deep;
#endregion Private Fields
}
}
// 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
- FileAuthorizationModule.cs
- ClientCultureInfo.cs
- ContentControl.cs
- WebPartTransformer.cs
- PersonalizationStateInfoCollection.cs
- LineBreakRecord.cs
- SchemaMapping.cs
- QueryContinueDragEventArgs.cs
- TextParagraphCache.cs
- SponsorHelper.cs
- TimeSpanSecondsOrInfiniteConverter.cs
- TextBreakpoint.cs
- BitmapDownload.cs
- ResourceContainer.cs
- RoutedEventArgs.cs
- ListViewEditEventArgs.cs
- PixelFormat.cs
- TextOnlyOutput.cs
- SendSecurityHeaderElement.cs
- GradientBrush.cs
- ThrowOnMultipleAssignment.cs
- IOException.cs
- ProcessInfo.cs
- EdmPropertyAttribute.cs
- DataViewManager.cs
- StaticSiteMapProvider.cs
- WindowsSpinner.cs
- ArglessEventHandlerProxy.cs
- CodeTypeReferenceCollection.cs
- ZipIOLocalFileBlock.cs
- XmlDomTextWriter.cs
- Contracts.cs
- ListViewInsertedEventArgs.cs
- RectAnimation.cs
- TTSEvent.cs
- Helper.cs
- SynchronizedInputPattern.cs
- TraceSwitch.cs
- StylusEventArgs.cs
- DateTimeParse.cs
- DataPagerField.cs
- DrawToolTipEventArgs.cs
- MenuEventArgs.cs
- ProviderException.cs
- InvalidProgramException.cs
- ConfigurationPropertyAttribute.cs
- MessageEncoderFactory.cs
- KnownTypes.cs
- RectangleHotSpot.cs
- XPSSignatureDefinition.cs
- WeakReferenceEnumerator.cs
- AssemblyHash.cs
- DigestTraceRecordHelper.cs
- CellConstantDomain.cs
- ColorBlend.cs
- TargetInvocationException.cs
- Attribute.cs
- Ray3DHitTestResult.cs
- MobilePage.cs
- NetworkAddressChange.cs
- ListBindingConverter.cs
- FlowDocumentReaderAutomationPeer.cs
- _SSPIWrapper.cs
- MonikerUtility.cs
- ScaleTransform3D.cs
- AttachedPropertyBrowsableAttribute.cs
- ExpressionSelection.cs
- Control.cs
- XmlElementList.cs
- DashStyle.cs
- ClientSponsor.cs
- FunctionDetailsReader.cs
- HandlerBase.cs
- WebPartMovingEventArgs.cs
- InlinedAggregationOperator.cs
- GrammarBuilderDictation.cs
- ToolBarOverflowPanel.cs
- XamlParser.cs
- ExtensionSurface.cs
- GeneratedView.cs
- ToolBarButton.cs
- NameValueSectionHandler.cs
- RSAProtectedConfigurationProvider.cs
- Calendar.cs
- XomlSerializationHelpers.cs
- StringUtil.cs
- MultiDataTrigger.cs
- TransformationRules.cs
- Animatable.cs
- ResourceManager.cs
- ManagementObjectSearcher.cs
- _FtpControlStream.cs
- EntryWrittenEventArgs.cs
- MenuCommands.cs
- SmtpTransport.cs
- WebPartConnectVerb.cs
- GetPolicyDetailsRequest.cs
- EmbeddedMailObjectsCollection.cs
- SupportsPreviewControlAttribute.cs
- CfgSemanticTag.cs