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
- HtmlControlPersistable.cs
- BevelBitmapEffect.cs
- SQLDateTimeStorage.cs
- Visitors.cs
- VolatileEnlistmentMultiplexing.cs
- Utils.cs
- MergeLocalizationDirectives.cs
- OleDbConnectionInternal.cs
- TreeNodeCollection.cs
- DataGridViewCellCancelEventArgs.cs
- MachineKeyConverter.cs
- SemanticBasicElement.cs
- ScriptResourceMapping.cs
- SubMenuStyleCollection.cs
- TypeSystemHelpers.cs
- DrawingGroup.cs
- ExpandCollapsePattern.cs
- Button.cs
- HtmlTable.cs
- RowUpdatingEventArgs.cs
- ProxySimple.cs
- Rotation3DAnimationUsingKeyFrames.cs
- DesignTimeVisibleAttribute.cs
- Activator.cs
- TextBoxDesigner.cs
- NativeRecognizer.cs
- XmlName.cs
- QueryExpression.cs
- EmissiveMaterial.cs
- MsmqIntegrationBindingCollectionElement.cs
- AutoGeneratedFieldProperties.cs
- WorkflowServiceBehavior.cs
- TcpProcessProtocolHandler.cs
- FormViewInsertedEventArgs.cs
- HttpProxyTransportBindingElement.cs
- TaskFormBase.cs
- JulianCalendar.cs
- ContractReference.cs
- CommandSet.cs
- rsa.cs
- UnSafeCharBuffer.cs
- WebServiceErrorEvent.cs
- ProfileInfo.cs
- TextTreeUndoUnit.cs
- RecordManager.cs
- RSACryptoServiceProvider.cs
- OdbcDataAdapter.cs
- PageVisual.cs
- DbConnectionPoolIdentity.cs
- ErrorProvider.cs
- DataGridViewComboBoxEditingControl.cs
- StreamInfo.cs
- DataGridDesigner.cs
- AssemblyHelper.cs
- CatalogPartCollection.cs
- ProviderConnectionPoint.cs
- WebScriptMetadataFormatter.cs
- MD5CryptoServiceProvider.cs
- SchemaImporterExtensionsSection.cs
- UInt16Storage.cs
- PageCodeDomTreeGenerator.cs
- SystemDropShadowChrome.cs
- ActivityBindForm.Designer.cs
- TextOnlyOutput.cs
- ObjectFactoryCodeDomTreeGenerator.cs
- XsltQilFactory.cs
- ScriptingProfileServiceSection.cs
- ComponentResourceKey.cs
- ControlCachePolicy.cs
- SqlDataSourceEnumerator.cs
- CompModSwitches.cs
- TimeSpanMinutesConverter.cs
- ITextView.cs
- RichTextBoxConstants.cs
- PeerPresenceInfo.cs
- RegexCaptureCollection.cs
- WebPartEditorCancelVerb.cs
- CustomWebEventKey.cs
- VirtualDirectoryMapping.cs
- DataGridViewCellEventArgs.cs
- ConstraintEnumerator.cs
- CodeSnippetTypeMember.cs
- GroupBox.cs
- AssociationType.cs
- ActivityCodeGenerator.cs
- PathFigureCollectionConverter.cs
- MenuItemStyleCollectionEditor.cs
- Pkcs9Attribute.cs
- FindCriteria.cs
- Renderer.cs
- ProviderSettingsCollection.cs
- Comparer.cs
- InlineCollection.cs
- StorageComplexTypeMapping.cs
- UpdateManifestForBrowserApplication.cs
- WindowsHyperlink.cs
- BitmapEffectCollection.cs
- Screen.cs
- XMLSyntaxException.cs
- ScaleTransform.cs