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
- LinkDesigner.cs
- EntityTypeBase.cs
- SecurityTokenException.cs
- BaseUriHelper.cs
- FilterQueryOptionExpression.cs
- PolicyException.cs
- OracleParameterBinding.cs
- TransportSecurityBindingElement.cs
- ComponentConverter.cs
- Base64Decoder.cs
- TrueReadOnlyCollection.cs
- MyContact.cs
- PerformanceCounterLib.cs
- PopupEventArgs.cs
- DesignerOptions.cs
- ItemCheckedEvent.cs
- XmlResolver.cs
- QilInvoke.cs
- SqlError.cs
- SerTrace.cs
- WebBrowserBase.cs
- BaseAutoFormat.cs
- CalendarTable.cs
- ToolStripManager.cs
- PrtCap_Public_Simple.cs
- FacetChecker.cs
- Utilities.cs
- AtomPub10ServiceDocumentFormatter.cs
- PeerApplicationLaunchInfo.cs
- TimeSpanConverter.cs
- RelativeSource.cs
- NumberSubstitution.cs
- AuthorizationRuleCollection.cs
- ComponentDispatcherThread.cs
- SystemUnicastIPAddressInformation.cs
- SettingsPropertyIsReadOnlyException.cs
- PreviewPageInfo.cs
- DbParameterHelper.cs
- InkCanvasSelectionAdorner.cs
- IDQuery.cs
- SQLDateTime.cs
- Conditional.cs
- SimplePropertyEntry.cs
- BitmapEffectGroup.cs
- PageParserFilter.cs
- EmptyArray.cs
- GridErrorDlg.cs
- TextRangeBase.cs
- GZipDecoder.cs
- PermissionToken.cs
- DataGridViewUtilities.cs
- SafeSecurityHelper.cs
- InternalConfigRoot.cs
- EndPoint.cs
- SizeAnimationClockResource.cs
- Propagator.Evaluator.cs
- UserPreferenceChangedEventArgs.cs
- CqlLexerHelpers.cs
- ContainerAction.cs
- SchemaTypeEmitter.cs
- WorkflowPersistenceService.cs
- TdsValueSetter.cs
- ListItem.cs
- StructuralCache.cs
- TypedElement.cs
- ToolStripSettings.cs
- TextElement.cs
- RecommendedAsConfigurableAttribute.cs
- SerializationTrace.cs
- WebServiceHandler.cs
- PointCollectionValueSerializer.cs
- RuleAttributes.cs
- LayoutSettings.cs
- CacheSection.cs
- HTTPNotFoundHandler.cs
- ItemMap.cs
- ReferentialConstraint.cs
- SecurityContextCookieSerializer.cs
- _AutoWebProxyScriptWrapper.cs
- Vector3DAnimationUsingKeyFrames.cs
- _ServiceNameStore.cs
- SourceFileBuildProvider.cs
- CodeMemberProperty.cs
- CodeTypeDelegate.cs
- DoubleUtil.cs
- Triplet.cs
- EllipticalNodeOperations.cs
- TextUtf8RawTextWriter.cs
- HierarchicalDataSourceControl.cs
- WeakHashtable.cs
- TreeViewItemAutomationPeer.cs
- UIElementPropertyUndoUnit.cs
- LinqDataSourceInsertEventArgs.cs
- QueueProcessor.cs
- ExecutionPropertyManager.cs
- BulletedList.cs
- DockPanel.cs
- AxImporter.cs
- GetWinFXPath.cs
- XomlSerializationHelpers.cs