Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Framework / System / Windows / Documents / TextTreeUndo.cs / 1 / TextTreeUndo.cs
//---------------------------------------------------------------------------- // //// Copyright (C) Microsoft Corporation. All rights reserved. // // // // Description: Helper class for TextContainer, handles all undo operations. // // History: // 03/03/2004 : [....] - Created // //--------------------------------------------------------------------------- using MS.Internal.Documents; namespace System.Windows.Documents { // This static class is logically an extension of TextContainer. It contains // TextContainer undo related helpers. internal static class TextTreeUndo { //----------------------------------------------------- // // Internal Methods // //----------------------------------------------------- #region Internal Methods // Adds a TextTreeInsertUndoUnit to the open parent undo unit, if any. // Called from TextContainer.InsertText and TextContainer.InsertEmbeddedObject. internal static void CreateInsertUndoUnit(TextContainer tree, int symbolOffset, int symbolCount) { UndoManager undoManager; undoManager = GetOrClearUndoManager(tree); if (undoManager == null) return; undoManager.Add(new TextTreeInsertUndoUnit(tree, symbolOffset, symbolCount)); } // Adds a TextTreeInsertElementUndoUnit to the open parent undo unit, if any. // Called from TextContainer.InsertElement. internal static void CreateInsertElementUndoUnit(TextContainer tree, int symbolOffset, bool deep) { UndoManager undoManager; undoManager = GetOrClearUndoManager(tree); if (undoManager == null) return; undoManager.Add(new TextTreeInsertElementUndoUnit(tree, symbolOffset, deep)); } // Adds a TextTreePropertyUndoUnit to the open parent undo unit, if any. // Called by TextElement's property change listener. internal static void CreatePropertyUndoUnit(TextElement element, DependencyPropertyChangedEventArgs e) { UndoManager undoManager; PropertyRecord record; TextContainer textContainer = element.TextContainer; undoManager = GetOrClearUndoManager(textContainer); if (undoManager == null) return; record = new PropertyRecord(); record.Property = e.Property; record.Value = e.OldValueSource == BaseValueSourceInternal.Local ? e.OldValue : DependencyProperty.UnsetValue; undoManager.Add(new TextTreePropertyUndoUnit(textContainer, element.TextElementNode.GetSymbolOffset(textContainer.Generation) + 1, record)); } // Adds a DeleteContentUndoUnit to the open parent undo unit, if any. // Called by TextContainer.DeleteContent. internal static TextTreeDeleteContentUndoUnit CreateDeleteContentUndoUnit(TextContainer tree, TextPointer start, TextPointer end) { UndoManager undoManager; TextTreeDeleteContentUndoUnit undoUnit; if (start.CompareTo(end) == 0) return null; undoManager = GetOrClearUndoManager(tree); if (undoManager == null) return null; undoUnit = new TextTreeDeleteContentUndoUnit(tree, start, end); undoManager.Add(undoUnit); return undoUnit; } // Adds a TextTreeExtractElementUndoUnit to the open parent undo unit, if any. // Called by TextContainer.ExtractElement. internal static TextTreeExtractElementUndoUnit CreateExtractElementUndoUnit(TextContainer tree, TextTreeTextElementNode elementNode) { UndoManager undoManager; TextTreeExtractElementUndoUnit undoUnit; undoManager = GetOrClearUndoManager(tree); if (undoManager == null) return null; undoUnit = new TextTreeExtractElementUndoUnit(tree, elementNode); undoManager.Add(undoUnit); return undoUnit; } // Returns the local UndoManager. // Returns null if there is no undo service or if the service exists // but is disabled or if there is no open parent undo unit. internal static UndoManager GetOrClearUndoManager(ITextContainer textContainer) { UndoManager undoManager; undoManager = textContainer.UndoManager; if (undoManager == null) return null; if (!undoManager.IsEnabled) return null; if (undoManager.OpenedUnit == null) { // There's no parent undo unit, so we can't open a child. // // Clear the undo stack -- since we depend on symbol offsets // matching the original document state when an undo unit is // executed, any of our units currently in the stack will be // corrupted after we finished the operation in progress. undoManager.Clear(); return null; } return undoManager; } #endregion Internal methods } } // 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
- CodeAttributeDeclarationCollection.cs
- LabelEditEvent.cs
- StickyNote.cs
- MetadataSerializer.cs
- XmlSerializerNamespaces.cs
- ValidatedControlConverter.cs
- TypefaceMap.cs
- UnknownMessageReceivedEventArgs.cs
- WindowsUserNameCachingSecurityTokenAuthenticator.cs
- mediaclock.cs
- XmlEncoding.cs
- TypeExtensionConverter.cs
- XmlSchemaObjectCollection.cs
- selecteditemcollection.cs
- SqlTransaction.cs
- NewArray.cs
- RSAPKCS1KeyExchangeDeformatter.cs
- ChildrenQuery.cs
- BrowserDefinition.cs
- ProviderSettings.cs
- WorkflowTimerService.cs
- XmlDocumentFragment.cs
- BamlCollectionHolder.cs
- Slider.cs
- TranslateTransform3D.cs
- Geometry.cs
- WebPartConnection.cs
- ScrollData.cs
- ByteStreamBufferedMessageData.cs
- TextEditorThreadLocalStore.cs
- TextElement.cs
- DataGridViewTextBoxColumn.cs
- LockCookie.cs
- TreeNodeConverter.cs
- assemblycache.cs
- AsyncStreamReader.cs
- TypeEnumerableViewSchema.cs
- IndexedWhereQueryOperator.cs
- MessageHeaderDescriptionCollection.cs
- IconHelper.cs
- VectorCollectionConverter.cs
- Color.cs
- Stylesheet.cs
- AuthenticationSection.cs
- SqlException.cs
- _PooledStream.cs
- CopyAction.cs
- RectAnimationUsingKeyFrames.cs
- DSACryptoServiceProvider.cs
- Exceptions.cs
- BufferedStream.cs
- IpcClientManager.cs
- TimeStampChecker.cs
- OpenCollectionAsyncResult.cs
- Matrix3D.cs
- TypeConstant.cs
- AliasGenerator.cs
- VirtualPath.cs
- AQNBuilder.cs
- SqlEnums.cs
- WebPartEventArgs.cs
- ClientScriptManager.cs
- LiteralControl.cs
- KeyBinding.cs
- StringAnimationBase.cs
- XmlSchemaNotation.cs
- CompensationDesigner.cs
- RealizedColumnsBlock.cs
- Attachment.cs
- SkinIDTypeConverter.cs
- NetworkAddressChange.cs
- TextDecorationUnitValidation.cs
- FormViewDeletedEventArgs.cs
- WebPartConnectionsEventArgs.cs
- ItemContainerGenerator.cs
- OpenFileDialog.cs
- AnnotationAuthorChangedEventArgs.cs
- UserControlAutomationPeer.cs
- TdsParserStaticMethods.cs
- FileCodeGroup.cs
- FormViewCommandEventArgs.cs
- HTMLTagNameToTypeMapper.cs
- PackageFilter.cs
- ObjectListFieldsPage.cs
- Debugger.cs
- OperationFormatStyle.cs
- XmlLinkedNode.cs
- hwndwrapper.cs
- DesignTimeVisibleAttribute.cs
- UiaCoreProviderApi.cs
- UserControlDocumentDesigner.cs
- Knowncolors.cs
- AsyncPostBackTrigger.cs
- RandomNumberGenerator.cs
- FlowDocumentView.cs
- PerformanceCounterPermissionEntryCollection.cs
- Help.cs
- DefaultValueTypeConverter.cs
- InternalControlCollection.cs
- ListBase.cs