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
- IpcChannel.cs
- OdbcException.cs
- RequestQueryParser.cs
- ToolStripHighContrastRenderer.cs
- ColorContext.cs
- NetPipeSection.cs
- ColumnMapCopier.cs
- PropertyMapper.cs
- FlowNode.cs
- SQLChars.cs
- LinkClickEvent.cs
- ConfigurationException.cs
- CookielessHelper.cs
- DataServiceHost.cs
- ListMarkerSourceInfo.cs
- _BasicClient.cs
- TwoPhaseCommitProxy.cs
- ServiceManager.cs
- DayRenderEvent.cs
- Delay.cs
- DynamicRenderer.cs
- PreviewKeyDownEventArgs.cs
- CopyNamespacesAction.cs
- WebBrowserNavigatedEventHandler.cs
- ValueSerializerAttribute.cs
- RelatedPropertyManager.cs
- ListBindableAttribute.cs
- TextPointer.cs
- MessagingDescriptionAttribute.cs
- GraphicsPathIterator.cs
- SqlNode.cs
- ProbeMatches11.cs
- XmlSubtreeReader.cs
- Constant.cs
- BitmapEffectInputData.cs
- TreeNodeStyle.cs
- ConsumerConnectionPoint.cs
- KnownBoxes.cs
- Rect3DValueSerializer.cs
- DesignerSerializationVisibilityAttribute.cs
- CrossContextChannel.cs
- DesignTimeTemplateParser.cs
- Int64Converter.cs
- Stroke.cs
- MatrixConverter.cs
- ImageKeyConverter.cs
- XmlDomTextWriter.cs
- EntityTypeEmitter.cs
- RequestTimeoutManager.cs
- WebScriptEnablingElement.cs
- IQueryable.cs
- Assembly.cs
- DataGridViewCellStyleConverter.cs
- ListenerConnectionDemuxer.cs
- CopyCodeAction.cs
- SmiContext.cs
- RelatedImageListAttribute.cs
- MenuStrip.cs
- ExceptionAggregator.cs
- SourceFileInfo.cs
- LocalBuilder.cs
- MergeFilterQuery.cs
- ViewStateModeByIdAttribute.cs
- ImportContext.cs
- DockPattern.cs
- PointLight.cs
- ReadOnlyHierarchicalDataSource.cs
- MulticastDelegate.cs
- StyleHelper.cs
- BitmapVisualManager.cs
- SvcMapFile.cs
- AssociationSet.cs
- DateTimePicker.cs
- ResXResourceSet.cs
- Color.cs
- DiscreteKeyFrames.cs
- EntityTypeEmitter.cs
- CustomValidator.cs
- WizardPanel.cs
- SvcFileManager.cs
- SqlDataSourceSelectingEventArgs.cs
- TextBoxRenderer.cs
- XmlDictionary.cs
- X509ChainPolicy.cs
- UiaCoreProviderApi.cs
- DoubleUtil.cs
- Evidence.cs
- SchemaTableOptionalColumn.cs
- fixedPageContentExtractor.cs
- EntityContainerAssociationSet.cs
- HMACRIPEMD160.cs
- PolicyStatement.cs
- ScanQueryOperator.cs
- Content.cs
- MessageHeader.cs
- SafeNativeMethodsOther.cs
- ControlAdapter.cs
- StructuredTypeInfo.cs
- UserPreferenceChangedEventArgs.cs
- OutputScopeManager.cs