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
- NullExtension.cs
- EllipseGeometry.cs
- XmlIncludeAttribute.cs
- DetailsViewInsertEventArgs.cs
- FrameworkElementFactoryMarkupObject.cs
- ProgressiveCrcCalculatingStream.cs
- AppSettingsSection.cs
- XpsS0ValidatingLoader.cs
- PasswordRecoveryAutoFormat.cs
- ArraySegment.cs
- Tokenizer.cs
- WebReference.cs
- RelationshipConverter.cs
- GeneratedContractType.cs
- XPathPatternParser.cs
- MDIWindowDialog.cs
- HScrollBar.cs
- ClientConvert.cs
- CompressedStack.cs
- connectionpool.cs
- DataGridViewCellStyleContentChangedEventArgs.cs
- x509store.cs
- MethodBody.cs
- CollectionDataContract.cs
- DataService.cs
- LocatorPart.cs
- XmlSchemaInferenceException.cs
- DocumentNUp.cs
- DataGridViewCellCollection.cs
- Adorner.cs
- HashSetDebugView.cs
- BuildResult.cs
- ListBindableAttribute.cs
- CultureTableRecord.cs
- Attributes.cs
- FormatterServices.cs
- IgnorePropertiesAttribute.cs
- CompModSwitches.cs
- GC.cs
- CompareValidator.cs
- RepeaterCommandEventArgs.cs
- ImagingCache.cs
- EntityDataSourceEntityTypeFilterItem.cs
- ModelUIElement3D.cs
- ProxyElement.cs
- CreateUserWizard.cs
- dataprotectionpermission.cs
- ObjectSecurity.cs
- TimeSpanHelper.cs
- Boolean.cs
- RelationshipDetailsRow.cs
- XmlNamespaceMappingCollection.cs
- AsyncContentLoadedEventArgs.cs
- BaseTemplateParser.cs
- DiscoveryDocument.cs
- ListViewItem.cs
- PasswordRecoveryAutoFormat.cs
- RemotingAttributes.cs
- XhtmlBasicPageAdapter.cs
- RuntimeConfigLKG.cs
- XamlFilter.cs
- IUnknownConstantAttribute.cs
- UInt16Storage.cs
- RequestBringIntoViewEventArgs.cs
- GroupQuery.cs
- login.cs
- _CacheStreams.cs
- SmiMetaDataProperty.cs
- Transform3D.cs
- LocatorBase.cs
- BackStopAuthenticationModule.cs
- MenuAutomationPeer.cs
- DiagnosticsConfiguration.cs
- SecurityElement.cs
- DataContractSerializerSection.cs
- SafeLibraryHandle.cs
- PageWrapper.cs
- AliasedSlot.cs
- ADRoleFactoryConfiguration.cs
- RSAPKCS1KeyExchangeFormatter.cs
- SelectionChangedEventArgs.cs
- PtsPage.cs
- CompositeTypefaceMetrics.cs
- tabpagecollectioneditor.cs
- SQLBinary.cs
- TraceSwitch.cs
- StringToken.cs
- DataObject.cs
- ETagAttribute.cs
- XdrBuilder.cs
- UrlMappingsModule.cs
- TabPage.cs
- CreateParams.cs
- LoginName.cs
- ControlBuilderAttribute.cs
- HttpClientCertificate.cs
- ParenthesizePropertyNameAttribute.cs
- XmlSortKeyAccumulator.cs
- CodeArrayCreateExpression.cs
- WebPartDisplayModeCollection.cs