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
- RouteParser.cs
- TextLine.cs
- ConstantExpression.cs
- NameNode.cs
- _StreamFramer.cs
- FrameworkObject.cs
- GridViewRowPresenterBase.cs
- ContentPathSegment.cs
- BindingSource.cs
- SQLDouble.cs
- HttpCookieCollection.cs
- PropertyOverridesTypeEditor.cs
- MultiSelector.cs
- CallbackValidatorAttribute.cs
- ConstantSlot.cs
- KeyboardEventArgs.cs
- CryptoKeySecurity.cs
- ItemContainerGenerator.cs
- HostedTcpTransportManager.cs
- BaseUriWithWildcard.cs
- AutomationAttributeInfo.cs
- Vector3DCollectionValueSerializer.cs
- ObfuscateAssemblyAttribute.cs
- CAGDesigner.cs
- ClipboardData.cs
- QilCloneVisitor.cs
- ServiceContractDetailViewControl.cs
- ZipIOLocalFileDataDescriptor.cs
- ConfigsHelper.cs
- FixedPage.cs
- EventArgs.cs
- EditorPartChrome.cs
- SqlUtils.cs
- XmlSchemaGroup.cs
- SiteMapDataSourceView.cs
- HtmlInputPassword.cs
- ConfigurationElement.cs
- WebControlParameterProxy.cs
- ExcCanonicalXml.cs
- DesignerActionKeyboardBehavior.cs
- DatagridviewDisplayedBandsData.cs
- CqlQuery.cs
- ComNativeDescriptor.cs
- InstanceKeyCompleteException.cs
- DataGridToolTip.cs
- XslTransform.cs
- SafeNativeMethodsMilCoreApi.cs
- TextTreeRootTextBlock.cs
- InvokeMethodActivityDesigner.cs
- NavigationProgressEventArgs.cs
- CasesDictionary.cs
- ScriptServiceAttribute.cs
- HandlerFactoryWrapper.cs
- SqlTriggerAttribute.cs
- PersistenceTypeAttribute.cs
- NavigationWindowAutomationPeer.cs
- BaseTemplateParser.cs
- DefaultDiscoveryServiceExtension.cs
- Bits.cs
- StyleSheetDesigner.cs
- RectangleHotSpot.cs
- DbDataRecord.cs
- LongValidator.cs
- AutomationPatternInfo.cs
- FormattedTextSymbols.cs
- DiscoveryDocumentSearchPattern.cs
- ColorDialog.cs
- SiteMapSection.cs
- ListSourceHelper.cs
- AttributedMetaModel.cs
- DATA_BLOB.cs
- DbMetaDataFactory.cs
- ColumnWidthChangedEvent.cs
- XmlSchemaSubstitutionGroup.cs
- DesignerCapabilities.cs
- IdnElement.cs
- exports.cs
- SchemaObjectWriter.cs
- TemplateControlParser.cs
- WebPartHeaderCloseVerb.cs
- DbBuffer.cs
- GetPageNumberCompletedEventArgs.cs
- WorkBatch.cs
- TypeInitializationException.cs
- newinstructionaction.cs
- AlternationConverter.cs
- OperationResponse.cs
- HasCopySemanticsAttribute.cs
- SecurityPermission.cs
- TextStore.cs
- BrushConverter.cs
- ADConnectionHelper.cs
- UpdateEventArgs.cs
- SqlNotificationRequest.cs
- DataSourceCacheDurationConverter.cs
- AssociationTypeEmitter.cs
- VSWCFServiceContractGenerator.cs
- DataGridItemCollection.cs
- MetaTable.cs
- TextEndOfLine.cs