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
- SortFieldComparer.cs
- XamlDesignerSerializationManager.cs
- CacheEntry.cs
- DiagnosticSection.cs
- TypeGeneratedEventArgs.cs
- XmlEncoding.cs
- CollectionType.cs
- InfoCardRSAPKCS1KeyExchangeDeformatter.cs
- DataGridViewCellMouseEventArgs.cs
- FileIOPermission.cs
- ViewBox.cs
- CardSpaceSelector.cs
- elementinformation.cs
- CompilationLock.cs
- CodeCommentStatement.cs
- ToolStripItemImageRenderEventArgs.cs
- StoryFragments.cs
- TextTreeUndoUnit.cs
- ClientRuntimeConfig.cs
- CalendarDesigner.cs
- BaseCAMarshaler.cs
- Compress.cs
- HttpListenerContext.cs
- Single.cs
- SamlAssertionKeyIdentifierClause.cs
- MonthCalendar.cs
- WebBrowserSiteBase.cs
- ProfilePropertyMetadata.cs
- FlowDocumentPaginator.cs
- SafeProcessHandle.cs
- DrawingServices.cs
- SocketInformation.cs
- MessageAction.cs
- DataColumnCollection.cs
- PeerTransportCredentialType.cs
- CodeAttributeDeclaration.cs
- GlyphCache.cs
- ServiceProviders.cs
- TextPattern.cs
- XmlExceptionHelper.cs
- Identity.cs
- ApplicationSecurityManager.cs
- WorkflowTransactionOptions.cs
- TextRunCache.cs
- TextFragmentEngine.cs
- TrackingLocation.cs
- DependencyPropertyConverter.cs
- CurrentTimeZone.cs
- ChangeBlockUndoRecord.cs
- ComNativeDescriptor.cs
- ThicknessKeyFrameCollection.cs
- NotConverter.cs
- ProcessModelInfo.cs
- RowType.cs
- DiffuseMaterial.cs
- OleDbPermission.cs
- SqlXml.cs
- DataGrid.cs
- SettingsPropertyWrongTypeException.cs
- ToolStripMenuItem.cs
- HtmlInputCheckBox.cs
- SmiEventSink.cs
- NodeLabelEditEvent.cs
- clipboard.cs
- StylesEditorDialog.cs
- IndicShape.cs
- HtmlInputHidden.cs
- InvalidDataException.cs
- SqlClientMetaDataCollectionNames.cs
- MenuEventArgs.cs
- CultureInfoConverter.cs
- HtmlInputSubmit.cs
- DesignTimeXamlWriter.cs
- StringFunctions.cs
- HotSpotCollectionEditor.cs
- StylusCaptureWithinProperty.cs
- _SafeNetHandles.cs
- TableLayoutPanelCellPosition.cs
- ContractMapping.cs
- TrustLevelCollection.cs
- InProcStateClientManager.cs
- TagPrefixCollection.cs
- RunWorkerCompletedEventArgs.cs
- PrinterSettings.cs
- FieldBuilder.cs
- TypedElement.cs
- QueryableDataSource.cs
- SecurityPolicySection.cs
- KoreanLunisolarCalendar.cs
- Bitmap.cs
- GeneralTransform3DGroup.cs
- ActivityTrace.cs
- ToolStripButton.cs
- JournalEntryStack.cs
- DownloadProgressEventArgs.cs
- TabControlAutomationPeer.cs
- ClientApiGenerator.cs
- WebEvents.cs
- FixedSOMTable.cs
- SchemaInfo.cs