Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / untmp / whidbey / QFE / ndp / fx / src / xsp / System / Web / SiteMapNodeCollection.cs / 1 / SiteMapNodeCollection.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
/*
* Copyright (c) 2002 Microsoft Corporation
*/
namespace System.Web {
using System;
using System.Collections;
using System.Diagnostics;
using System.Security.Permissions;
using System.Web.UI;
using System.Web.UI.WebControls;
[AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)]
[AspNetHostingPermission(SecurityAction.InheritanceDemand, Level=AspNetHostingPermissionLevel.Minimal)]
public class SiteMapNodeCollection : IHierarchicalEnumerable, IList {
internal static SiteMapNodeCollection Empty = new ReadOnlySiteMapNodeCollection(new SiteMapNodeCollection());
private int _initialSize = 10;
private ArrayList _innerList;
public SiteMapNodeCollection() {
}
// Create the collection with initial capacity.
public SiteMapNodeCollection(int capacity) {
_initialSize = capacity;
}
public SiteMapNodeCollection(SiteMapNode value) {
if (value == null) {
throw new ArgumentNullException("value");
}
_initialSize = 1;
List.Add(value);
}
public SiteMapNodeCollection(SiteMapNode[] value) {
if (value == null) {
throw new ArgumentNullException("value");
}
_initialSize = value.Length;
AddRangeInternal(value);
}
public SiteMapNodeCollection(SiteMapNodeCollection value) {
if (value == null) {
throw new ArgumentNullException("value");
}
_initialSize = value.Count;
AddRangeInternal(value);
}
public virtual int Count {
get {
return List.Count;
}
}
public virtual bool IsSynchronized {
get {
return List.IsSynchronized;
}
}
public virtual object SyncRoot {
get {
return List.SyncRoot;
}
}
private ArrayList List {
get {
Debug.Assert(!(this is ReadOnlySiteMapNodeCollection), "List should not be called on ReadOnlySiteMapNodeCollection.");
if (_innerList == null) {
_innerList = new ArrayList(_initialSize);
}
return _innerList;
}
}
public virtual bool IsFixedSize {
get { return false; }
}
public virtual bool IsReadOnly {
get { return false; }
}
public virtual SiteMapNode this[int index] {
get {
return (SiteMapNode)List[index];
}
set {
if (value == null) {
throw new ArgumentNullException("value");
}
List[index] = value;
}
}
public virtual int Add(SiteMapNode value) {
if (value == null) {
throw new ArgumentNullException("value");
}
return List.Add(value);
}
public virtual void AddRange(SiteMapNode[] value) {
AddRangeInternal(value);
}
public virtual void AddRange(SiteMapNodeCollection value) {
AddRangeInternal(value);
}
private void AddRangeInternal(IList value) {
if (value == null) {
throw new ArgumentNullException("value");
}
List.AddRange(value);
}
public virtual void Clear() {
List.Clear();
}
public virtual bool Contains(SiteMapNode value) {
return List.Contains(value);
}
public virtual void CopyTo(SiteMapNode[] array, int index) {
CopyToInternal(array, index);
}
internal virtual void CopyToInternal(Array array, int index) {
List.CopyTo(array, index);
}
public SiteMapDataSourceView GetDataSourceView(SiteMapDataSource owner, string viewName) {
return new SiteMapDataSourceView(owner, viewName, this);
}
public virtual IEnumerator GetEnumerator() {
return List.GetEnumerator();
}
public SiteMapHierarchicalDataSourceView GetHierarchicalDataSourceView() {
return new SiteMapHierarchicalDataSourceView(this);
}
public virtual IHierarchyData GetHierarchyData(object enumeratedItem) {
return enumeratedItem as IHierarchyData;
}
public virtual int IndexOf(SiteMapNode value) {
return List.IndexOf(value);
}
public virtual void Insert(int index, SiteMapNode value) {
if (value == null) {
throw new ArgumentNullException("value");
}
List.Insert(index, value);
}
protected virtual void OnValidate(object value) {
if (value == null) {
throw new ArgumentNullException("value");
}
if (!(value is SiteMapNode)) {
throw new ArgumentException(
SR.GetString(SR.SiteMapNodeCollection_Invalid_Type, value.GetType().ToString()));
}
}
public static SiteMapNodeCollection ReadOnly(SiteMapNodeCollection collection) {
if (collection == null) {
throw new ArgumentNullException("collection");
}
return new ReadOnlySiteMapNodeCollection(collection);
}
public virtual void Remove(SiteMapNode value) {
if (value == null) {
throw new ArgumentNullException("value");
}
List.Remove(value);
}
public virtual void RemoveAt(int index) {
List.RemoveAt(index);
}
#region ICollection implementation
int ICollection.Count {
get {
return Count;
}
}
bool ICollection.IsSynchronized {
get {
return IsSynchronized;
}
}
object ICollection.SyncRoot {
get {
return SyncRoot;
}
}
void ICollection.CopyTo(Array array, int index) {
CopyToInternal(array, index);
}
#endregion
#region IEnumerable implementation
IEnumerator IEnumerable.GetEnumerator() {
return GetEnumerator();
}
#endregion
#region IHierarchicalEnumerable implementation
///
IHierarchyData IHierarchicalEnumerable.GetHierarchyData(object enumeratedItem) {
return GetHierarchyData(enumeratedItem);
}
#endregion
#region IList implementation
///
bool IList.IsFixedSize {
get { return IsFixedSize; }
}
///
bool IList.IsReadOnly {
get { return IsReadOnly; }
}
///
object IList.this[int index] {
get {
return this[index];
}
set {
OnValidate(value);
this[index] = (SiteMapNode)value;
}
}
int IList.Add(object value) {
OnValidate(value);
return Add((SiteMapNode)value);
}
void IList.Clear() {
Clear();
}
bool IList.Contains(object value) {
OnValidate(value);
return Contains((SiteMapNode)value);
}
int IList.IndexOf(object value) {
OnValidate(value);
return IndexOf((SiteMapNode)value);
}
void IList.Insert(int index, object value) {
OnValidate(value);
Insert(index, (SiteMapNode)value);
}
void IList.Remove(object value) {
OnValidate(value);
Remove((SiteMapNode)value);
}
void IList.RemoveAt(int index) {
RemoveAt(index);
}
#endregion
private sealed class ReadOnlySiteMapNodeCollection : SiteMapNodeCollection {
private SiteMapNodeCollection _internalCollection;
internal ReadOnlySiteMapNodeCollection(SiteMapNodeCollection collection) {
if (collection == null) {
throw new ArgumentNullException("collection");
}
_internalCollection = collection;
}
public override int Count {
get {
return _internalCollection.Count;
}
}
public override bool IsFixedSize {
get { return true; }
}
public override bool IsReadOnly {
get { return true; }
}
public override bool IsSynchronized {
get {
return _internalCollection.IsSynchronized;
}
}
public override object SyncRoot {
get {
return _internalCollection.SyncRoot;
}
}
public override int Add(SiteMapNode value) {
throw new NotSupportedException(SR.GetString(SR.Collection_readonly));
}
public override void AddRange(SiteMapNode[] value) {
throw new NotSupportedException(SR.GetString(SR.Collection_readonly));
}
public override void AddRange(SiteMapNodeCollection value) {
throw new NotSupportedException(SR.GetString(SR.Collection_readonly));
}
public override void Clear() {
throw new NotSupportedException(SR.GetString(SR.Collection_readonly));
}
public override bool Contains(SiteMapNode node) {
return _internalCollection.Contains(node);
}
internal override void CopyToInternal(Array array, int index) {
_internalCollection.List.CopyTo(array, index);
}
public override SiteMapNode this[int index] {
get {
return _internalCollection[index];
}
set {
throw new NotSupportedException(SR.GetString(SR.Collection_readonly));
}
}
public override IEnumerator GetEnumerator() {
return _internalCollection.GetEnumerator();
}
public override int IndexOf(SiteMapNode value) {
return _internalCollection.IndexOf(value);
}
public override void Insert(int index, SiteMapNode value) {
throw new NotSupportedException(SR.GetString(SR.Collection_readonly));
}
public override void Remove(SiteMapNode value) {
throw new NotSupportedException(SR.GetString(SR.Collection_readonly));
}
public override void RemoveAt(int index) {
throw new NotSupportedException(SR.GetString(SR.Collection_readonly));
}
}
}
}
// 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
- EntityContainer.cs
- StylusLogic.cs
- Documentation.cs
- AutomationElementCollection.cs
- SmtpMail.cs
- XmlDataProvider.cs
- Attributes.cs
- TabControl.cs
- WebBrowsableAttribute.cs
- cookiecontainer.cs
- PerformanceCounterPermissionAttribute.cs
- TypeTypeConverter.cs
- LocalizabilityAttribute.cs
- Calendar.cs
- KeyValueSerializer.cs
- PipeConnection.cs
- TableRowCollection.cs
- SecurityState.cs
- ColorDialog.cs
- NumberFormatInfo.cs
- CommandBindingCollection.cs
- ToolStripContentPanelDesigner.cs
- DiscoveryDocumentSearchPattern.cs
- _ChunkParse.cs
- NavigationProperty.cs
- InstallerTypeAttribute.cs
- CodeDefaultValueExpression.cs
- ChangePassword.cs
- BasicKeyConstraint.cs
- LogEntrySerializationException.cs
- FunctionParameter.cs
- Grid.cs
- CommonGetThemePartSize.cs
- ScriptingJsonSerializationSection.cs
- ObjectDataSource.cs
- ListViewHitTestInfo.cs
- ArgIterator.cs
- InterleavedZipPartStream.cs
- TransformGroup.cs
- FileNotFoundException.cs
- ClientApiGenerator.cs
- RelatedImageListAttribute.cs
- Debug.cs
- BitmapFrameEncode.cs
- GcSettings.cs
- DateTimeOffsetStorage.cs
- SRGSCompiler.cs
- TextBounds.cs
- SmtpNetworkElement.cs
- SendReply.cs
- ClientSponsor.cs
- SecurityElement.cs
- MarkupCompiler.cs
- PropertyGridCommands.cs
- AlternationConverter.cs
- SqlBulkCopyColumnMappingCollection.cs
- PreviousTrackingServiceAttribute.cs
- TextDecorationLocationValidation.cs
- MethodExpression.cs
- PropertyEntry.cs
- CacheVirtualItemsEvent.cs
- SoapObjectInfo.cs
- XhtmlBasicFormAdapter.cs
- TableItemStyle.cs
- DbTransaction.cs
- XPathException.cs
- CatalogZoneBase.cs
- WsatTransactionInfo.cs
- BooleanSwitch.cs
- XmlSchemaAttributeGroupRef.cs
- TagPrefixCollection.cs
- XmlReaderDelegator.cs
- CancelRequestedRecord.cs
- WebPartCloseVerb.cs
- WmlSelectionListAdapter.cs
- BaseTemplateParser.cs
- XamlValidatingReader.cs
- MethodImplAttribute.cs
- OutputCacheEntry.cs
- _ConnectionGroup.cs
- PromptStyle.cs
- ZoomingMessageFilter.cs
- SmiEventSink_DeferedProcessing.cs
- ToolStripContainerActionList.cs
- TableLayoutSettings.cs
- EventWaitHandle.cs
- _CookieModule.cs
- ObjectQueryExecutionPlan.cs
- XmlComplianceUtil.cs
- SizeF.cs
- PageContentAsyncResult.cs
- Property.cs
- ClientProxyGenerator.cs
- wmiprovider.cs
- ReadWriteObjectLock.cs
- MultilineStringConverter.cs
- XmlNotation.cs
- AnnotationComponentManager.cs
- ToolboxItemAttribute.cs
- DBParameter.cs