Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / Tools / System.Activities.Presentation / System / Activities / Presentation / Model / DictionaryChange.cs / 1305376 / DictionaryChange.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;
class DictionaryChange : ModelChange
{
public ModelItemDictionary Dictionary { get; set; }
public OperationType Operation { get; set; }
public ModelItem Key { get; set; }
public ModelItem Value { get; set; }
public ModelTreeManager ModelTreeManager { get; set; }
public override string Description
{
get
{
return this.Operation == OperationType.Insert ? SR.DictionaryAddEditingScopeDescription : SR.DictionaryRemoveEditingScopeDescription;
}
}
public override bool Apply()
{
switch (this.Operation)
{
case OperationType.Insert:
ApplyInsert();
break;
case OperationType.Delete:
ApplyDelete();
break;
default:
Fx.Assert("Operation should be Insert or Delete");
break;
}
return true;
}
private void ApplyDelete()
{
((ModelItemDictionaryImpl)this.Dictionary).RemoveCore(this.Key);
((IModelTreeItem)this.Key).RemoveParent(this.Dictionary);
this.ModelTreeManager.ReleaseModelItem(this.Key, this.Dictionary);
if (null != this.Value)
{
((IModelTreeItem)this.Value).RemoveParent(this.Dictionary);
}
this.ModelTreeManager.ReleaseModelItem(this.Key, this.Dictionary);
this.ModelTreeManager.modelService.OnModelItemRemoved(this.Key);
if (null != this.Value)
{
this.ModelTreeManager.modelService.OnModelItemRemoved(this.Value);
}
}
private void ApplyInsert()
{
this.ModelTreeManager.ReAddModelItemToModelTree(this.Key);
this.ModelTreeManager.ReAddModelItemToModelTree(this.Value);
((ModelItemDictionaryImpl)this.Dictionary).AddCore(this.Key, this.Value);
this.ModelTreeManager.modelService.OnModelItemAdded(this.Key);
if (null != this.Value)
{
this.ModelTreeManager.modelService.OnModelItemAdded(this.Value);
}
}
public override Change GetInverse()
{
OperationType reverseOperation = this.Operation == OperationType.Insert ? OperationType.Delete : OperationType.Insert;
return new DictionaryChange()
{
Dictionary = this.Dictionary,
Operation = reverseOperation,
Key = this.Key,
Value = this.Value,
ModelTreeManager = this.ModelTreeManager,
};
}
public enum OperationType
{
Insert, Delete
}
}
}
// 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;
class DictionaryChange : ModelChange
{
public ModelItemDictionary Dictionary { get; set; }
public OperationType Operation { get; set; }
public ModelItem Key { get; set; }
public ModelItem Value { get; set; }
public ModelTreeManager ModelTreeManager { get; set; }
public override string Description
{
get
{
return this.Operation == OperationType.Insert ? SR.DictionaryAddEditingScopeDescription : SR.DictionaryRemoveEditingScopeDescription;
}
}
public override bool Apply()
{
switch (this.Operation)
{
case OperationType.Insert:
ApplyInsert();
break;
case OperationType.Delete:
ApplyDelete();
break;
default:
Fx.Assert("Operation should be Insert or Delete");
break;
}
return true;
}
private void ApplyDelete()
{
((ModelItemDictionaryImpl)this.Dictionary).RemoveCore(this.Key);
((IModelTreeItem)this.Key).RemoveParent(this.Dictionary);
this.ModelTreeManager.ReleaseModelItem(this.Key, this.Dictionary);
if (null != this.Value)
{
((IModelTreeItem)this.Value).RemoveParent(this.Dictionary);
}
this.ModelTreeManager.ReleaseModelItem(this.Key, this.Dictionary);
this.ModelTreeManager.modelService.OnModelItemRemoved(this.Key);
if (null != this.Value)
{
this.ModelTreeManager.modelService.OnModelItemRemoved(this.Value);
}
}
private void ApplyInsert()
{
this.ModelTreeManager.ReAddModelItemToModelTree(this.Key);
this.ModelTreeManager.ReAddModelItemToModelTree(this.Value);
((ModelItemDictionaryImpl)this.Dictionary).AddCore(this.Key, this.Value);
this.ModelTreeManager.modelService.OnModelItemAdded(this.Key);
if (null != this.Value)
{
this.ModelTreeManager.modelService.OnModelItemAdded(this.Value);
}
}
public override Change GetInverse()
{
OperationType reverseOperation = this.Operation == OperationType.Insert ? OperationType.Delete : OperationType.Insert;
return new DictionaryChange()
{
Dictionary = this.Dictionary,
Operation = reverseOperation,
Key = this.Key,
Value = this.Value,
ModelTreeManager = this.ModelTreeManager,
};
}
public enum OperationType
{
Insert, Delete
}
}
}
// 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
- DateTimeAutomationPeer.cs
- webeventbuffer.cs
- TypeSystem.cs
- ResolveMatchesCD1.cs
- EpmContentSerializerBase.cs
- WebEventCodes.cs
- OperationResponse.cs
- ApplicationDirectory.cs
- PrintingPermission.cs
- XmlDataLoader.cs
- SettingsPropertyValue.cs
- TemplateControlCodeDomTreeGenerator.cs
- ServiceDefaults.cs
- UInt64.cs
- RemotingException.cs
- HttpWebRequest.cs
- Lock.cs
- StdRegProviderWrapper.cs
- ControlAdapter.cs
- MaskPropertyEditor.cs
- HttpModulesSection.cs
- XmlNodeChangedEventManager.cs
- TextRunProperties.cs
- WebEvents.cs
- EntityDataSourceWrapper.cs
- CrossAppDomainChannel.cs
- SHA256Managed.cs
- StartFileNameEditor.cs
- XsltOutput.cs
- SerialStream.cs
- SQLDecimal.cs
- SQLInt32.cs
- ReceiveContent.cs
- CancellationTokenRegistration.cs
- Matrix.cs
- WindowsClaimSet.cs
- SplitterEvent.cs
- DataStreams.cs
- WorkflowWebService.cs
- PathStreamGeometryContext.cs
- BatchWriter.cs
- FlowDocumentReader.cs
- XmlDocumentSchema.cs
- PartialList.cs
- InstanceHandle.cs
- StylusDownEventArgs.cs
- SqlCacheDependency.cs
- Object.cs
- EventsTab.cs
- ArgumentException.cs
- ColorAnimationUsingKeyFrames.cs
- MenuAdapter.cs
- TimeSpan.cs
- AttachedAnnotationChangedEventArgs.cs
- SystemResources.cs
- FloaterParagraph.cs
- _ReceiveMessageOverlappedAsyncResult.cs
- SourceFileInfo.cs
- CodeCatchClause.cs
- SizeValueSerializer.cs
- CustomErrorsSectionWrapper.cs
- SingleAnimationUsingKeyFrames.cs
- WebPartVerbsEventArgs.cs
- SiteMapDataSource.cs
- XmlValueConverter.cs
- TitleStyle.cs
- hebrewshape.cs
- CalendarDataBindingHandler.cs
- FileUtil.cs
- LocalBuilder.cs
- OracleParameterCollection.cs
- TerminatorSinks.cs
- WebPartRestoreVerb.cs
- RuntimeConfig.cs
- QilLoop.cs
- Inline.cs
- EncoderNLS.cs
- TemplateField.cs
- ReflectTypeDescriptionProvider.cs
- MembershipSection.cs
- EventProperty.cs
- PersonalizableAttribute.cs
- WmlTextViewAdapter.cs
- MessageFormatterConverter.cs
- SafeRightsManagementHandle.cs
- EmptyCollection.cs
- ResXBuildProvider.cs
- OleTxTransactionInfo.cs
- TransformerTypeCollection.cs
- KeyNotFoundException.cs
- CancelRequestedRecord.cs
- PanningMessageFilter.cs
- BindingCompleteEventArgs.cs
- TypeReference.cs
- EdmScalarPropertyAttribute.cs
- AuthenticationConfig.cs
- XmlNamespaceMapping.cs
- SocketPermission.cs
- MissingManifestResourceException.cs
- ToolboxItemCollection.cs