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;
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
- Trace.cs
- WindowsGraphics.cs
- SoapServerMessage.cs
- PasswordRecovery.cs
- FrameDimension.cs
- ClientUtils.cs
- TranslateTransform.cs
- SymDocumentType.cs
- ButtonPopupAdapter.cs
- GridView.cs
- UITypeEditor.cs
- SqlResolver.cs
- ScriptDescriptor.cs
- NativeMethods.cs
- RegexGroupCollection.cs
- DataGridBoolColumn.cs
- FullTextLine.cs
- RegistrySecurity.cs
- DataBindEngine.cs
- ImageSourceConverter.cs
- ServiceOperation.cs
- ButtonFlatAdapter.cs
- EntityViewGenerationAttribute.cs
- DateTimeConverter.cs
- Evaluator.cs
- BooleanAnimationUsingKeyFrames.cs
- DefaultPropertyAttribute.cs
- CommandPlan.cs
- SqlGenericUtil.cs
- RotateTransform3D.cs
- PrivacyNoticeBindingElementImporter.cs
- ExtensionSimplifierMarkupObject.cs
- DesignerHelpers.cs
- RtfControlWordInfo.cs
- PriorityItem.cs
- ResourceReferenceExpression.cs
- DataGridItem.cs
- SubtreeProcessor.cs
- SQLConvert.cs
- XhtmlBasicListAdapter.cs
- PagesChangedEventArgs.cs
- ObjectQuery.cs
- Volatile.cs
- GatewayIPAddressInformationCollection.cs
- ToolboxService.cs
- ItemType.cs
- ValidationErrorCollection.cs
- InputScope.cs
- DispatcherOperation.cs
- IERequestCache.cs
- ConfigurationProperty.cs
- ToolstripProfessionalRenderer.cs
- Rect3D.cs
- KernelTypeValidation.cs
- DataGridViewRowStateChangedEventArgs.cs
- Base64Encoder.cs
- OutputCacheProfileCollection.cs
- userdatakeys.cs
- DoubleLink.cs
- ProfileManager.cs
- DataServiceHostFactory.cs
- NullableDecimalAverageAggregationOperator.cs
- DataGridRow.cs
- EnterpriseServicesHelper.cs
- BitmapEffectCollection.cs
- TextMessageEncodingElement.cs
- ControlAdapter.cs
- PackageDigitalSignatureManager.cs
- RefreshEventArgs.cs
- DnsPermission.cs
- CollectionType.cs
- HealthMonitoringSection.cs
- ToolStripContentPanelRenderEventArgs.cs
- TextTreeRootNode.cs
- ISAPIApplicationHost.cs
- SqlDataSourceParameterParser.cs
- Convert.cs
- XmlCharCheckingWriter.cs
- GeometryHitTestParameters.cs
- FileLogRecordHeader.cs
- Membership.cs
- DrawingVisualDrawingContext.cs
- WindowsMenu.cs
- PermissionToken.cs
- NativeMethods.cs
- WebConvert.cs
- ProfileService.cs
- XmlAtomicValue.cs
- IChannel.cs
- Material.cs
- PrintDialog.cs
- MobileUserControlDesigner.cs
- TokenizerHelper.cs
- CompoundFileDeflateTransform.cs
- BinaryKeyIdentifierClause.cs
- HttpCachePolicy.cs
- SoapHttpTransportImporter.cs
- TCPClient.cs
- PrintDialogDesigner.cs
- GCHandleCookieTable.cs