Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / wpf / src / Framework / System / Windows / Documents / TextTreeExtractElementUndoUnit.cs / 1 / TextTreeExtractElementUndoUnit.cs
//----------------------------------------------------------------------------
//
// File: TextTreeExtractElementUndoUnit.cs
//
// Description: Undo unit for TextContainer.ExtractElement calls.
//
// History:
// 03/03/2004 : benwest - 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.
//----------------------------------------------------------------------------
//
// File: TextTreeExtractElementUndoUnit.cs
//
// Description: Undo unit for TextContainer.ExtractElement calls.
//
// History:
// 03/03/2004 : benwest - 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
- SocketException.cs
- DataGridViewRowDividerDoubleClickEventArgs.cs
- MergablePropertyAttribute.cs
- KeyboardNavigation.cs
- SmiRequestExecutor.cs
- CookieParameter.cs
- CodeExpressionCollection.cs
- CultureInfoConverter.cs
- WebPartActionVerb.cs
- DbDeleteCommandTree.cs
- IsolatedStorageFileStream.cs
- BooleanKeyFrameCollection.cs
- OuterProxyWrapper.cs
- GiveFeedbackEventArgs.cs
- HtmlForm.cs
- XsdDataContractImporter.cs
- Native.cs
- WebBrowser.cs
- documentsequencetextview.cs
- Activator.cs
- ProcessHostServerConfig.cs
- TemplateBindingExpressionConverter.cs
- XPathConvert.cs
- XmlEntity.cs
- KeyPullup.cs
- ResXFileRef.cs
- BufferedGraphicsContext.cs
- ChtmlLinkAdapter.cs
- CachingHintValidation.cs
- HttpModuleAction.cs
- ButtonRenderer.cs
- MappedMetaModel.cs
- NonParentingControl.cs
- DrawListViewItemEventArgs.cs
- SystemWebCachingSectionGroup.cs
- CommandManager.cs
- assertwrapper.cs
- ActivityInfo.cs
- OpCopier.cs
- CommandField.cs
- AutomationTextAttribute.cs
- DriveNotFoundException.cs
- InstanceLockLostException.cs
- BezierSegment.cs
- HttpClientCertificate.cs
- IteratorDescriptor.cs
- ConvertTextFrag.cs
- InstalledFontCollection.cs
- XmlSchemaGroupRef.cs
- MailMessageEventArgs.cs
- Char.cs
- MeasureItemEvent.cs
- WebPartHeaderCloseVerb.cs
- BamlLocalizableResource.cs
- TagPrefixInfo.cs
- BamlResourceSerializer.cs
- TextChange.cs
- CollectionView.cs
- RSAProtectedConfigurationProvider.cs
- IdentitySection.cs
- MetafileHeaderWmf.cs
- _AutoWebProxyScriptEngine.cs
- FlowchartStart.xaml.cs
- MatrixIndependentAnimationStorage.cs
- TimeSpanMinutesConverter.cs
- ParentControlDesigner.cs
- AstTree.cs
- BasePropertyDescriptor.cs
- PropertyDescriptorComparer.cs
- InternalBufferOverflowException.cs
- DragEvent.cs
- AnimationStorage.cs
- CatalogPart.cs
- WebBrowser.cs
- ControlBindingsCollection.cs
- FileInfo.cs
- XmlSchemaDocumentation.cs
- CodeDOMProvider.cs
- SmiGettersStream.cs
- ValueTable.cs
- WebPartMenu.cs
- ActiveXHost.cs
- IdentityHolder.cs
- XPathNavigator.cs
- BCLDebug.cs
- ComponentResourceManager.cs
- AccessedThroughPropertyAttribute.cs
- BufferBuilder.cs
- TableHeaderCell.cs
- ColumnResult.cs
- OleDbMetaDataFactory.cs
- ServiceBehaviorAttribute.cs
- CqlParserHelpers.cs
- HttpListenerException.cs
- WebPartMenuStyle.cs
- EventEntry.cs
- BamlTreeUpdater.cs
- NonVisualControlAttribute.cs
- RulePatternOps.cs
- Base64Encoder.cs