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
- DateTimeOffset.cs
- SoapCommonClasses.cs
- IndexedGlyphRun.cs
- SmtpException.cs
- SessionViewState.cs
- DynamicValueConverter.cs
- CapiNative.cs
- IDQuery.cs
- Label.cs
- DataServiceContext.cs
- DiscoveryClientDocuments.cs
- PerformanceCounterPermissionEntryCollection.cs
- activationcontext.cs
- EnvelopedSignatureTransform.cs
- XmlAnyElementAttribute.cs
- ZoneMembershipCondition.cs
- InplaceBitmapMetadataWriter.cs
- TreeView.cs
- IdnMapping.cs
- ErrorFormatter.cs
- AnimationStorage.cs
- DrawingVisualDrawingContext.cs
- DispatchWrapper.cs
- WebPartDescription.cs
- Application.cs
- HttpListenerResponse.cs
- StringUtil.cs
- ChangeDirector.cs
- NotCondition.cs
- FormatConvertedBitmap.cs
- ActiveXHost.cs
- ListViewUpdatedEventArgs.cs
- SamlDelegatingWriter.cs
- TableCellCollection.cs
- ProjectionCamera.cs
- WarningException.cs
- DataServiceContext.cs
- BaseValidator.cs
- assertwrapper.cs
- ParserStack.cs
- PerformanceCounterLib.cs
- TextEditorCharacters.cs
- AutomationProperties.cs
- IisHelper.cs
- RepeatButton.cs
- DataTransferEventArgs.cs
- ResourcesChangeInfo.cs
- CLRBindingWorker.cs
- StatusStrip.cs
- EqualityComparer.cs
- UserControl.cs
- ConstraintEnumerator.cs
- Annotation.cs
- TypeSystemProvider.cs
- MethodRental.cs
- SqlDataSourceEnumerator.cs
- WebPartTransformer.cs
- SessionParameter.cs
- PlainXmlWriter.cs
- SHA1.cs
- InputScope.cs
- SiteMapNodeItem.cs
- MonthCalendar.cs
- AppDomainInfo.cs
- QilLiteral.cs
- SizeAnimationClockResource.cs
- SocketException.cs
- WindowsFormsSynchronizationContext.cs
- DataSourceProvider.cs
- BamlLocalizationDictionary.cs
- WebPartEditorOkVerb.cs
- ParseHttpDate.cs
- MULTI_QI.cs
- TextEditorTables.cs
- PropertyConverter.cs
- ConfigPathUtility.cs
- CodeArrayCreateExpression.cs
- TypedLocationWrapper.cs
- TimeEnumHelper.cs
- BoolExpressionVisitors.cs
- DesignerFrame.cs
- RefreshPropertiesAttribute.cs
- BitConverter.cs
- WebPartEventArgs.cs
- CaseInsensitiveComparer.cs
- RequestCachingSection.cs
- ObjectQuery_EntitySqlExtensions.cs
- RayHitTestParameters.cs
- XmlSignificantWhitespace.cs
- BinaryConverter.cs
- DataGridViewEditingControlShowingEventArgs.cs
- FloatMinMaxAggregationOperator.cs
- HttpPostedFile.cs
- MultiPageTextView.cs
- BindingCollection.cs
- EventHandlers.cs
- UnicastIPAddressInformationCollection.cs
- SqlUnionizer.cs
- Vector.cs
- FormsAuthentication.cs