Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / Tools / System.Activities.Presentation / System / Activities / Presentation / Model / CollectionChange.cs / 1305376 / CollectionChange.cs
//----------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//---------------------------------------------------------------
namespace System.Activities.Presentation.Model
{
using System.Runtime;
class CollectionChange : ModelChange
{
public ModelItemCollection Collection { get; set; }
public int Index { get; set; }
public ModelItem Item { get; set; }
public OperationType Operation { get; set; }
public ModelTreeManager ModelTreeManager { get; set; }
public override string Description
{
get
{
return this.Operation == OperationType.Insert ? SR.CollectionAddEditingScopeDescription : SR.CollectionRemoveEditingScopeDescription;
}
}
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()
{
Fx.Assert(this.ModelTreeManager != null, "ModelTreeManager cannot be null.");
Fx.Assert(this.Collection != null, "this.Collection cannot be null.");
if (this.Index >= 0)
{
((ModelItemCollectionImpl)this.Collection).RemoveAtCore(this.Index);
}
else
{
Fx.Assert(this.Index == -1, "-1 must be used to indicate Remove(item)");
this.Index = this.Collection.IndexOf(this.Item);
((ModelItemCollectionImpl)this.Collection).RemoveCore(this.Item);
}
// if no more this.Item exists in this.Collection, then this.Item should be released from the ModelTree.
if (this.Collection.IndexOf(this.Item) == -1)
{
((IModelTreeItem)this.Item).RemoveParent(this.Collection);
this.ModelTreeManager.ReleaseModelItem(this.Item, this.Collection);
}
this.ModelTreeManager.NotifyCollectionRemove(this.Item);
}
private void ApplyInsert()
{
Fx.Assert(this.ModelTreeManager != null, "ModelTreeManager cannot be null.");
Fx.Assert(this.Collection != null, "this.Collection cannot be null.");
this.ModelTreeManager.ReAddModelItemToModelTree(this.Item);
if (this.Index >= 0)
{
((ModelItemCollectionImpl)this.Collection).InsertCore(this.Index, this.Item);
}
else
{
Fx.Assert(this.Index == -1, "-1 must be used to indicate Add(item)");
this.Index = this.Collection.Count;
((ModelItemCollectionImpl)this.Collection).AddCore(this.Item);
}
this.ModelTreeManager.NotifyCollectionInsert(this.Item);
}
public override Change GetInverse()
{
OperationType reverseOperation = this.Operation == OperationType.Insert ? OperationType.Delete : OperationType.Insert;
return new CollectionChange()
{
Collection = this.Collection,
Operation = reverseOperation,
Item = this.Item,
ModelTreeManager = this.ModelTreeManager,
Index = this.Index
};
}
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
- BitmapFrame.cs
- httpapplicationstate.cs
- ImageListUtils.cs
- GridViewSortEventArgs.cs
- EditorZoneBase.cs
- DocumentOrderComparer.cs
- CapabilitiesPattern.cs
- XmlNodeList.cs
- ProfileService.cs
- QueueProcessor.cs
- ReceiveErrorHandling.cs
- shaperfactoryquerycacheentry.cs
- LogicalExpr.cs
- DiscoveryReferences.cs
- ServiceHostingEnvironment.cs
- SqlGenerator.cs
- XmlSchemaValidator.cs
- ModuleBuilderData.cs
- RoleManagerModule.cs
- BoundsDrawingContextWalker.cs
- UserMapPath.cs
- Inflater.cs
- DependencyObject.cs
- MailMessage.cs
- IisTraceWebEventProvider.cs
- CalloutQueueItem.cs
- StandardMenuStripVerb.cs
- SplayTreeNode.cs
- DataGridViewComboBoxColumnDesigner.cs
- StateDesigner.CommentLayoutGlyph.cs
- Parameter.cs
- MapPathBasedVirtualPathProvider.cs
- WorkflowRuntimeServiceElementCollection.cs
- LayoutDump.cs
- JsonSerializer.cs
- EntityTypeEmitter.cs
- CrossAppDomainChannel.cs
- FixUpCollection.cs
- SoundPlayerAction.cs
- PrivilegeNotHeldException.cs
- UserControlParser.cs
- ReadOnlyHierarchicalDataSource.cs
- LinkDescriptor.cs
- CompilerGlobalScopeAttribute.cs
- ObjectIDGenerator.cs
- ScriptControl.cs
- TrustManagerPromptUI.cs
- HeaderUtility.cs
- ExceptionTrace.cs
- FilteredSchemaElementLookUpTable.cs
- HttpStreamFormatter.cs
- InternalEnumValidatorAttribute.cs
- EntityParameterCollection.cs
- FlowSwitchLink.cs
- BindableAttribute.cs
- ExecutionEngineException.cs
- IgnorePropertiesAttribute.cs
- ExtensionSimplifierMarkupObject.cs
- PropertiesTab.cs
- PasswordTextNavigator.cs
- SpellerStatusTable.cs
- CompressionTransform.cs
- SecurityContext.cs
- AssociationSet.cs
- ConsoleCancelEventArgs.cs
- ActionItem.cs
- dataSvcMapFileLoader.cs
- CollectionBuilder.cs
- ParameterCollectionEditor.cs
- Module.cs
- BypassElement.cs
- AspProxy.cs
- Stylus.cs
- XmlWellformedWriter.cs
- TemplateBindingExpression.cs
- DrawingCollection.cs
- PerspectiveCamera.cs
- ListBindableAttribute.cs
- DataMemberFieldEditor.cs
- CompletedAsyncResult.cs
- SynchronizationContext.cs
- HttpRequestBase.cs
- EDesignUtil.cs
- AxisAngleRotation3D.cs
- HttpWrapper.cs
- ImageButton.cs
- SystemIPv6InterfaceProperties.cs
- ComPersistableTypeElementCollection.cs
- ColorConvertedBitmap.cs
- InvalidPropValue.cs
- BlurEffect.cs
- DesignerForm.cs
- LayoutUtils.cs
- xsdvalidator.cs
- StrongName.cs
- Mapping.cs
- TypeGeneratedEventArgs.cs
- MatcherBuilder.cs
- SafeSecurityHelper.cs
- InputReport.cs