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
- BooleanFacetDescriptionElement.cs
- Int32CAMarshaler.cs
- Label.cs
- CorruptingExceptionCommon.cs
- ManagedIStream.cs
- StorageAssociationTypeMapping.cs
- GeometryConverter.cs
- TraceSection.cs
- Html32TextWriter.cs
- RotationValidation.cs
- GeometryDrawing.cs
- RectIndependentAnimationStorage.cs
- AuthenticationModulesSection.cs
- TileBrush.cs
- WebPartHeaderCloseVerb.cs
- EndpointReference.cs
- keycontainerpermission.cs
- IApplicationTrustManager.cs
- TaskFormBase.cs
- _Rfc2616CacheValidators.cs
- EmptyEnumerator.cs
- SqlClientWrapperSmiStream.cs
- FaultDescriptionCollection.cs
- ISAPIRuntime.cs
- TabletDeviceInfo.cs
- HashStream.cs
- GACMembershipCondition.cs
- StateValidator.cs
- localization.cs
- LocatorGroup.cs
- KeyMatchBuilder.cs
- FixedPosition.cs
- StreamingContext.cs
- RSAPKCS1KeyExchangeFormatter.cs
- RootProfilePropertySettingsCollection.cs
- DataViewSetting.cs
- ActivityExecutorSurrogate.cs
- DataStreams.cs
- ConnectionPointCookie.cs
- DataListComponentEditor.cs
- AssociatedControlConverter.cs
- XmlSchemaAnnotation.cs
- ControlCachePolicy.cs
- LinqDataView.cs
- MapPathBasedVirtualPathProvider.cs
- ResolvedKeyFrameEntry.cs
- UIElementParaClient.cs
- TimeZone.cs
- SmtpNtlmAuthenticationModule.cs
- RoutedEventValueSerializer.cs
- TransformCollection.cs
- HelpKeywordAttribute.cs
- TextPatternIdentifiers.cs
- ImageClickEventArgs.cs
- MouseCaptureWithinProperty.cs
- SessionParameter.cs
- CodeLabeledStatement.cs
- TreeNodeStyle.cs
- Substitution.cs
- UrlAuthorizationModule.cs
- StrokeDescriptor.cs
- ProfessionalColorTable.cs
- RootDesignerSerializerAttribute.cs
- xmlsaver.cs
- DataGridItemCollection.cs
- CodeExporter.cs
- ContextMenuStripActionList.cs
- NavigationCommands.cs
- Thumb.cs
- CommandPlan.cs
- XmlQueryRuntime.cs
- PaperSize.cs
- ViewCellRelation.cs
- CharKeyFrameCollection.cs
- DataTableReaderListener.cs
- MatrixTransform.cs
- Positioning.cs
- WindowsToolbarItemAsMenuItem.cs
- mansign.cs
- GridViewHeaderRowPresenter.cs
- TextEditorSpelling.cs
- ToolZone.cs
- OdbcConnection.cs
- Predicate.cs
- GridLength.cs
- PolyLineSegment.cs
- HtmlHead.cs
- CodeMemberMethod.cs
- FixUp.cs
- ElementProxy.cs
- Accessible.cs
- PriorityItem.cs
- ResolveResponseInfo.cs
- XamlNamespaceHelper.cs
- WebServiceData.cs
- ActivityInstanceReference.cs
- Vector3DConverter.cs
- RadioButton.cs
- HtmlControlPersistable.cs
- Size3D.cs