Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / Tools / System.Activities.Presentation / System / Activities / Presentation / Model / EditingScope.cs / 1305376 / EditingScope.cs
//---------------------------------------------------------------- // Copyright (c) Microsoft Corporation. All rights reserved. //--------------------------------------------------------------- namespace System.Activities.Presentation.Model { using System; using System.Collections.Generic; using System.Text; using System.Runtime; [Fx.Tag.XamlVisible(false)] public class EditingScope : ModelEditingScope { ModelTreeManager modelTreeManager; EditingScope outerScope; Listchanges; List appliedChanges; bool suppressUndo; internal EditingScope(ModelTreeManager modelTreeManager, EditingScope outerScope) { this.modelTreeManager = modelTreeManager; this.changes = new List (); this.outerScope = outerScope; this.HasModelChanges = false; } private EditingScope() { } public bool HasEffectiveChanges { get { return this.appliedChanges != null && this.appliedChanges.Count > 0; } } internal bool HasModelChanges { get; private set; } internal bool SuppressUndo { get { return this.suppressUndo; } set { Fx.Assert(!value || this.outerScope == null, "If we are suppressing undo, then we are not nested within another editingScope, otherwise suppress undo won't work."); this.suppressUndo = value; } } public List Changes { get { return changes; } } protected override void OnComplete() { if (this.outerScope == null) { appliedChanges = new List (); int startIndex = 0; // pump all changes, applying changes can add more changes to the end of the change list. while (startIndex < this.Changes.Count) { // pickup the new changes List changesToApply = this.Changes.GetRange(startIndex, this.Changes.Count - startIndex); startIndex = this.Changes.Count; foreach (Change change in changesToApply) { if (change != null && change.Apply()) { appliedChanges.Add(change); } if (change is ModelChange) { this.HasModelChanges = true; } } } } else { outerScope.Changes.AddRange(this.Changes); } this.modelTreeManager.OnEditingScopeCompleted(this); } protected override bool CanComplete() { return this.modelTreeManager.CanEditingScopeComplete(this); } protected override void OnRevert(bool finalizing) { if (this.appliedChanges != null) { List revertChanges = new List (); foreach (Change change in this.appliedChanges) { revertChanges.Add(change.GetInverse()); } revertChanges.Reverse(); foreach (Change change in revertChanges) { change.Apply(); this.appliedChanges.RemoveAt(this.appliedChanges.Count - 1); } } this.modelTreeManager.OnEditingScopeReverted(this); } protected override bool OnException(Exception e) { return false; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //---------------------------------------------------------------- // Copyright (c) Microsoft Corporation. All rights reserved. //--------------------------------------------------------------- namespace System.Activities.Presentation.Model { using System; using System.Collections.Generic; using System.Text; using System.Runtime; [Fx.Tag.XamlVisible(false)] public class EditingScope : ModelEditingScope { ModelTreeManager modelTreeManager; EditingScope outerScope; List changes; List appliedChanges; bool suppressUndo; internal EditingScope(ModelTreeManager modelTreeManager, EditingScope outerScope) { this.modelTreeManager = modelTreeManager; this.changes = new List (); this.outerScope = outerScope; this.HasModelChanges = false; } private EditingScope() { } public bool HasEffectiveChanges { get { return this.appliedChanges != null && this.appliedChanges.Count > 0; } } internal bool HasModelChanges { get; private set; } internal bool SuppressUndo { get { return this.suppressUndo; } set { Fx.Assert(!value || this.outerScope == null, "If we are suppressing undo, then we are not nested within another editingScope, otherwise suppress undo won't work."); this.suppressUndo = value; } } public List Changes { get { return changes; } } protected override void OnComplete() { if (this.outerScope == null) { appliedChanges = new List (); int startIndex = 0; // pump all changes, applying changes can add more changes to the end of the change list. while (startIndex < this.Changes.Count) { // pickup the new changes List changesToApply = this.Changes.GetRange(startIndex, this.Changes.Count - startIndex); startIndex = this.Changes.Count; foreach (Change change in changesToApply) { if (change != null && change.Apply()) { appliedChanges.Add(change); } if (change is ModelChange) { this.HasModelChanges = true; } } } } else { outerScope.Changes.AddRange(this.Changes); } this.modelTreeManager.OnEditingScopeCompleted(this); } protected override bool CanComplete() { return this.modelTreeManager.CanEditingScopeComplete(this); } protected override void OnRevert(bool finalizing) { if (this.appliedChanges != null) { List revertChanges = new List (); foreach (Change change in this.appliedChanges) { revertChanges.Add(change.GetInverse()); } revertChanges.Reverse(); foreach (Change change in revertChanges) { change.Apply(); this.appliedChanges.RemoveAt(this.appliedChanges.Count - 1); } } this.modelTreeManager.OnEditingScopeReverted(this); } protected override bool OnException(Exception e) { return false; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- TemplateColumn.cs
- SoapSchemaExporter.cs
- PropertyBuilder.cs
- BoolExpressionVisitors.cs
- SqlUnionizer.cs
- Stack.cs
- TextBlock.cs
- OpCellTreeNode.cs
- DataTemplate.cs
- SessionState.cs
- DesignTimeSiteMapProvider.cs
- TableItemPatternIdentifiers.cs
- NetworkStream.cs
- ConsoleKeyInfo.cs
- smtppermission.cs
- WasEndpointConfigContainer.cs
- SettingsSavedEventArgs.cs
- DecoderReplacementFallback.cs
- ListViewInsertionMark.cs
- DisplayInformation.cs
- DocumentGridContextMenu.cs
- CodeStatementCollection.cs
- MsmqOutputSessionChannel.cs
- ServicePoint.cs
- XmlDocumentViewSchema.cs
- DataSourceControl.cs
- HttpResponse.cs
- PropertyIDSet.cs
- MetadataArtifactLoaderResource.cs
- EntityDataSourceWizardForm.cs
- HwndTarget.cs
- XmlElementList.cs
- HijriCalendar.cs
- TaskScheduler.cs
- sqlnorm.cs
- MenuEventArgs.cs
- PrimarySelectionGlyph.cs
- TableRow.cs
- DataGridBoolColumn.cs
- Animatable.cs
- HandledEventArgs.cs
- TablePatternIdentifiers.cs
- UnsafeNativeMethods.cs
- XMLUtil.cs
- ExtensibleClassFactory.cs
- precedingquery.cs
- EncoderParameter.cs
- ListView.cs
- LoadMessageLogger.cs
- Int16KeyFrameCollection.cs
- Size3DConverter.cs
- EditorBrowsableAttribute.cs
- StylusPointProperties.cs
- CompileLiteralTextParser.cs
- NativeObjectSecurity.cs
- X509ChainElement.cs
- X509ChainPolicy.cs
- Matrix.cs
- GenericTypeParameterBuilder.cs
- Menu.cs
- AuthenticateEventArgs.cs
- AstNode.cs
- UiaCoreProviderApi.cs
- TakeQueryOptionExpression.cs
- CapabilitiesRule.cs
- DelegateSerializationHolder.cs
- LayoutSettings.cs
- StylusShape.cs
- LinqExpressionNormalizer.cs
- StorageSetMapping.cs
- FormatConvertedBitmap.cs
- OpacityConverter.cs
- CircleHotSpot.cs
- SQLByteStorage.cs
- UnrecognizedPolicyAssertionElement.cs
- XpsS0ValidatingLoader.cs
- AccessText.cs
- XsltFunctions.cs
- BrushConverter.cs
- Keyboard.cs
- StringFreezingAttribute.cs
- BindableAttribute.cs
- ListItemConverter.cs
- XmlAtomicValue.cs
- WindowsFormsSectionHandler.cs
- ZipIOLocalFileHeader.cs
- SetMemberBinder.cs
- DrawingAttributes.cs
- TextDecorationLocationValidation.cs
- WmpBitmapEncoder.cs
- AncestorChangedEventArgs.cs
- SqlNamer.cs
- UIElementPropertyUndoUnit.cs
- XmlReader.cs
- TextComposition.cs
- GridViewColumnCollectionChangedEventArgs.cs
- QuaternionIndependentAnimationStorage.cs
- TextFragmentEngine.cs
- FrameworkTextComposition.cs
- EntityModelSchemaGenerator.cs