Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / 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
- HttpListenerContext.cs
- StylusPoint.cs
- HandlerFactoryWrapper.cs
- MessageDecoder.cs
- Coordinator.cs
- BaseUriHelper.cs
- ScrollItemPattern.cs
- InstancePersistenceException.cs
- BamlLocalizableResourceKey.cs
- ZipFileInfo.cs
- KeyInstance.cs
- ObjectResult.cs
- autovalidator.cs
- GlyphInfoList.cs
- OleDbCommand.cs
- CultureTable.cs
- Point3DCollection.cs
- SqlMethods.cs
- ReadOnlyHierarchicalDataSourceView.cs
- Vector3DIndependentAnimationStorage.cs
- PositiveTimeSpanValidator.cs
- DNS.cs
- StylusShape.cs
- PreviewPrintController.cs
- FileVersionInfo.cs
- ObjectItemCachedAssemblyLoader.cs
- MachineKey.cs
- SqlServices.cs
- ConnectionsZoneAutoFormat.cs
- DynamicValueConverter.cs
- AnchoredBlock.cs
- SimpleWorkerRequest.cs
- WebPartExportVerb.cs
- PostBackOptions.cs
- ColorTypeConverter.cs
- XmlSchemaNotation.cs
- TransformerInfoCollection.cs
- XPathNavigatorException.cs
- PerformanceCounterManager.cs
- UnhandledExceptionEventArgs.cs
- Event.cs
- ConstantSlot.cs
- CryptographicAttribute.cs
- WebControl.cs
- OleDbErrorCollection.cs
- AuthenticationException.cs
- ControlType.cs
- UInt32Converter.cs
- LinkedList.cs
- Panel.cs
- path.cs
- BaseCAMarshaler.cs
- securitycriticaldata.cs
- ChangeProcessor.cs
- ChangeBlockUndoRecord.cs
- WebEncodingValidatorAttribute.cs
- X509SecurityToken.cs
- Codec.cs
- SkipQueryOptionExpression.cs
- ActivationServices.cs
- AsymmetricKeyExchangeFormatter.cs
- WorkflowRuntimeServiceElementCollection.cs
- GridViewUpdateEventArgs.cs
- SendingRequestEventArgs.cs
- TableLayoutPanelBehavior.cs
- DataContractSerializerOperationFormatter.cs
- GCHandleCookieTable.cs
- Environment.cs
- CodeDOMProvider.cs
- CommandDesigner.cs
- SqlRetyper.cs
- SyndicationSerializer.cs
- InputScopeAttribute.cs
- LabelEditEvent.cs
- BufferBuilder.cs
- QueryableFilterUserControl.cs
- ConfigurationStrings.cs
- ExpressionBuilder.cs
- DataGridViewSortCompareEventArgs.cs
- CompiledWorkflowDefinitionContext.cs
- SelectionItemProviderWrapper.cs
- ZipPackagePart.cs
- Listbox.cs
- ScrollBar.cs
- TrackingLocationCollection.cs
- BamlLocalizationDictionary.cs
- AffineTransform3D.cs
- CodeCastExpression.cs
- TypeUnloadedException.cs
- _BufferOffsetSize.cs
- ToolStripComboBox.cs
- GeneralTransform3D.cs
- TypedTableBase.cs
- XmlSerializerAssemblyAttribute.cs
- CharUnicodeInfo.cs
- PropertyInfoSet.cs
- AuditLogLocation.cs
- FusionWrap.cs
- DesignerView.xaml.cs
- Zone.cs