Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Framework / System / Windows / Documents / TextTreeExtractElementUndoUnit.cs / 1 / TextTreeExtractElementUndoUnit.cs
//----------------------------------------------------------------------------
//
// File: TextTreeExtractElementUndoUnit.cs
//
// Description: Undo unit for TextContainer.ExtractElement calls.
//
// History:
// 03/03/2004 : [....] - Created
//
//---------------------------------------------------------------------------
using System;
using MS.Internal;
namespace System.Windows.Documents
{
// Undo unit for TextContainer.ExtractElement calls.
internal class TextTreeExtractElementUndoUnit : TextTreeUndoUnit
{
//-----------------------------------------------------
//
// Constructors
//
//-----------------------------------------------------
#region Constructors
// Creates a new undo unit instance.
internal TextTreeExtractElementUndoUnit(TextContainer tree, TextTreeTextElementNode elementNode)
: base(tree, elementNode.GetSymbolOffset(tree.Generation))
{
_symbolCount = elementNode.SymbolCount;
_type = elementNode.TextElement.GetType();
_localValues = LocalValueEnumeratorToArray(elementNode.TextElement.GetLocalValueEnumerator());
_resources = elementNode.TextElement.Resources;
// Table requires additional work for storing its Columns collection
if (elementNode.TextElement is Table)
{
_columns = TextTreeDeleteContentUndoUnit.SaveColumns((Table)elementNode.TextElement);
}
}
#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);
end = new TextPointer(this.TextContainer, this.SymbolOffset + _symbolCount - 2, LogicalDirection.Forward);
// Insert a new element.
element = (TextElement)Activator.CreateInstance(_type);
element.Reposition(start, end);
// Restore local resources
element.Resources = _resources;
// Move end into the scope of the new element.
end.MoveToNextContextPosition(LogicalDirection.Backward);
// Then restore local property values.
//
this.TextContainer.SetValues(end, ArrayToLocalValueEnumerator(_localValues));
if (element is Table)
{
TextTreeDeleteContentUndoUnit.RestoreColumns((Table)element, _columns);
}
}
#endregion Public Methods
//------------------------------------------------------
//
// Private Fields
//
//------------------------------------------------------
#region Private Fields
// Count of symbols covered by the extracted TextElement, including its 2 edges.
private readonly int _symbolCount;
// Type of the extracted TextElement.
private readonly Type _type;
// Collection of all local property values set on the extracted TextElement.
private readonly PropertyRecord []_localValues;
// Resources defined locally on the TextElement
private readonly ResourceDictionary _resources;
// TableColumns collection
private readonly TableColumn[] _columns;
#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
- MenuItem.cs
- DataObjectEventArgs.cs
- SerializableAttribute.cs
- ListView.cs
- PointLight.cs
- SqlBuffer.cs
- ForEachAction.cs
- CaretElement.cs
- XmlDataSource.cs
- serverconfig.cs
- XslTransform.cs
- StringAttributeCollection.cs
- BitmapCacheBrush.cs
- SiteMapDataSourceView.cs
- CompiledRegexRunnerFactory.cs
- FixedSOMTable.cs
- _LocalDataStoreMgr.cs
- WebHttpSecurityModeHelper.cs
- ComplexType.cs
- ApplicationCommands.cs
- QueryIntervalOp.cs
- ReplyChannelBinder.cs
- DefaultValueTypeConverter.cs
- ReadOnlyDataSourceView.cs
- PropertySourceInfo.cs
- FixedSOMTable.cs
- ListViewGroupItemCollection.cs
- DbExpressionVisitor.cs
- Calendar.cs
- HTTP_SERVICE_CONFIG_URLACL_PARAM.cs
- PassportAuthentication.cs
- TdsParserStateObject.cs
- ServiceNotStartedException.cs
- VScrollProperties.cs
- ConnectionManagementElement.cs
- Events.cs
- SessionStateItemCollection.cs
- EmissiveMaterial.cs
- DataSourceCacheDurationConverter.cs
- ServiceReference.cs
- OleDbReferenceCollection.cs
- ListMarkerLine.cs
- CodeIterationStatement.cs
- Duration.cs
- UInt64Storage.cs
- EventMappingSettingsCollection.cs
- GPRECTF.cs
- XsltException.cs
- RemotingConfigParser.cs
- MimeObjectFactory.cs
- KeyboardEventArgs.cs
- Drawing.cs
- XmlSchemaChoice.cs
- MergeEnumerator.cs
- BitmapEncoder.cs
- SqlCommandSet.cs
- Range.cs
- XmlException.cs
- ElapsedEventArgs.cs
- HttpProfileGroupBase.cs
- ExpandSegment.cs
- CompareValidator.cs
- ShaderRenderModeValidation.cs
- GroupBoxRenderer.cs
- MaterialCollection.cs
- XmlJsonWriter.cs
- XmlSchemaImport.cs
- serverconfig.cs
- EditorReuseAttribute.cs
- TreeIterator.cs
- DelegatingTypeDescriptionProvider.cs
- DataErrorValidationRule.cs
- StrongNamePublicKeyBlob.cs
- RegexTree.cs
- WrapperEqualityComparer.cs
- ValidatedControlConverter.cs
- MaskedTextProvider.cs
- DateTimeFormatInfo.cs
- GACMembershipCondition.cs
- GridItem.cs
- EdmScalarPropertyAttribute.cs
- ValuePatternIdentifiers.cs
- FormsAuthenticationModule.cs
- FileSecurity.cs
- XmlWellformedWriterHelpers.cs
- _ListenerResponseStream.cs
- XmlSchemaAttribute.cs
- DataSourceExpression.cs
- CodeEntryPointMethod.cs
- EventBuilder.cs
- SynchronizationLockException.cs
- ModuleBuilder.cs
- TypeSystem.cs
- ZipIOLocalFileDataDescriptor.cs
- Queue.cs
- SystemPens.cs
- UntypedNullExpression.cs
- IconConverter.cs
- ChtmlTextWriter.cs
- PageContentCollection.cs