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
- StorageTypeMapping.cs
- DSGeneratorProblem.cs
- XmlWriterSettings.cs
- FacetChecker.cs
- ApplicationProxyInternal.cs
- SocketElement.cs
- QilPatternFactory.cs
- TabletDeviceInfo.cs
- XmlCharCheckingReader.cs
- FileSystemEventArgs.cs
- PerformanceCounterPermission.cs
- TextRangeBase.cs
- CultureInfoConverter.cs
- FileDialog_Vista.cs
- TextTrailingWordEllipsis.cs
- ServiceEndpointAssociationProvider.cs
- HttpFileCollectionWrapper.cs
- ButtonFieldBase.cs
- CompilerTypeWithParams.cs
- CheckableControlBaseAdapter.cs
- XPathDocumentNavigator.cs
- SqlTriggerContext.cs
- HasCopySemanticsAttribute.cs
- TypeSource.cs
- DataServiceRequest.cs
- TransformCryptoHandle.cs
- DynamicControl.cs
- ClientTargetSection.cs
- CacheMode.cs
- XamlVector3DCollectionSerializer.cs
- SignatureSummaryDialog.cs
- ChannelDispatcher.cs
- ToolStripItemBehavior.cs
- XPathParser.cs
- XmlEncoding.cs
- ContentValidator.cs
- Opcode.cs
- DataGridPagerStyle.cs
- ObjectResult.cs
- HtmlGenericControl.cs
- ByteStack.cs
- ConfigurationSettings.cs
- _emptywebproxy.cs
- File.cs
- AbstractDataSvcMapFileLoader.cs
- ProfileGroupSettings.cs
- MemberAccessException.cs
- InternalMappingException.cs
- PolyLineSegmentFigureLogic.cs
- DataGridViewCell.cs
- StateMachineWorkflowInstance.cs
- BrowserCapabilitiesCompiler.cs
- ColumnPropertiesGroup.cs
- MaterialCollection.cs
- HttpCapabilitiesSectionHandler.cs
- nulltextnavigator.cs
- FormatterConverter.cs
- Deflater.cs
- TextFormattingConverter.cs
- ClientRoleProvider.cs
- HtmlTableCell.cs
- DnsPermission.cs
- DataConnectionHelper.cs
- XmlJsonWriter.cs
- TypeDefinition.cs
- UnitySerializationHolder.cs
- SerializationException.cs
- FlowDocumentPageViewerAutomationPeer.cs
- Assembly.cs
- IDataContractSurrogate.cs
- ProvidePropertyAttribute.cs
- MenuStrip.cs
- LineServicesRun.cs
- ConcurrentBag.cs
- CryptographicAttribute.cs
- AddressingVersion.cs
- TableFieldsEditor.cs
- GradientStop.cs
- WebPartZoneBase.cs
- CellParaClient.cs
- ImageSource.cs
- AssociationSet.cs
- AnnotationComponentChooser.cs
- WorkflowRuntimeServiceElement.cs
- IISUnsafeMethods.cs
- WebServiceMethodData.cs
- QuaternionKeyFrameCollection.cs
- ImageIndexConverter.cs
- HideDisabledControlAdapter.cs
- ModelTreeEnumerator.cs
- AnimatedTypeHelpers.cs
- CompilationUtil.cs
- StateBag.cs
- HtmlProps.cs
- LoginDesigner.cs
- DataStorage.cs
- DataGridViewColumnConverter.cs
- GenericIdentity.cs
- NopReturnReader.cs
- VBCodeProvider.cs