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
- Oid.cs
- Splitter.cs
- ClickablePoint.cs
- _FtpDataStream.cs
- MethodMessage.cs
- DetailsViewModeEventArgs.cs
- unitconverter.cs
- StringFreezingAttribute.cs
- ResponseStream.cs
- ArrangedElement.cs
- AtomMaterializer.cs
- PowerModeChangedEventArgs.cs
- DashStyle.cs
- _BasicClient.cs
- WsatAdminException.cs
- HttpCacheParams.cs
- PageContentAsyncResult.cs
- SocketException.cs
- FontUnitConverter.cs
- GACIdentityPermission.cs
- FormParameter.cs
- IconBitmapDecoder.cs
- RecipientInfo.cs
- InstanceKeyCompleteException.cs
- SQLSingleStorage.cs
- DBPropSet.cs
- Internal.cs
- PersistenceTypeAttribute.cs
- WebPartEditorApplyVerb.cs
- ParameterReplacerVisitor.cs
- ReaderOutput.cs
- CategoryList.cs
- Stack.cs
- _SafeNetHandles.cs
- ValueSerializer.cs
- DetailsViewDeleteEventArgs.cs
- RelatedCurrencyManager.cs
- ByteKeyFrameCollection.cs
- TransformConverter.cs
- WorkflowViewManager.cs
- BitmapSizeOptions.cs
- ByteStreamBufferedMessageData.cs
- RootCodeDomSerializer.cs
- ContourSegment.cs
- GridPatternIdentifiers.cs
- MobileRedirect.cs
- ListViewSortEventArgs.cs
- EventLogPermission.cs
- GenericPrincipal.cs
- NamespaceTable.cs
- StaticResourceExtension.cs
- FrameworkElement.cs
- TouchDevice.cs
- CanonicalFormWriter.cs
- Byte.cs
- DisplayNameAttribute.cs
- DataGridViewHeaderCell.cs
- AccessedThroughPropertyAttribute.cs
- followingquery.cs
- DetailsViewPagerRow.cs
- CodeArrayCreateExpression.cs
- CompositeControlDesigner.cs
- PeerCredential.cs
- MsmqInputChannelBase.cs
- ConnectionManager.cs
- LinqDataView.cs
- OleDbPropertySetGuid.cs
- EventArgs.cs
- StylusButtonCollection.cs
- GetChildSubtree.cs
- SecurityVerifiedMessage.cs
- WebPartConnectionsCloseVerb.cs
- AddInStore.cs
- GenericTypeParameterBuilder.cs
- KeyInstance.cs
- DesignerObject.cs
- SemaphoreSlim.cs
- DataGridViewRowStateChangedEventArgs.cs
- SEHException.cs
- _ProxyChain.cs
- DataGridPagerStyle.cs
- ReturnValue.cs
- DelegateBodyWriter.cs
- XmlTextAttribute.cs
- PassportIdentity.cs
- DiffuseMaterial.cs
- FormsAuthenticationTicket.cs
- ToolStripItemRenderEventArgs.cs
- ListComponentEditor.cs
- InvalidPrinterException.cs
- ColumnTypeConverter.cs
- MissingFieldException.cs
- ValidationService.cs
- CombinedGeometry.cs
- QueryCacheEntry.cs
- SBCSCodePageEncoding.cs
- SectionVisual.cs
- GPRECTF.cs
- AnnotationComponentManager.cs
- SortedDictionary.cs