Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- FamilyTypeface.cs
- DbModificationCommandTree.cs
- WebPartEditorOkVerb.cs
- EntityStoreSchemaFilterEntry.cs
- HtmlTableRow.cs
- SwitchAttribute.cs
- TableDetailsCollection.cs
- ConnectionManagementElement.cs
- DomNameTable.cs
- SmiEventSink_DeferedProcessing.cs
- FamilyMap.cs
- PeerEndPoint.cs
- SimpleTypeResolver.cs
- SoapEnumAttribute.cs
- DbMetaDataColumnNames.cs
- FlowDocumentPaginator.cs
- CompensatableSequenceActivity.cs
- _Semaphore.cs
- CopyNodeSetAction.cs
- DocumentGridContextMenu.cs
- ControlCollection.cs
- ArrayWithOffset.cs
- Utils.cs
- RuntimeEnvironment.cs
- MasterPage.cs
- ColorDialog.cs
- ControlValuePropertyAttribute.cs
- DbInsertCommandTree.cs
- SqlUserDefinedAggregateAttribute.cs
- ServiceDesigner.cs
- XPathMultyIterator.cs
- Suspend.cs
- DirectoryGroupQuery.cs
- RoleService.cs
- HttpListenerRequest.cs
- _UncName.cs
- PresentationTraceSources.cs
- EmptyQuery.cs
- DictionaryChange.cs
- UserPreferenceChangedEventArgs.cs
- WebSysDescriptionAttribute.cs
- EventDescriptorCollection.cs
- XmlAtomicValue.cs
- HttpServerVarsCollection.cs
- ContentPresenter.cs
- UnaryNode.cs
- _HeaderInfoTable.cs
- FormViewCommandEventArgs.cs
- TextBoxLine.cs
- ItemsPresenter.cs
- TypeNameConverter.cs
- DiffuseMaterial.cs
- _ConnectionGroup.cs
- AnnotationService.cs
- MetadataArtifactLoaderFile.cs
- EntityDataSource.cs
- WebPartTracker.cs
- PositiveTimeSpanValidatorAttribute.cs
- ListViewItemEventArgs.cs
- DataSourceControlBuilder.cs
- SerializationFieldInfo.cs
- ClassDataContract.cs
- PrefixQName.cs
- TableHeaderCell.cs
- DoubleAnimationClockResource.cs
- InternalBufferOverflowException.cs
- ColorDialog.cs
- IISUnsafeMethods.cs
- WebControlsSection.cs
- CheckBoxField.cs
- StreamedWorkflowDefinitionContext.cs
- Quaternion.cs
- ParameterExpression.cs
- ModelTreeManager.cs
- SmtpMail.cs
- TextRangeEdit.cs
- SqlDataSourceEnumerator.cs
- NullableIntAverageAggregationOperator.cs
- SecUtil.cs
- PropertyIdentifier.cs
- FamilyMapCollection.cs
- SocketException.cs
- ClientUtils.cs
- DatasetMethodGenerator.cs
- ISessionStateStore.cs
- ResourceKey.cs
- ExternalException.cs
- KoreanLunisolarCalendar.cs
- ObjectReferenceStack.cs
- SqlConnectionString.cs
- OleCmdHelper.cs
- NominalTypeEliminator.cs
- SemaphoreSecurity.cs
- StylusPointPropertyUnit.cs
- RoleManagerModule.cs
- FileDataSourceCache.cs
- BinaryReader.cs
- XXXOnTypeBuilderInstantiation.cs
- SchemaTableOptionalColumn.cs
- TextTreeObjectNode.cs