Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / xsp / System / Web / UI / WebControls / MenuItemBindingCollection.cs / 1305376 / MenuItemBindingCollection.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Web.UI.WebControls {
using System;
using System.Collections;
using System.ComponentModel;
using System.Web;
///
/// Provides a collection of MenuItemBinding objects
///
public sealed class MenuItemBindingCollection : StateManagedCollection {
private static readonly Type[] knownTypes = new Type[] { typeof(MenuItemBinding) };
private Menu _owner;
private MenuItemBinding _defaultBinding;
private MenuItemBindingCollection() {
}
internal MenuItemBindingCollection(Menu owner) {
_owner = owner;
}
///
/// Gets the MenuItemBinding at the specified index
///
public MenuItemBinding this[int i] {
get {
return (MenuItemBinding)((IList)this)[i];
}
set {
((IList)this)[i] = value;
}
}
///
/// Adds a MenuItemBinding to the collection
///
public int Add(MenuItemBinding binding) {
return ((IList)this).Add(binding);
}
public bool Contains(MenuItemBinding binding) {
return ((IList)this).Contains(binding);
}
public void CopyTo(MenuItemBinding[] array, int index) {
((IList)this).CopyTo(array, index);
}
protected override object CreateKnownType(int index) {
return new MenuItemBinding();
}
private void FindDefaultBinding() {
_defaultBinding = null;
// Look for another binding that would be a good default
foreach (MenuItemBinding binding in this) {
if (binding.Depth == -1 && binding.DataMember.Length == 0) {
_defaultBinding = binding;
break;
}
}
}
///
/// Gets a MenuItemBinding data binding definition for the specified depth or datamember
///
internal MenuItemBinding GetBinding(string dataMember, int depth) {
MenuItemBinding bestMatch = null;
int match = 0;
if ((dataMember != null) && (dataMember.Length == 0)) {
dataMember = null;
}
foreach (MenuItemBinding binding in this) {
if ((binding.Depth == depth)) {
if (String.Equals(binding.DataMember, dataMember, StringComparison.CurrentCultureIgnoreCase)) {
return binding;
}
else if ((match < 1) && (binding.DataMember.Length == 0)) {
bestMatch = binding;
match = 1;
}
}
else if (String.Equals(binding.DataMember, dataMember, StringComparison.CurrentCultureIgnoreCase) &&
(match < 2) &&
(binding.Depth == -1)) {
bestMatch = binding;
match = 2;
}
}
if (bestMatch == null) {
// Check that the default binding is still suitable (VSWhidbey 358817)
if (_defaultBinding != null) {
if (_defaultBinding.Depth != -1 || _defaultBinding.DataMember.Length != 0) {
// Look for another binding that would be a good default
FindDefaultBinding();
}
bestMatch = _defaultBinding;
}
}
return bestMatch;
}
protected override Type[] GetKnownTypes() {
return knownTypes;
}
public int IndexOf(MenuItemBinding value) {
return ((IList)this).IndexOf(value);
}
public void Insert(int index, MenuItemBinding binding) {
((IList)this).Insert(index, binding);
}
protected override void OnClear() {
_defaultBinding = null;
}
protected override void OnRemoveComplete(int index, object value) {
if (value == _defaultBinding) {
FindDefaultBinding();
}
}
protected override void OnValidate(object value) {
base.OnValidate(value);
MenuItemBinding binding = value as MenuItemBinding;
if ((binding != null) && (binding.DataMember.Length == 0) && (binding.Depth == -1)) {
_defaultBinding = binding;
}
}
///
/// Removes a MenuItemBinding from the collection.
///
public void Remove(MenuItemBinding binding) {
((IList)this).Remove(binding);
}
///
/// Removes a MenuItemBinding from the collection at a given index.
///
public void RemoveAt(int index) {
((IList)this).RemoveAt(index);
}
protected override void SetDirtyObject(object o) {
if (o is MenuItemBinding) {
((MenuItemBinding)o).SetDirty();
}
}
}
}
// 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
- AmbientProperties.cs
- MulticastDelegate.cs
- PowerModeChangedEventArgs.cs
- Window.cs
- DataColumnPropertyDescriptor.cs
- SchemaLookupTable.cs
- PngBitmapEncoder.cs
- InvariantComparer.cs
- InvalidateEvent.cs
- ControlUtil.cs
- CodeSubDirectory.cs
- MetadataCacheItem.cs
- InkCanvasFeedbackAdorner.cs
- CodeBlockBuilder.cs
- XmlILModule.cs
- DefaultTraceListener.cs
- HttpStreams.cs
- InstanceBehavior.cs
- DecimalStorage.cs
- ErrorHandler.cs
- RegexFCD.cs
- AssemblyNameProxy.cs
- MarkupObject.cs
- HtmlMeta.cs
- CodeTypeReference.cs
- DesignerTransactionCloseEvent.cs
- TcpHostedTransportConfiguration.cs
- DockAndAnchorLayout.cs
- DataMember.cs
- OrderedDictionary.cs
- DrawingContextDrawingContextWalker.cs
- ZipIORawDataFileBlock.cs
- OrderPreservingPipeliningMergeHelper.cs
- SamlDoNotCacheCondition.cs
- ChannelManager.cs
- StringPropertyBuilder.cs
- PenLineJoinValidation.cs
- DataGridViewMethods.cs
- ObjectSet.cs
- BindingNavigator.cs
- CredentialSelector.cs
- ExternalCalls.cs
- ComAdminInterfaces.cs
- WebPartEditorOkVerb.cs
- AddingNewEventArgs.cs
- IImplicitResourceProvider.cs
- OutputCacheProfile.cs
- isolationinterop.cs
- ItemChangedEventArgs.cs
- XamlPoint3DCollectionSerializer.cs
- PersonalizablePropertyEntry.cs
- ChannelTraceRecord.cs
- HtmlElementEventArgs.cs
- PictureBox.cs
- TagNameToTypeMapper.cs
- CustomCategoryAttribute.cs
- HostingEnvironmentWrapper.cs
- RuntimeWrappedException.cs
- EditorPart.cs
- KerberosTokenFactoryCredential.cs
- WindowsTab.cs
- EntityDataSourceValidationException.cs
- HierarchicalDataBoundControl.cs
- PersonalizationStateQuery.cs
- ISO2022Encoding.cs
- AnimatedTypeHelpers.cs
- PersonalizationStateInfoCollection.cs
- TextRunTypographyProperties.cs
- ContainerUIElement3D.cs
- DataSpaceManager.cs
- Trigger.cs
- PreProcessInputEventArgs.cs
- webeventbuffer.cs
- PropertyMappingExceptionEventArgs.cs
- MatrixCamera.cs
- WorkflowOperationBehavior.cs
- TextEditor.cs
- AsyncParams.cs
- PerfProviderCollection.cs
- BitSet.cs
- MailBnfHelper.cs
- SizeAnimationBase.cs
- RewritingProcessor.cs
- FilterEventArgs.cs
- COM2EnumConverter.cs
- NominalTypeEliminator.cs
- FixedSOMElement.cs
- CalendarDesigner.cs
- QilXmlWriter.cs
- FileDialog.cs
- MobileUserControlDesigner.cs
- SqlConnectionFactory.cs
- PrintPreviewControl.cs
- basecomparevalidator.cs
- TrueReadOnlyCollection.cs
- StylusEventArgs.cs
- SatelliteContractVersionAttribute.cs
- KeySpline.cs
- DragDeltaEventArgs.cs
- TextChangedEventArgs.cs