Code:
/ 4.0 / 4.0 / 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. //---------------------------------------------------------------------------- // // 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
- ProgressChangedEventArgs.cs
- TemplateControlCodeDomTreeGenerator.cs
- BoundsDrawingContextWalker.cs
- XsdCachingReader.cs
- ColorTranslator.cs
- WindowsFont.cs
- MaterialGroup.cs
- Viewport3DVisual.cs
- TransformGroup.cs
- SemaphoreSlim.cs
- MdiWindowListStrip.cs
- FullTextBreakpoint.cs
- TableSectionStyle.cs
- DataReceivedEventArgs.cs
- ProxyDataContractResolver.cs
- VirtualPath.cs
- DiscreteKeyFrames.cs
- CollectionsUtil.cs
- EntityDataReader.cs
- Int64KeyFrameCollection.cs
- EDesignUtil.cs
- Literal.cs
- CompiledQuery.cs
- DecimalAnimation.cs
- SecurityUtils.cs
- QueryableDataSource.cs
- HandlerMappingMemo.cs
- ScrollChrome.cs
- ImportOptions.cs
- Activity.cs
- CodeDirectoryCompiler.cs
- CngProperty.cs
- DetailsViewDeletedEventArgs.cs
- ViewCellSlot.cs
- TreeViewEvent.cs
- NonBatchDirectoryCompiler.cs
- EventPrivateKey.cs
- FigureParaClient.cs
- CursorConverter.cs
- ParserStreamGeometryContext.cs
- TextServicesLoader.cs
- DesignerVerbCollection.cs
- CustomWebEventKey.cs
- TextPointer.cs
- ZipFileInfo.cs
- XmlSchemaException.cs
- WebConfigurationManager.cs
- CrossContextChannel.cs
- DataSetMappper.cs
- RadioButtonList.cs
- SHA1Managed.cs
- BufferedGraphicsContext.cs
- DrawingState.cs
- JavaScriptSerializer.cs
- FixedNode.cs
- ListViewDeletedEventArgs.cs
- TransactionException.cs
- TextSyndicationContent.cs
- sqlstateclientmanager.cs
- CommandValueSerializer.cs
- CacheOutputQuery.cs
- SemaphoreSecurity.cs
- ChildrenQuery.cs
- OpacityConverter.cs
- ProfileGroupSettings.cs
- ClientFormsIdentity.cs
- PageAdapter.cs
- ExplicitDiscriminatorMap.cs
- Repeater.cs
- FactoryId.cs
- NonBatchDirectoryCompiler.cs
- DocumentOrderQuery.cs
- BindingGroup.cs
- Manipulation.cs
- ListenerElementsCollection.cs
- BufferedGraphicsManager.cs
- CodeDefaultValueExpression.cs
- SqlConnection.cs
- SchemaElementDecl.cs
- ResourceContainer.cs
- RawStylusInputCustomData.cs
- SecurityManager.cs
- DataGridViewElement.cs
- ComplexBindingPropertiesAttribute.cs
- WmpBitmapDecoder.cs
- propertytag.cs
- ManagedIStream.cs
- SoapSchemaExporter.cs
- SmiConnection.cs
- WriteStateInfoBase.cs
- ArrayTypeMismatchException.cs
- StylusShape.cs
- NoPersistScope.cs
- XmlCDATASection.cs
- ServicePointManager.cs
- DocumentCollection.cs
- NetSectionGroup.cs
- BamlLocalizer.cs
- ContainerParagraph.cs
- CodeNamespace.cs