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
- DurationConverter.cs
- TextSpan.cs
- EdmComplexTypeAttribute.cs
- WizardStepBase.cs
- HashSetEqualityComparer.cs
- PrimitiveCodeDomSerializer.cs
- IODescriptionAttribute.cs
- CheckBoxField.cs
- Composition.cs
- EntryWrittenEventArgs.cs
- WebPartEventArgs.cs
- CoTaskMemSafeHandle.cs
- SmtpNtlmAuthenticationModule.cs
- MailWebEventProvider.cs
- recordstate.cs
- DrawingAttributesDefaultValueFactory.cs
- DocumentApplicationJournalEntry.cs
- ActivationServices.cs
- OleDbCommand.cs
- FamilyMapCollection.cs
- SeverityFilter.cs
- ColorMatrix.cs
- SafeProcessHandle.cs
- Selection.cs
- InternalCache.cs
- SwitchLevelAttribute.cs
- ThrowHelper.cs
- GeometryConverter.cs
- _HelperAsyncResults.cs
- MasterPageParser.cs
- TransportContext.cs
- LocatorPart.cs
- DescendantQuery.cs
- WebPartTransformerCollection.cs
- XmlWellformedWriter.cs
- DSASignatureDeformatter.cs
- IndexedEnumerable.cs
- BCryptSafeHandles.cs
- RegexGroupCollection.cs
- RouteData.cs
- FixedHyperLink.cs
- ClientApiGenerator.cs
- TypeUtil.cs
- ItemMap.cs
- DeploymentSectionCache.cs
- QuotedPrintableStream.cs
- UnsafeNativeMethods.cs
- PagerSettings.cs
- MethodBody.cs
- ChtmlTextWriter.cs
- SystemResources.cs
- PrefixQName.cs
- EncodingTable.cs
- WebControlParameterProxy.cs
- PathData.cs
- DataException.cs
- XmlCountingReader.cs
- DataControlLinkButton.cs
- TableMethodGenerator.cs
- HelpInfo.cs
- NativeCompoundFileAPIs.cs
- ConfigurationElementCollection.cs
- TargetPerspective.cs
- CompensableActivity.cs
- Literal.cs
- HttpWebResponse.cs
- InputLanguageProfileNotifySink.cs
- ToolStripButton.cs
- EventMetadata.cs
- HttpRequestCacheValidator.cs
- SettingsAttributes.cs
- FixedTextContainer.cs
- PerformanceCounterManager.cs
- SoapProtocolImporter.cs
- Transactions.cs
- StreamingContext.cs
- MimeAnyImporter.cs
- TextContainerChangeEventArgs.cs
- PageWrapper.cs
- ImageInfo.cs
- DynamicArgumentDesigner.xaml.cs
- ChannelEndpointElementCollection.cs
- SiteMapDataSourceDesigner.cs
- DataRowExtensions.cs
- ByteStorage.cs
- FilterQuery.cs
- DesignTimeVisibleAttribute.cs
- ExpressionBindings.cs
- OracleParameterCollection.cs
- IssuanceLicense.cs
- PathStreamGeometryContext.cs
- TemplatePartAttribute.cs
- DirectionalLight.cs
- ButtonBase.cs
- recordstate.cs
- SpecialNameAttribute.cs
- MatrixCamera.cs
- ControlTemplate.cs
- EntityDataReader.cs
- EdmSchemaError.cs