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
- StreamingContext.cs
- Configuration.cs
- Delay.cs
- EqualityComparer.cs
- StringWriter.cs
- InfoCardRSAPKCS1KeyExchangeDeformatter.cs
- ForceCopyBuildProvider.cs
- FileDialogPermission.cs
- GeometryCombineModeValidation.cs
- MimeBasePart.cs
- RemotingException.cs
- PropertyPathWorker.cs
- PropertyGridView.cs
- SystemNetworkInterface.cs
- UIPermission.cs
- EncryptedKey.cs
- SqlDataSourceAdvancedOptionsForm.cs
- CodeSubDirectory.cs
- SymbolPair.cs
- RuntimeConfig.cs
- InheritanceContextHelper.cs
- GroupBoxAutomationPeer.cs
- ReferencedAssembly.cs
- XappLauncher.cs
- HtmlTitle.cs
- IisNotInstalledException.cs
- ArrayTypeMismatchException.cs
- DataSourceSelectArguments.cs
- SystemSounds.cs
- Propagator.JoinPropagator.cs
- StorageSetMapping.cs
- LoadGrammarCompletedEventArgs.cs
- BitFlagsGenerator.cs
- EventToken.cs
- FixedDocumentPaginator.cs
- ParamArrayAttribute.cs
- IdentityHolder.cs
- DictionarySectionHandler.cs
- input.cs
- CustomCredentialPolicy.cs
- XmlMtomReader.cs
- StackBuilderSink.cs
- LoadRetryAsyncResult.cs
- AmbiguousMatchException.cs
- WebReferencesBuildProvider.cs
- WizardStepBase.cs
- M3DUtil.cs
- XmlDataCollection.cs
- XmlConvert.cs
- sitestring.cs
- ProxyHwnd.cs
- StickyNoteContentControl.cs
- DataGridTextBoxColumn.cs
- ContentHostHelper.cs
- HTTPNotFoundHandler.cs
- GeometryDrawing.cs
- SqlDataSourceCustomCommandPanel.cs
- _ListenerRequestStream.cs
- StringDictionary.cs
- DoubleIndependentAnimationStorage.cs
- TrustSection.cs
- PropertyChangedEventArgs.cs
- ErasingStroke.cs
- TemplateControlParser.cs
- SqlDataSourceConnectionPanel.cs
- StackSpiller.cs
- NativeMethodsCLR.cs
- ScrollableControl.cs
- StateMachineWorkflow.cs
- MultiPartWriter.cs
- GridView.cs
- IntSecurity.cs
- COM2Enum.cs
- Currency.cs
- InstancePersistenceCommand.cs
- GridView.cs
- ClrPerspective.cs
- SmiContextFactory.cs
- DiagnosticTrace.cs
- RtfFormatStack.cs
- UnsafeNativeMethodsCLR.cs
- WebSysDisplayNameAttribute.cs
- FixedTextBuilder.cs
- TransformerInfo.cs
- LinkButton.cs
- PeerHopCountAttribute.cs
- SplineKeyFrames.cs
- TextEditorContextMenu.cs
- ExtenderHelpers.cs
- MetadataArtifactLoader.cs
- HealthMonitoringSectionHelper.cs
- Codec.cs
- KeyedHashAlgorithm.cs
- StylusTip.cs
- JpegBitmapEncoder.cs
- EffectiveValueEntry.cs
- SizeValueSerializer.cs
- VariableExpressionConverter.cs
- Rotation3DAnimationBase.cs
- PenThread.cs