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
- Point4DValueSerializer.cs
- PageAsyncTask.cs
- CrossContextChannel.cs
- CounterSample.cs
- Int32RectValueSerializer.cs
- RenderContext.cs
- AsyncContentLoadedEventArgs.cs
- EventSetter.cs
- SettingsSection.cs
- DataKeyArray.cs
- OraclePermissionAttribute.cs
- ClusterRegistryConfigurationProvider.cs
- COM2Properties.cs
- ControlOperationInvoker.cs
- MailAddressCollection.cs
- ComplusTypeValidator.cs
- SchemaNamespaceManager.cs
- ImageSourceConverter.cs
- DivideByZeroException.cs
- XmlKeywords.cs
- StaticSiteMapProvider.cs
- DbLambda.cs
- PreProcessInputEventArgs.cs
- GlobalProxySelection.cs
- StateItem.cs
- EpmSyndicationContentSerializer.cs
- SqlRowUpdatingEvent.cs
- LingerOption.cs
- PrintingPermission.cs
- ScriptManager.cs
- FrameworkPropertyMetadata.cs
- XPathException.cs
- DataFormats.cs
- MachineKeyConverter.cs
- ChangeTracker.cs
- Publisher.cs
- LinqTreeNodeEvaluator.cs
- DataGridViewColumnConverter.cs
- SQLSingle.cs
- ConfigXmlElement.cs
- SafeCryptContextHandle.cs
- SurrogateDataContract.cs
- DisplayMemberTemplateSelector.cs
- DiffuseMaterial.cs
- UdpChannelFactory.cs
- ClientWindowsAuthenticationMembershipProvider.cs
- EntityContainer.cs
- ItemDragEvent.cs
- ProfileSettingsCollection.cs
- OdbcRowUpdatingEvent.cs
- ItemCollection.cs
- CodeStatement.cs
- Empty.cs
- MarkupCompiler.cs
- XmlSequenceWriter.cs
- FieldNameLookup.cs
- XmlQueryTypeFactory.cs
- DataGridViewColumn.cs
- GridErrorDlg.cs
- Thumb.cs
- ProvidePropertyAttribute.cs
- CellNormalizer.cs
- ValueType.cs
- BitmapData.cs
- NamedObject.cs
- FileAuthorizationModule.cs
- ADMembershipUser.cs
- SafeArrayTypeMismatchException.cs
- UInt16.cs
- InfoCardTrace.cs
- MSG.cs
- MediaContext.cs
- ComponentConverter.cs
- OracleString.cs
- DataControlButton.cs
- ResourcePermissionBaseEntry.cs
- MessageDecoder.cs
- SessionStateItemCollection.cs
- BehaviorEditorPart.cs
- ToolBarButton.cs
- RawStylusInput.cs
- AppDomainUnloadedException.cs
- DataGridTable.cs
- ServicePointManager.cs
- XmlStringTable.cs
- ping.cs
- ConcurrentQueue.cs
- EventProxy.cs
- TranslateTransform.cs
- CustomDictionarySources.cs
- SQLBinary.cs
- AdCreatedEventArgs.cs
- RangeValidator.cs
- SiteOfOriginContainer.cs
- OperationCanceledException.cs
- WebDisplayNameAttribute.cs
- ResourceExpression.cs
- OleCmdHelper.cs
- DetailsViewInsertEventArgs.cs
- SHA512Managed.cs