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
- XamlStream.cs
- AppLevelCompilationSectionCache.cs
- EmissiveMaterial.cs
- IImplicitResourceProvider.cs
- PersonalizationDictionary.cs
- SmiEventSink_DeferedProcessing.cs
- CriticalExceptions.cs
- StreamWriter.cs
- WindowInteropHelper.cs
- URL.cs
- CalendarBlackoutDatesCollection.cs
- RepeatInfo.cs
- OleDbError.cs
- ControlCachePolicy.cs
- MimeMultiPart.cs
- PageCatalogPart.cs
- RepeaterCommandEventArgs.cs
- SqlIdentifier.cs
- InfiniteTimeSpanConverter.cs
- GridViewPageEventArgs.cs
- SelectorItemAutomationPeer.cs
- LateBoundBitmapDecoder.cs
- EFTableProvider.cs
- BigIntegerStorage.cs
- UnmanagedMemoryStream.cs
- DBSchemaRow.cs
- DBConnectionString.cs
- XmlSchemaFacet.cs
- ProfileSettingsCollection.cs
- CallbackDebugElement.cs
- XmlSchemaSimpleContentRestriction.cs
- NamespaceInfo.cs
- QilLiteral.cs
- DummyDataSource.cs
- ChangeToolStripParentVerb.cs
- FileDialog_Vista_Interop.cs
- SqlTypesSchemaImporter.cs
- ChtmlTextWriter.cs
- ActionMessageFilter.cs
- DataGridPageChangedEventArgs.cs
- PropertyValueChangedEvent.cs
- XmlComplianceUtil.cs
- TypeDescriptor.cs
- SimpleHandlerBuildProvider.cs
- PersonalizationProviderHelper.cs
- DataObject.cs
- _SSPISessionCache.cs
- ListControl.cs
- ParsedAttributeCollection.cs
- RegexCompiler.cs
- SafeIUnknown.cs
- CultureTable.cs
- ElementAction.cs
- InitializerFacet.cs
- ConnectionAcceptor.cs
- XmlILConstructAnalyzer.cs
- WebPartEditorApplyVerb.cs
- MarginsConverter.cs
- ActivationArguments.cs
- Crc32.cs
- FontFamily.cs
- CLRBindingWorker.cs
- NullableConverter.cs
- VisualBrush.cs
- TreeViewBindingsEditor.cs
- TableColumn.cs
- EntityException.cs
- LinearGradientBrush.cs
- UserMapPath.cs
- ObjectConverter.cs
- ChangePasswordDesigner.cs
- Ipv6Element.cs
- BamlVersionHeader.cs
- TypedTableBaseExtensions.cs
- CheckedPointers.cs
- PagesSection.cs
- BaseCollection.cs
- AttributeProviderAttribute.cs
- WebHeaderCollection.cs
- FieldDescriptor.cs
- Stack.cs
- XamlToRtfWriter.cs
- BuildManager.cs
- FormViewInsertedEventArgs.cs
- AuthorizationRuleCollection.cs
- XmlDictionary.cs
- WebScriptServiceHost.cs
- WindowsSecurityTokenAuthenticator.cs
- RowToFieldTransformer.cs
- LZCodec.cs
- PersistenceMetadataNamespace.cs
- AssemblyBuilder.cs
- Transform.cs
- VisualStyleInformation.cs
- FixedSOMContainer.cs
- DataListItemCollection.cs
- Drawing.cs
- ErrorFormatterPage.cs
- ConfigurationSectionCollection.cs
- ExpandCollapseProviderWrapper.cs