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
- RadioButtonAutomationPeer.cs
- TextRangeSerialization.cs
- ProfileSettingsCollection.cs
- SqlParameter.cs
- KeyToListMap.cs
- ReflectionHelper.cs
- NullableDoubleAverageAggregationOperator.cs
- BrowserCapabilitiesFactoryBase.cs
- InitializationEventAttribute.cs
- AVElementHelper.cs
- HttpApplicationStateBase.cs
- MarkupCompiler.cs
- PeerPresenceInfo.cs
- Debug.cs
- FrameSecurityDescriptor.cs
- FormParameter.cs
- WebService.cs
- WebServiceTypeData.cs
- UnsafeNativeMethods.cs
- ProgressBar.cs
- XmlAttributeCollection.cs
- ConcurrentQueue.cs
- ContextMenuService.cs
- SmtpFailedRecipientException.cs
- DoubleAnimationBase.cs
- TextSegment.cs
- RectangleF.cs
- MarkupExtensionParser.cs
- GeneralTransform2DTo3D.cs
- SendKeys.cs
- XmlCodeExporter.cs
- XmlArrayAttribute.cs
- WorkflowOperationContext.cs
- ObjectCloneHelper.cs
- ServiceOperation.cs
- ConfigurationElement.cs
- HistoryEventArgs.cs
- Stylesheet.cs
- XmlSchemaObjectCollection.cs
- NamespaceExpr.cs
- UserPreferenceChangingEventArgs.cs
- XmlReflectionImporter.cs
- SignatureResourcePool.cs
- ProfessionalColors.cs
- SecuritySessionSecurityTokenAuthenticator.cs
- DataObjectSettingDataEventArgs.cs
- LayoutEditorPart.cs
- ListControlActionList.cs
- WebCategoryAttribute.cs
- UInt32.cs
- SrgsSemanticInterpretationTag.cs
- ToolStripContainer.cs
- panel.cs
- DbModificationClause.cs
- UMPAttributes.cs
- TableColumn.cs
- XappLauncher.cs
- DialogWindow.cs
- LeftCellWrapper.cs
- TranslateTransform3D.cs
- PrtCap_Base.cs
- CodeGotoStatement.cs
- XsltArgumentList.cs
- TextBoxRenderer.cs
- StreamingContext.cs
- HandlerWithFactory.cs
- CodeVariableReferenceExpression.cs
- ConfigXmlElement.cs
- WMIGenerator.cs
- StateManagedCollection.cs
- HtmlSelect.cs
- SymbolMethod.cs
- SqlFlattener.cs
- SQLByteStorage.cs
- BitmapPalettes.cs
- SpecularMaterial.cs
- ConstructorNeedsTagAttribute.cs
- RuntimeHandles.cs
- SByteStorage.cs
- EventSetter.cs
- ObjectItemConventionAssemblyLoader.cs
- ContextBase.cs
- ModelTypeConverter.cs
- GenericUriParser.cs
- TransactionScope.cs
- TransformCollection.cs
- ApplicationServiceHelper.cs
- Operators.cs
- BindingSource.cs
- ServicePerformanceCounters.cs
- SQLGuid.cs
- BamlTreeNode.cs
- ActivityExecutor.cs
- ManualResetEventSlim.cs
- Parser.cs
- Propagator.cs
- SQLInt64Storage.cs
- GridViewUpdatedEventArgs.cs
- KeyValuePair.cs
- PerfService.cs