Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / WinForms / Managed / System / WinForms / Layout / ArrangedElementCollection.cs / 1305376 / ArrangedElementCollection.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Windows.Forms.Layout { using System.Collections; using System.Security.Permissions; ///public class ArrangedElementCollection : IList { internal static ArrangedElementCollection Empty = new ArrangedElementCollection(0); // We wrap an ArrayList rather than inherit from CollectionBase because we // do not want to break binary compatibility with ControlCollection. private ArrayList _innerList; // Internal constructor prevents externals from getting a hold of one of these. // We'll open this up in Orcas. internal ArrangedElementCollection() { _innerList = new ArrayList(4); } internal ArrangedElementCollection(ArrayList innerList) { _innerList = innerList; } private ArrangedElementCollection(int size) { _innerList = new ArrayList(size); } internal ArrayList InnerList { get { return _innerList; } } internal virtual IArrangedElement this[int index] { [System.Runtime.TargetedPatchingOptOutAttribute("Performance critical to inline across NGen image boundaries")] get { return (IArrangedElement) InnerList[index]; } } /// public override bool Equals(object obj) { ArrangedElementCollection other = obj as ArrangedElementCollection; if (other == null || Count != other.Count) { return false; } for (int i = 0; i < Count; i++) { if (this.InnerList[i] != other.InnerList[i]) { return false; } } return true; } // Required if you override Equals. /// public override int GetHashCode() { return base.GetHashCode(); } // Repositions a element in this list. internal void MoveElement(IArrangedElement element, int fromIndex, int toIndex) { int delta = toIndex - fromIndex; switch (delta) { case -1: case 1: // simple swap this.InnerList[fromIndex] = this.InnerList[toIndex]; break; default: int start = 0; int dest = 0; // which direction are we moving? if (delta > 0) { // shift down by the delta to open the new spot start = fromIndex + 1; dest = fromIndex; } else { // shift up by the delta to open the new spot start = toIndex; dest = toIndex + 1; // make it positive delta = -delta; } Copy(this, start, this, dest, delta); break; } this.InnerList[toIndex] = element; } private static void Copy (ArrangedElementCollection sourceList, int sourceIndex, ArrangedElementCollection destinationList, int destinationIndex, int length) { if(sourceIndex < destinationIndex) { // We need to copy from the back forward to prevent overwrite if source and // destination lists are the same, so we need to flip the source/dest indices // to point at the end of the spans to be copied. sourceIndex = sourceIndex + length; destinationIndex = destinationIndex + length; for(;length > 0; length--) { destinationList.InnerList[--destinationIndex] = sourceList.InnerList[--sourceIndex]; } } else { for(;length > 0; length--) { destinationList.InnerList[destinationIndex++] = sourceList.InnerList[sourceIndex++]; } } } #region IList Members void IList.Clear() { InnerList.Clear(); } bool IList.IsFixedSize { get { return InnerList.IsFixedSize; }} bool IList.Contains(object value) { return InnerList.Contains(value); } /// public virtual bool IsReadOnly { get { return InnerList.IsReadOnly; }} void IList.RemoveAt(int index) { InnerList.RemoveAt(index); } void IList.Remove(object value) { InnerList.Remove(value); } int IList.Add(object value) { return InnerList.Add(value); } int IList.IndexOf(object value) { return InnerList.IndexOf(value); } void IList.Insert(int index, object value) { throw new NotSupportedException(); /* InnerList.Insert(index, value); */ } /// /// object IList.this[int index] { get { return InnerList[index]; } set { throw new NotSupportedException(); } } #endregion #region ICollection Members /// public virtual int Count { [System.Runtime.TargetedPatchingOptOutAttribute("Performance critical to inline across NGen image boundaries")] get { return InnerList.Count; } } object ICollection.SyncRoot { get { return InnerList.SyncRoot; }} /// public void CopyTo(Array array, int index) { InnerList.CopyTo(array, index); } bool ICollection.IsSynchronized { get { return InnerList.IsSynchronized; }} #endregion #region IEnumerable Members /// public virtual IEnumerator GetEnumerator() { return InnerList.GetEnumerator(); } #endregion } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ // // Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Windows.Forms.Layout { using System.Collections; using System.Security.Permissions; ///public class ArrangedElementCollection : IList { internal static ArrangedElementCollection Empty = new ArrangedElementCollection(0); // We wrap an ArrayList rather than inherit from CollectionBase because we // do not want to break binary compatibility with ControlCollection. private ArrayList _innerList; // Internal constructor prevents externals from getting a hold of one of these. // We'll open this up in Orcas. internal ArrangedElementCollection() { _innerList = new ArrayList(4); } internal ArrangedElementCollection(ArrayList innerList) { _innerList = innerList; } private ArrangedElementCollection(int size) { _innerList = new ArrayList(size); } internal ArrayList InnerList { get { return _innerList; } } internal virtual IArrangedElement this[int index] { [System.Runtime.TargetedPatchingOptOutAttribute("Performance critical to inline across NGen image boundaries")] get { return (IArrangedElement) InnerList[index]; } } /// public override bool Equals(object obj) { ArrangedElementCollection other = obj as ArrangedElementCollection; if (other == null || Count != other.Count) { return false; } for (int i = 0; i < Count; i++) { if (this.InnerList[i] != other.InnerList[i]) { return false; } } return true; } // Required if you override Equals. /// public override int GetHashCode() { return base.GetHashCode(); } // Repositions a element in this list. internal void MoveElement(IArrangedElement element, int fromIndex, int toIndex) { int delta = toIndex - fromIndex; switch (delta) { case -1: case 1: // simple swap this.InnerList[fromIndex] = this.InnerList[toIndex]; break; default: int start = 0; int dest = 0; // which direction are we moving? if (delta > 0) { // shift down by the delta to open the new spot start = fromIndex + 1; dest = fromIndex; } else { // shift up by the delta to open the new spot start = toIndex; dest = toIndex + 1; // make it positive delta = -delta; } Copy(this, start, this, dest, delta); break; } this.InnerList[toIndex] = element; } private static void Copy (ArrangedElementCollection sourceList, int sourceIndex, ArrangedElementCollection destinationList, int destinationIndex, int length) { if(sourceIndex < destinationIndex) { // We need to copy from the back forward to prevent overwrite if source and // destination lists are the same, so we need to flip the source/dest indices // to point at the end of the spans to be copied. sourceIndex = sourceIndex + length; destinationIndex = destinationIndex + length; for(;length > 0; length--) { destinationList.InnerList[--destinationIndex] = sourceList.InnerList[--sourceIndex]; } } else { for(;length > 0; length--) { destinationList.InnerList[destinationIndex++] = sourceList.InnerList[sourceIndex++]; } } } #region IList Members void IList.Clear() { InnerList.Clear(); } bool IList.IsFixedSize { get { return InnerList.IsFixedSize; }} bool IList.Contains(object value) { return InnerList.Contains(value); } /// public virtual bool IsReadOnly { get { return InnerList.IsReadOnly; }} void IList.RemoveAt(int index) { InnerList.RemoveAt(index); } void IList.Remove(object value) { InnerList.Remove(value); } int IList.Add(object value) { return InnerList.Add(value); } int IList.IndexOf(object value) { return InnerList.IndexOf(value); } void IList.Insert(int index, object value) { throw new NotSupportedException(); /* InnerList.Insert(index, value); */ } /// /// object IList.this[int index] { get { return InnerList[index]; } set { throw new NotSupportedException(); } } #endregion #region ICollection Members /// public virtual int Count { [System.Runtime.TargetedPatchingOptOutAttribute("Performance critical to inline across NGen image boundaries")] get { return InnerList.Count; } } object ICollection.SyncRoot { get { return InnerList.SyncRoot; }} /// public void CopyTo(Array array, int index) { InnerList.CopyTo(array, index); } bool ICollection.IsSynchronized { get { return InnerList.IsSynchronized; }} #endregion #region IEnumerable Members /// public virtual IEnumerator GetEnumerator() { return InnerList.GetEnumerator(); } #endregion } } // 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
- NativeRecognizer.cs
- TCPListener.cs
- InstalledVoice.cs
- AccessControlList.cs
- WindowsSysHeader.cs
- DataServiceExpressionVisitor.cs
- DefaultSection.cs
- XPathDocumentNavigator.cs
- ZipIOExtraField.cs
- RefreshPropertiesAttribute.cs
- XmlSerializerFactory.cs
- GPPOINT.cs
- HybridObjectCache.cs
- DataViewManagerListItemTypeDescriptor.cs
- TableLayoutPanel.cs
- DependencyPropertyConverter.cs
- NullableFloatSumAggregationOperator.cs
- MemberAccessException.cs
- QueryExpression.cs
- ArgIterator.cs
- QilReference.cs
- HtmlTitle.cs
- TreeNodeMouseHoverEvent.cs
- remotingproxy.cs
- StorageScalarPropertyMapping.cs
- LinkClickEvent.cs
- DataGridTextBoxColumn.cs
- FlatButtonAppearance.cs
- NumericUpDownAcceleration.cs
- Publisher.cs
- DesignerDataTable.cs
- DataRecord.cs
- TextTreeDeleteContentUndoUnit.cs
- IconConverter.cs
- FullTrustAssembliesSection.cs
- EnvironmentPermission.cs
- SqlDependencyUtils.cs
- RectAnimationClockResource.cs
- Convert.cs
- BuildResult.cs
- ArrayElementGridEntry.cs
- FloaterParagraph.cs
- ListBindingConverter.cs
- TripleDES.cs
- HostProtectionPermission.cs
- ResourceDictionaryCollection.cs
- ContentOperations.cs
- AssociationTypeEmitter.cs
- Resources.Designer.cs
- TextTrailingCharacterEllipsis.cs
- GuidTagList.cs
- SizeF.cs
- CounterCreationData.cs
- TriState.cs
- ISessionStateStore.cs
- ImplicitInputBrush.cs
- CaretElement.cs
- CustomAttribute.cs
- PropertyGridEditorPart.cs
- SQLDoubleStorage.cs
- SortFieldComparer.cs
- ExponentialEase.cs
- Walker.cs
- KeyPullup.cs
- HTMLTextWriter.cs
- EntityDataSourceDataSelection.cs
- PackageRelationshipSelector.cs
- XPathBinder.cs
- SByteConverter.cs
- BadImageFormatException.cs
- SqlClientWrapperSmiStreamChars.cs
- ToolStripScrollButton.cs
- JoinCqlBlock.cs
- WebPartConnectionCollection.cs
- AsynchronousChannelMergeEnumerator.cs
- PerformanceCounterPermission.cs
- HtmlEmptyTagControlBuilder.cs
- SqlDataAdapter.cs
- DataGridColumnHeadersPresenter.cs
- DataGridCaption.cs
- CqlWriter.cs
- PrivilegedConfigurationManager.cs
- ParallelForEach.cs
- XPathSelfQuery.cs
- _ConnectOverlappedAsyncResult.cs
- CompoundFileDeflateTransform.cs
- TextCharacters.cs
- CachedTypeface.cs
- DbConnectionPoolCounters.cs
- _ProxyRegBlob.cs
- MemberInitExpression.cs
- LocationUpdates.cs
- ResourceProperty.cs
- EventMetadata.cs
- UnknownBitmapEncoder.cs
- FormViewModeEventArgs.cs
- TextElementCollectionHelper.cs
- RSAPKCS1SignatureDeformatter.cs
- DesignOnlyAttribute.cs
- UidManager.cs