Code:
/ 4.0 / 4.0 / 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. //---------------------------------------------------------------- // 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
- VisualStyleTypesAndProperties.cs
- NavigationService.cs
- ProbeDuplexCD1AsyncResult.cs
- LassoSelectionBehavior.cs
- Table.cs
- ComponentResourceManager.cs
- OnOperation.cs
- PartialCachingControl.cs
- Point3D.cs
- ListCardsInFileRequest.cs
- SignatureHelper.cs
- ButtonBaseAutomationPeer.cs
- exports.cs
- SimpleHandlerFactory.cs
- FormsAuthenticationUserCollection.cs
- ClockGroup.cs
- UIElement.cs
- XpsFilter.cs
- HwndSourceKeyboardInputSite.cs
- PerformanceCounterPermissionEntry.cs
- TcpServerChannel.cs
- Padding.cs
- TextSearch.cs
- EntityDataSourceDesigner.cs
- RelAssertionDirectKeyIdentifierClause.cs
- BaseTemplateBuildProvider.cs
- XmlBaseReader.cs
- BamlCollectionHolder.cs
- NotifyParentPropertyAttribute.cs
- OpenTypeLayoutCache.cs
- BindingGroup.cs
- securitycriticaldataformultiplegetandset.cs
- IriParsingElement.cs
- CmsInterop.cs
- Configuration.cs
- BatchParser.cs
- DataGridViewTextBoxCell.cs
- DataSourceDescriptorCollection.cs
- MessageEncoderFactory.cs
- DataKey.cs
- SubclassTypeValidator.cs
- CroppedBitmap.cs
- IndentedWriter.cs
- VBIdentifierDesigner.xaml.cs
- EncodingConverter.cs
- DrawToolTipEventArgs.cs
- PropertyGroupDescription.cs
- JournalEntryListConverter.cs
- ContentElementAutomationPeer.cs
- _HeaderInfo.cs
- ApplicationTrust.cs
- ParseChildrenAsPropertiesAttribute.cs
- OrderByBuilder.cs
- WebColorConverter.cs
- GeneralTransform3DTo2DTo3D.cs
- RangeBase.cs
- InfoCardMasterKey.cs
- UserPreferenceChangingEventArgs.cs
- SelectedDatesCollection.cs
- ObjectListFieldsPage.cs
- TimeIntervalCollection.cs
- IntegerValidator.cs
- BindStream.cs
- MsmqQueue.cs
- ClickablePoint.cs
- ArgumentOutOfRangeException.cs
- OdbcConnectionHandle.cs
- PagedDataSource.cs
- TextElementCollectionHelper.cs
- StylusDownEventArgs.cs
- VectorAnimationBase.cs
- SafeFileMapViewHandle.cs
- CursorInteropHelper.cs
- RadialGradientBrush.cs
- FocusChangedEventArgs.cs
- SystemIPGlobalStatistics.cs
- TemplateColumn.cs
- SqlGenerator.cs
- JobPageOrder.cs
- LocalizabilityAttribute.cs
- CSharpCodeProvider.cs
- XmlNodeComparer.cs
- SerializationStore.cs
- SiteOfOriginContainer.cs
- DesignerActionUIService.cs
- ItemMap.cs
- DocumentPageTextView.cs
- InputScopeManager.cs
- WpfKnownMemberInvoker.cs
- TraceSection.cs
- SqlCacheDependency.cs
- Socket.cs
- DesigntimeLicenseContextSerializer.cs
- CombinedGeometry.cs
- DataDocumentXPathNavigator.cs
- StyleModeStack.cs
- XmlSchemaSimpleType.cs
- RegexNode.cs
- ConfigurationPropertyCollection.cs
- HwndProxyElementProvider.cs