Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WF / Common / AuthoringOM / ItemList.cs / 1305376 / ItemList.cs
namespace System.Workflow.ComponentModel { using System; using System.Collections; using System.Collections.Generic; [Flags] internal enum ItemListChangeAction { Add = 0x01, Remove = 0x2, Replace = Add | Remove } internal class ItemListChangeEventArgs: EventArgs { private int index = 0; private ICollection addedItems = null; private ICollection removedItems = null; private object owner = null; private ItemListChangeAction action = ItemListChangeAction.Add; public ItemListChangeEventArgs(int index, ICollection removedItems, ICollection addedItems, object owner, ItemListChangeAction action) { this.index = index; this.removedItems = removedItems; this.addedItems = addedItems; this.action = action; this.owner = owner; } public ItemListChangeEventArgs(int index, T removedActivity, T addedActivity, object owner, ItemListChangeAction action) { this.index = index; if ((object)removedActivity != null) { this.removedItems = new List (); ((List )this.removedItems).Add(removedActivity); } if ((object)addedActivity != null) { this.addedItems = new List (); ((List )this.addedItems).Add(addedActivity); } this.action = action; this.owner = owner; } public IList RemovedItems { get { return (this.removedItems != null) ? new List (this.removedItems).AsReadOnly() : new List ().AsReadOnly(); } } public IList AddedItems { get { return (this.addedItems != null) ? new List (this.addedItems).AsReadOnly() : new List ().AsReadOnly(); } } public object Owner { get { return this.owner; } } public int Index { get { return this.index; } } public ItemListChangeAction Action { get { return this.action; } } } internal delegate void ItemListChangeEventHandler (object sender, ItemListChangeEventArgs e); internal class ItemList : List , IList , IList { internal event ItemListChangeEventHandler ListChanging; private object owner = null; internal ItemList(object owner) { this.owner = owner; } protected object Owner { get { return this.owner; } } bool IsFixedSize { get { return false; } } #region ItemList Members public event ItemListChangeEventHandler ListChanged; #endregion #region IList Members void IList .RemoveAt(int index) { if (index < 0 || index > base.Count) throw new ArgumentOutOfRangeException(); T item = base[index]; FireListChanging(new ItemListChangeEventArgs (index, item, default(T), this.owner, ItemListChangeAction.Remove)); base.RemoveAt(index); FireListChanged(new ItemListChangeEventArgs (index, item, default(T), this.owner, ItemListChangeAction.Remove)); } void IList .Insert(int index, T item) { if (index < 0 || index > base.Count) throw new ArgumentOutOfRangeException(); if ((object)item == null) throw new ArgumentNullException("item"); FireListChanging(new ItemListChangeEventArgs (index, default(T), item, this.owner, ItemListChangeAction.Add)); base.Insert(index, item); FireListChanged(new ItemListChangeEventArgs (index, default(T), item, this.owner, ItemListChangeAction.Add)); } T IList .this[int index] { get { return base[index]; } set { if ((object)value == null) throw new ArgumentNullException("item"); T oldItem = base[index]; FireListChanging(new ItemListChangeEventArgs (index, oldItem, value, this.owner, ItemListChangeAction.Replace)); base[index] = value; FireListChanged(new ItemListChangeEventArgs (index, oldItem, value, this.owner, ItemListChangeAction.Replace)); } } int IList .IndexOf(T item) { return base.IndexOf(item); } #endregion #region ICollection Members bool ICollection .IsReadOnly { get { return false; } } bool ICollection .Contains(T item) { return base.Contains(item); } bool ICollection .Remove(T item) { if (!base.Contains(item)) return false; int index = base.IndexOf(item); if (index >= 0) { FireListChanging(new ItemListChangeEventArgs (index, item, default(T), this.owner, ItemListChangeAction.Remove)); base.Remove(item); FireListChanged(new ItemListChangeEventArgs (index, item, default(T), this.owner, ItemListChangeAction.Remove)); return true; } return false; } void ICollection .Clear() { ICollection children = this.GetRange(0, this.Count); FireListChanging(new ItemListChangeEventArgs (-1, children, null, this.owner, ItemListChangeAction.Remove)); base.Clear(); FireListChanged(new ItemListChangeEventArgs (-1, children, null, this.owner, ItemListChangeAction.Remove)); } void ICollection .Add(T item) { if ((object)item == null) throw new ArgumentNullException("item"); FireListChanging(new ItemListChangeEventArgs (base.Count, default(T), item, this.owner, ItemListChangeAction.Add)); base.Add(item); FireListChanged(new ItemListChangeEventArgs (base.Count, default(T), item, this.owner, ItemListChangeAction.Add)); } int ICollection .Count { get { return base.Count; } } void ICollection .CopyTo(T[] array, int arrayIndex) { base.CopyTo(array, arrayIndex); } #endregion #region IEnumerable Members IEnumerator IEnumerable .GetEnumerator() { return base.GetEnumerator(); } #endregion public new void Add(T item) { ((IList )this).Add(item); } public new void AddRange(IEnumerable collection) { if (collection == null) throw new ArgumentNullException("collection"); FireListChanging(new ItemListChangeEventArgs (-1, null, new List (collection), this.owner, ItemListChangeAction.Add)); base.AddRange(collection); FireListChanged(new ItemListChangeEventArgs (base.Count, null, new List (collection), this.owner, ItemListChangeAction.Add)); } public new void InsertRange(int index, IEnumerable collection) { if (index < 0 || index > base.Count) throw new ArgumentOutOfRangeException(); if (collection == null) throw new ArgumentNullException("collection"); FireListChanging(new ItemListChangeEventArgs (index, null, new List (collection), this.owner, ItemListChangeAction.Add)); base.InsertRange(index, collection); FireListChanged(new ItemListChangeEventArgs (index, null, new List (collection), this.owner, ItemListChangeAction.Add)); } public new void Clear() { ((IList )this).Clear(); } public new void Insert(int index, T item) { ((IList )this).Insert(index, item); } public new bool Remove(T item) { return ((IList )this).Remove(item); } public new void RemoveAt(int index) { ((IList )this).RemoveAt(index); } public new T this[int index] { get { return ((IList )this)[index]; } set { ((IList )this)[index] = value; } } #region Helper methods protected virtual void FireListChanging(ItemListChangeEventArgs eventArgs) { if (this.ListChanging != null) this.ListChanging(this, eventArgs); } protected virtual void FireListChanged(ItemListChangeEventArgs eventArgs) { if (this.ListChanged != null) this.ListChanged(this, eventArgs); } #endregion #region IList Members int IList.Add(object value) { if (!(value is T)) throw new Exception(SR.GetString(SR.Error_InvalidListItem, this.GetType().GetGenericArguments()[0].FullName)); ((IList )this).Add((T)value); return this.Count - 1; } void IList.Clear() { ((IList )this).Clear(); } bool IList.Contains(object value) { if (!(value is T)) throw new Exception(SR.GetString(SR.Error_InvalidListItem, this.GetType().GetGenericArguments()[0].FullName)); return ((IList )this).Contains((T)value); } int IList.IndexOf(object value) { if (!(value is T)) throw new Exception(SR.GetString(SR.Error_InvalidListItem, this.GetType().GetGenericArguments()[0].FullName)); return ((IList )this).IndexOf((T)value); } void IList.Insert(int index, object value) { if (!(value is T)) throw new Exception(SR.GetString(SR.Error_InvalidListItem, this.GetType().GetGenericArguments()[0].FullName)); ((IList )this).Insert(index, (T)value); } bool IList.IsFixedSize { get { return false; } } bool IList.IsReadOnly { get { return ((IList )this).IsReadOnly; } } void IList.Remove(object value) { if (!(value is T)) throw new Exception(SR.GetString(SR.Error_InvalidListItem, this.GetType().GetGenericArguments()[0].FullName)); ((IList )this).Remove((T)value); } object IList.this[int index] { get { return ((IList )this)[index]; } set { if (!(value is T)) throw new Exception(SR.GetString(SR.Error_InvalidListItem, this.GetType().GetGenericArguments()[0].FullName)); ((IList )this)[index] = (T)value; } } #endregion #region ICollection Members void ICollection.CopyTo(Array array, int index) { for (int loop = 0; loop < Count; loop++) array.SetValue(this[loop], loop + index); } bool ICollection.IsSynchronized { get { return false; } } object ICollection.SyncRoot { get { return this; } } #endregion #region IEnumerable Members IEnumerator IEnumerable.GetEnumerator() { return base.GetEnumerator(); } #endregion } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. namespace System.Workflow.ComponentModel { using System; using System.Collections; using System.Collections.Generic; [Flags] internal enum ItemListChangeAction { Add = 0x01, Remove = 0x2, Replace = Add | Remove } internal class ItemListChangeEventArgs : EventArgs { private int index = 0; private ICollection addedItems = null; private ICollection removedItems = null; private object owner = null; private ItemListChangeAction action = ItemListChangeAction.Add; public ItemListChangeEventArgs(int index, ICollection removedItems, ICollection addedItems, object owner, ItemListChangeAction action) { this.index = index; this.removedItems = removedItems; this.addedItems = addedItems; this.action = action; this.owner = owner; } public ItemListChangeEventArgs(int index, T removedActivity, T addedActivity, object owner, ItemListChangeAction action) { this.index = index; if ((object)removedActivity != null) { this.removedItems = new List (); ((List )this.removedItems).Add(removedActivity); } if ((object)addedActivity != null) { this.addedItems = new List (); ((List )this.addedItems).Add(addedActivity); } this.action = action; this.owner = owner; } public IList RemovedItems { get { return (this.removedItems != null) ? new List (this.removedItems).AsReadOnly() : new List ().AsReadOnly(); } } public IList AddedItems { get { return (this.addedItems != null) ? new List (this.addedItems).AsReadOnly() : new List ().AsReadOnly(); } } public object Owner { get { return this.owner; } } public int Index { get { return this.index; } } public ItemListChangeAction Action { get { return this.action; } } } internal delegate void ItemListChangeEventHandler (object sender, ItemListChangeEventArgs e); internal class ItemList : List , IList , IList { internal event ItemListChangeEventHandler ListChanging; private object owner = null; internal ItemList(object owner) { this.owner = owner; } protected object Owner { get { return this.owner; } } bool IsFixedSize { get { return false; } } #region ItemList Members public event ItemListChangeEventHandler ListChanged; #endregion #region IList Members void IList .RemoveAt(int index) { if (index < 0 || index > base.Count) throw new ArgumentOutOfRangeException(); T item = base[index]; FireListChanging(new ItemListChangeEventArgs (index, item, default(T), this.owner, ItemListChangeAction.Remove)); base.RemoveAt(index); FireListChanged(new ItemListChangeEventArgs (index, item, default(T), this.owner, ItemListChangeAction.Remove)); } void IList .Insert(int index, T item) { if (index < 0 || index > base.Count) throw new ArgumentOutOfRangeException(); if ((object)item == null) throw new ArgumentNullException("item"); FireListChanging(new ItemListChangeEventArgs (index, default(T), item, this.owner, ItemListChangeAction.Add)); base.Insert(index, item); FireListChanged(new ItemListChangeEventArgs (index, default(T), item, this.owner, ItemListChangeAction.Add)); } T IList .this[int index] { get { return base[index]; } set { if ((object)value == null) throw new ArgumentNullException("item"); T oldItem = base[index]; FireListChanging(new ItemListChangeEventArgs (index, oldItem, value, this.owner, ItemListChangeAction.Replace)); base[index] = value; FireListChanged(new ItemListChangeEventArgs (index, oldItem, value, this.owner, ItemListChangeAction.Replace)); } } int IList .IndexOf(T item) { return base.IndexOf(item); } #endregion #region ICollection Members bool ICollection .IsReadOnly { get { return false; } } bool ICollection .Contains(T item) { return base.Contains(item); } bool ICollection .Remove(T item) { if (!base.Contains(item)) return false; int index = base.IndexOf(item); if (index >= 0) { FireListChanging(new ItemListChangeEventArgs (index, item, default(T), this.owner, ItemListChangeAction.Remove)); base.Remove(item); FireListChanged(new ItemListChangeEventArgs (index, item, default(T), this.owner, ItemListChangeAction.Remove)); return true; } return false; } void ICollection .Clear() { ICollection children = this.GetRange(0, this.Count); FireListChanging(new ItemListChangeEventArgs (-1, children, null, this.owner, ItemListChangeAction.Remove)); base.Clear(); FireListChanged(new ItemListChangeEventArgs (-1, children, null, this.owner, ItemListChangeAction.Remove)); } void ICollection .Add(T item) { if ((object)item == null) throw new ArgumentNullException("item"); FireListChanging(new ItemListChangeEventArgs (base.Count, default(T), item, this.owner, ItemListChangeAction.Add)); base.Add(item); FireListChanged(new ItemListChangeEventArgs (base.Count, default(T), item, this.owner, ItemListChangeAction.Add)); } int ICollection .Count { get { return base.Count; } } void ICollection .CopyTo(T[] array, int arrayIndex) { base.CopyTo(array, arrayIndex); } #endregion #region IEnumerable Members IEnumerator IEnumerable .GetEnumerator() { return base.GetEnumerator(); } #endregion public new void Add(T item) { ((IList )this).Add(item); } public new void AddRange(IEnumerable collection) { if (collection == null) throw new ArgumentNullException("collection"); FireListChanging(new ItemListChangeEventArgs (-1, null, new List (collection), this.owner, ItemListChangeAction.Add)); base.AddRange(collection); FireListChanged(new ItemListChangeEventArgs (base.Count, null, new List (collection), this.owner, ItemListChangeAction.Add)); } public new void InsertRange(int index, IEnumerable collection) { if (index < 0 || index > base.Count) throw new ArgumentOutOfRangeException(); if (collection == null) throw new ArgumentNullException("collection"); FireListChanging(new ItemListChangeEventArgs (index, null, new List (collection), this.owner, ItemListChangeAction.Add)); base.InsertRange(index, collection); FireListChanged(new ItemListChangeEventArgs (index, null, new List (collection), this.owner, ItemListChangeAction.Add)); } public new void Clear() { ((IList )this).Clear(); } public new void Insert(int index, T item) { ((IList )this).Insert(index, item); } public new bool Remove(T item) { return ((IList )this).Remove(item); } public new void RemoveAt(int index) { ((IList )this).RemoveAt(index); } public new T this[int index] { get { return ((IList )this)[index]; } set { ((IList )this)[index] = value; } } #region Helper methods protected virtual void FireListChanging(ItemListChangeEventArgs eventArgs) { if (this.ListChanging != null) this.ListChanging(this, eventArgs); } protected virtual void FireListChanged(ItemListChangeEventArgs eventArgs) { if (this.ListChanged != null) this.ListChanged(this, eventArgs); } #endregion #region IList Members int IList.Add(object value) { if (!(value is T)) throw new Exception(SR.GetString(SR.Error_InvalidListItem, this.GetType().GetGenericArguments()[0].FullName)); ((IList )this).Add((T)value); return this.Count - 1; } void IList.Clear() { ((IList )this).Clear(); } bool IList.Contains(object value) { if (!(value is T)) throw new Exception(SR.GetString(SR.Error_InvalidListItem, this.GetType().GetGenericArguments()[0].FullName)); return ((IList )this).Contains((T)value); } int IList.IndexOf(object value) { if (!(value is T)) throw new Exception(SR.GetString(SR.Error_InvalidListItem, this.GetType().GetGenericArguments()[0].FullName)); return ((IList )this).IndexOf((T)value); } void IList.Insert(int index, object value) { if (!(value is T)) throw new Exception(SR.GetString(SR.Error_InvalidListItem, this.GetType().GetGenericArguments()[0].FullName)); ((IList )this).Insert(index, (T)value); } bool IList.IsFixedSize { get { return false; } } bool IList.IsReadOnly { get { return ((IList )this).IsReadOnly; } } void IList.Remove(object value) { if (!(value is T)) throw new Exception(SR.GetString(SR.Error_InvalidListItem, this.GetType().GetGenericArguments()[0].FullName)); ((IList )this).Remove((T)value); } object IList.this[int index] { get { return ((IList )this)[index]; } set { if (!(value is T)) throw new Exception(SR.GetString(SR.Error_InvalidListItem, this.GetType().GetGenericArguments()[0].FullName)); ((IList )this)[index] = (T)value; } } #endregion #region ICollection Members void ICollection.CopyTo(Array array, int index) { for (int loop = 0; loop < Count; loop++) array.SetValue(this[loop], loop + index); } bool ICollection.IsSynchronized { get { return false; } } object ICollection.SyncRoot { get { return this; } } #endregion #region IEnumerable Members IEnumerator IEnumerable.GetEnumerator() { return base.GetEnumerator(); } #endregion } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- CharEnumerator.cs
- BodyWriter.cs
- CharStorage.cs
- APCustomTypeDescriptor.cs
- CompilerGeneratedAttribute.cs
- CodeTypeDeclaration.cs
- BrowserCapabilitiesFactory.cs
- XmlSerializerAssemblyAttribute.cs
- WebBodyFormatMessageProperty.cs
- GridViewRowPresenterBase.cs
- ConnectionManagementElementCollection.cs
- DefaultTraceListener.cs
- BamlRecordHelper.cs
- FixedPageStructure.cs
- TagNameToTypeMapper.cs
- SecurityTraceRecordHelper.cs
- DataGridViewTopRowAccessibleObject.cs
- DataServiceStreamResponse.cs
- DeferredElementTreeState.cs
- UrlAuthFailedErrorFormatter.cs
- FastEncoder.cs
- WhitespaceSignificantCollectionAttribute.cs
- DrawingBrush.cs
- ItemsChangedEventArgs.cs
- StreamDocument.cs
- PointLightBase.cs
- NamespaceDecl.cs
- DeviceOverridableAttribute.cs
- EventMemberCodeDomSerializer.cs
- KeyValuePairs.cs
- VectorAnimationBase.cs
- MethodAccessException.cs
- ArrayElementGridEntry.cs
- NullRuntimeConfig.cs
- EncryptedPackageFilter.cs
- ConsumerConnectionPointCollection.cs
- DiagnosticTraceSource.cs
- BamlResourceSerializer.cs
- SizeChangedEventArgs.cs
- CodeLinePragma.cs
- SettingsAttributeDictionary.cs
- OperationAbortedException.cs
- CachingHintValidation.cs
- HelpFileFileNameEditor.cs
- DataServiceBuildProvider.cs
- SqlClientPermission.cs
- ResourceCategoryAttribute.cs
- SelectionEditingBehavior.cs
- NotifyCollectionChangedEventArgs.cs
- DataObject.cs
- HandlerMappingMemo.cs
- EasingKeyFrames.cs
- AffineTransform3D.cs
- NumberFunctions.cs
- BuildManagerHost.cs
- WmlLabelAdapter.cs
- TextEffect.cs
- Trace.cs
- SqlConnectionPoolProviderInfo.cs
- RemotingException.cs
- Boolean.cs
- RolePrincipal.cs
- Timeline.cs
- ProtocolsConfigurationHandler.cs
- RubberbandSelector.cs
- ComplexPropertyEntry.cs
- xsdvalidator.cs
- EventInfo.cs
- DataColumnPropertyDescriptor.cs
- WpfMemberInvoker.cs
- SerialPort.cs
- FileIOPermission.cs
- ListViewItemCollectionEditor.cs
- FindCompletedEventArgs.cs
- TimeBoundedCache.cs
- UIElementParagraph.cs
- RadioButtonBaseAdapter.cs
- Debugger.cs
- VectorCollectionConverter.cs
- BindUriHelper.cs
- BitmapInitialize.cs
- DataTableMapping.cs
- ContractMapping.cs
- XmlUrlResolver.cs
- DataSysAttribute.cs
- RenamedEventArgs.cs
- StoreAnnotationsMap.cs
- TagNameToTypeMapper.cs
- _NetRes.cs
- RoutedEventConverter.cs
- OleDbWrapper.cs
- BatchParser.cs
- OdbcRowUpdatingEvent.cs
- DetailsViewDeleteEventArgs.cs
- AttributeAction.cs
- ThreadInterruptedException.cs
- DebugView.cs
- SoapSchemaImporter.cs
- MsdtcWrapper.cs
- Point3DCollection.cs