Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Framework / System / Windows / Documents / TextTreeExtractElementUndoUnit.cs / 1305600 / 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 = GetPropertyRecordArray(elementNode.TextElement);
_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
- PromptStyle.cs
- GroupItemAutomationPeer.cs
- PackWebRequest.cs
- OdbcConnectionHandle.cs
- ByteStreamMessageUtility.cs
- PreviewPageInfo.cs
- MimeMultiPart.cs
- DocumentPageView.cs
- ResourceDescriptionAttribute.cs
- ToolStripDesignerAvailabilityAttribute.cs
- TextElementEditingBehaviorAttribute.cs
- DesignTimeTemplateParser.cs
- TemplateControlBuildProvider.cs
- ImageCodecInfoPrivate.cs
- UpdateManifestForBrowserApplication.cs
- OptimizerPatterns.cs
- ItemMap.cs
- CancellationHandler.cs
- ConnectionManagementElementCollection.cs
- Convert.cs
- Expression.cs
- LinqDataView.cs
- ResourceReferenceExpressionConverter.cs
- CharStorage.cs
- HttpCachePolicy.cs
- SpnEndpointIdentity.cs
- SiteMapHierarchicalDataSourceView.cs
- DataSvcMapFile.cs
- DeploymentExceptionMapper.cs
- ChangeNode.cs
- DataMisalignedException.cs
- SimpleTypeResolver.cs
- RepeaterItemCollection.cs
- SparseMemoryStream.cs
- EncoderExceptionFallback.cs
- TextPointer.cs
- QilNode.cs
- AvtEvent.cs
- TreeNodeBindingCollection.cs
- WorkflowMarkupSerializerMapping.cs
- NullRuntimeConfig.cs
- FormsAuthenticationCredentials.cs
- IndependentAnimationStorage.cs
- BindUriHelper.cs
- AuthenticationModuleElement.cs
- TreeView.cs
- BrowserDefinitionCollection.cs
- MemoryMappedFile.cs
- ServiceOperationWrapper.cs
- TextCharacters.cs
- _UriTypeConverter.cs
- PaintEvent.cs
- Matrix.cs
- PassportIdentity.cs
- XamlFrame.cs
- IDReferencePropertyAttribute.cs
- ControlBuilderAttribute.cs
- MarginsConverter.cs
- Authorization.cs
- BindingWorker.cs
- RefreshEventArgs.cs
- RangeValueProviderWrapper.cs
- ISAPIRuntime.cs
- SqlConnectionHelper.cs
- ReachSerializationUtils.cs
- DesignerHelpers.cs
- BindingExpression.cs
- PersonalizationEntry.cs
- EnumValidator.cs
- ToolStripDesignerAvailabilityAttribute.cs
- Camera.cs
- PrefixQName.cs
- DataRelationCollection.cs
- OutputCacheProfile.cs
- Point4DConverter.cs
- UnknownBitmapEncoder.cs
- LayoutManager.cs
- CaseInsensitiveHashCodeProvider.cs
- PerformanceCountersElement.cs
- ListBase.cs
- UniqueConstraint.cs
- Rect3D.cs
- PixelFormats.cs
- RelationshipEndCollection.cs
- InternalPermissions.cs
- xdrvalidator.cs
- ProviderConnectionPointCollection.cs
- DefinitionBase.cs
- HttpListenerRequest.cs
- LinkDesigner.cs
- WebServiceErrorEvent.cs
- TextAdaptor.cs
- Point.cs
- EntityConnection.cs
- ProjectionPath.cs
- XpsResourceDictionary.cs
- MonthChangedEventArgs.cs
- DateTimeConverter.cs
- FormViewCommandEventArgs.cs
- HijriCalendar.cs