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
- SignerInfo.cs
- DocobjHost.cs
- ProxyWebPartManager.cs
- TdsParserSafeHandles.cs
- HierarchicalDataBoundControl.cs
- Dispatcher.cs
- RawStylusInput.cs
- GridViewUpdateEventArgs.cs
- ContainerControl.cs
- ObjectItemCollectionAssemblyCacheEntry.cs
- DropSource.cs
- CommandEventArgs.cs
- ButtonField.cs
- MarkupProperty.cs
- StaticTextPointer.cs
- DbDataSourceEnumerator.cs
- CodeTypeConstructor.cs
- MdImport.cs
- JsonWriter.cs
- SupportingTokenSpecification.cs
- EpmHelper.cs
- BindingEntityInfo.cs
- ImportContext.cs
- UpdateExpressionVisitor.cs
- PreviewPageInfo.cs
- DataStreamFromComStream.cs
- WindowsStreamSecurityBindingElement.cs
- LineVisual.cs
- XsltArgumentList.cs
- SchemaType.cs
- TimeoutConverter.cs
- VisualSerializer.cs
- WindowHideOrCloseTracker.cs
- CalendarDateChangedEventArgs.cs
- TextSearch.cs
- XPathNavigatorReader.cs
- TreeNodeConverter.cs
- ProcessModule.cs
- ViewStateException.cs
- FixedDSBuilder.cs
- ConnectionInterfaceCollection.cs
- NativeMethods.cs
- XNodeNavigator.cs
- DataBoundLiteralControl.cs
- DurableInstanceManager.cs
- StartUpEventArgs.cs
- SafeEventLogWriteHandle.cs
- TabPanel.cs
- RequestContext.cs
- PolicyLevel.cs
- _HTTPDateParse.cs
- AnnotationResource.cs
- UidManager.cs
- EntityDataSourceSelectedEventArgs.cs
- XmlNamedNodeMap.cs
- DomainUpDown.cs
- PublisherIdentityPermission.cs
- XmlReturnReader.cs
- UIHelper.cs
- SecurityPolicySection.cs
- SqlConnectionHelper.cs
- ProvidersHelper.cs
- Events.cs
- ReadOnlyHierarchicalDataSourceView.cs
- RuntimeHandles.cs
- DataMisalignedException.cs
- RectangleConverter.cs
- MenuItemCollectionEditorDialog.cs
- XmlSchemaResource.cs
- SafeProcessHandle.cs
- DbConnectionStringCommon.cs
- TextParagraphProperties.cs
- NamedPipeTransportBindingElement.cs
- _SslSessionsCache.cs
- PiiTraceSource.cs
- ObjectConverter.cs
- DataGridViewCheckBoxColumn.cs
- TrackBar.cs
- PanelDesigner.cs
- TheQuery.cs
- DescendantQuery.cs
- ListViewContainer.cs
- GraphicsState.cs
- TextTreeInsertUndoUnit.cs
- CrossContextChannel.cs
- EventListener.cs
- ReferenceCountedObject.cs
- Byte.cs
- TogglePatternIdentifiers.cs
- SettingsPropertyValue.cs
- TypefaceMetricsCache.cs
- AdornerLayer.cs
- ProtectedConfigurationSection.cs
- LayoutEngine.cs
- CompoundFileReference.cs
- ScriptingSectionGroup.cs
- DataServiceHost.cs
- SplitterEvent.cs
- XmlSchemaRedefine.cs
- entityreference_tresulttype.cs