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
- Size3DConverter.cs
- RuntimeResourceSet.cs
- SchemaCollectionPreprocessor.cs
- EdmType.cs
- SingleConverter.cs
- BitmapSourceSafeMILHandle.cs
- SessionSwitchEventArgs.cs
- SafeEventLogReadHandle.cs
- PixelFormats.cs
- ResourceDisplayNameAttribute.cs
- ConstructorNeedsTagAttribute.cs
- MessageBox.cs
- DataFormats.cs
- ActiveDocumentEvent.cs
- SoapCodeExporter.cs
- XmlDataSourceNodeDescriptor.cs
- PresentationAppDomainManager.cs
- IPPacketInformation.cs
- AnnotationComponentChooser.cs
- RoleService.cs
- XmlSchemaObject.cs
- Version.cs
- Vector3dCollection.cs
- KeyValueConfigurationElement.cs
- ProfessionalColorTable.cs
- SettingsPropertyIsReadOnlyException.cs
- StretchValidation.cs
- GB18030Encoding.cs
- GenericAuthenticationEventArgs.cs
- SHA512.cs
- FixedSOMSemanticBox.cs
- MailSettingsSection.cs
- precedingsibling.cs
- ClientConvert.cs
- LogLogRecordEnumerator.cs
- WebBaseEventKeyComparer.cs
- TemplateControlParser.cs
- SQLUtility.cs
- FillErrorEventArgs.cs
- CodeDirectiveCollection.cs
- ApplicationSettingsBase.cs
- OracleRowUpdatedEventArgs.cs
- VisualBrush.cs
- IMembershipProvider.cs
- XpsInterleavingPolicy.cs
- DbMetaDataCollectionNames.cs
- LoginView.cs
- DbParameterHelper.cs
- XmlCharType.cs
- BlockCollection.cs
- StateDesigner.CommentLayoutGlyph.cs
- XmlNamespaceManager.cs
- MetabaseServerConfig.cs
- ExpressionBuilderCollection.cs
- ViewStateException.cs
- CheckableControlBaseAdapter.cs
- ImpersonationOption.cs
- SingleAnimationUsingKeyFrames.cs
- RtfToXamlReader.cs
- DbTransaction.cs
- ExpressionVisitorHelpers.cs
- CompilerError.cs
- ItemAutomationPeer.cs
- SingleObjectCollection.cs
- _IPv4Address.cs
- RIPEMD160.cs
- SoapFault.cs
- PageParser.cs
- DiffuseMaterial.cs
- StringResourceManager.cs
- LogicalChannel.cs
- SqlBooleanMismatchVisitor.cs
- MappingMetadataHelper.cs
- Transform3DGroup.cs
- AuthenticationModuleElementCollection.cs
- NeutralResourcesLanguageAttribute.cs
- Range.cs
- FixedNode.cs
- TrackingServices.cs
- XPathAncestorIterator.cs
- LingerOption.cs
- ThreadAttributes.cs
- CompareInfo.cs
- KeyFrames.cs
- RevocationPoint.cs
- FactoryGenerator.cs
- EdmMember.cs
- Int64Storage.cs
- HTTPNotFoundHandler.cs
- RequestedSignatureDialog.cs
- MonthChangedEventArgs.cs
- HttpConfigurationContext.cs
- FollowerQueueCreator.cs
- CategoriesDocument.cs
- TabRenderer.cs
- PropertyDescriptorComparer.cs
- CompletedAsyncResult.cs
- TextContainerChangeEventArgs.cs
- PackWebRequest.cs
- MimeTypeAttribute.cs