Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / 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));
}
}
}
}
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- CommandField.cs
- TextBoxBase.cs
- ValidatorCompatibilityHelper.cs
- ShaderEffect.cs
- ListViewGroupConverter.cs
- VoiceChangeEventArgs.cs
- ClassHandlersStore.cs
- CachedRequestParams.cs
- IsolatedStoragePermission.cs
- WebServiceErrorEvent.cs
- UriExt.cs
- TextEvent.cs
- XpsFixedDocumentSequenceReaderWriter.cs
- IsolatedStorage.cs
- DrawingImage.cs
- RtType.cs
- Converter.cs
- ScrollViewerAutomationPeer.cs
- DocumentOrderComparer.cs
- DataControlFieldsEditor.cs
- WindowsFormsSynchronizationContext.cs
- SigningCredentials.cs
- LocalBuilder.cs
- ToolBarOverflowPanel.cs
- COM2IManagedPerPropertyBrowsingHandler.cs
- ListItemParagraph.cs
- DesignerDataStoredProcedure.cs
- MultilineStringConverter.cs
- MissingSatelliteAssemblyException.cs
- RegisteredExpandoAttribute.cs
- AdRotatorDesigner.cs
- DataGridViewAdvancedBorderStyle.cs
- BaseAsyncResult.cs
- CalloutQueueItem.cs
- CompilerScope.Storage.cs
- GeometryHitTestParameters.cs
- LineGeometry.cs
- SqlWorkflowPersistenceService.cs
- ReadOnlyDataSourceView.cs
- FormsAuthenticationCredentials.cs
- HttpHeaderCollection.cs
- DefaultPropertyAttribute.cs
- BlurEffect.cs
- BufferModesCollection.cs
- DisplayMemberTemplateSelector.cs
- EdmFunctionAttribute.cs
- loginstatus.cs
- HttpHeaderCollection.cs
- InfocardChannelParameter.cs
- TypeValidationEventArgs.cs
- SqlDependencyUtils.cs
- TimeSpanOrInfiniteConverter.cs
- CompositionTarget.cs
- DataTableTypeConverter.cs
- CustomSignedXml.cs
- AuthStoreRoleProvider.cs
- DateTimeConstantAttribute.cs
- GlyphCollection.cs
- BlurEffect.cs
- LocationUpdates.cs
- DataGridViewDataErrorEventArgs.cs
- StoreItemCollection.Loader.cs
- Command.cs
- WebPartAddingEventArgs.cs
- QilLoop.cs
- ListBoxItemAutomationPeer.cs
- FatalException.cs
- InstanceStore.cs
- XamlPointCollectionSerializer.cs
- CachedRequestParams.cs
- ExtensibleClassFactory.cs
- SelectingProviderEventArgs.cs
- DurationConverter.cs
- DataControlCommands.cs
- MenuItemStyleCollection.cs
- MasterPageCodeDomTreeGenerator.cs
- PlanCompiler.cs
- StaticResourceExtension.cs
- JumpTask.cs
- ApplySecurityAndSendAsyncResult.cs
- FixedLineResult.cs
- BackgroundWorker.cs
- ValidatorCollection.cs
- UnionQueryOperator.cs
- SystemInformation.cs
- CustomAttribute.cs
- _OverlappedAsyncResult.cs
- ResourceManager.cs
- SafeNativeMethods.cs
- GridViewDeletedEventArgs.cs
- DataRecordObjectView.cs
- FixedSOMLineCollection.cs
- CellNormalizer.cs
- ProviderSettings.cs
- ConfigurationSectionHelper.cs
- RemotingConfigParser.cs
- EdmToObjectNamespaceMap.cs
- GlobalAclOperationRequirement.cs
- LinkClickEvent.cs
- RangeValidator.cs