Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / ndp / fx / src / Designer / System / data / design / DataSourceCollectionBase.cs / 1 / DataSourceCollectionBase.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All Rights Reserved.
// Information Contained Herein is Proprietary and Confidential.
//
//-----------------------------------------------------------------------------
namespace System.Data.Design{
using System;
using System.Collections;
using System.ComponentModel;
using System.Diagnostics;
using System.Globalization;
///
///
internal abstract class DataSourceCollectionBase : CollectionBase, INamedObjectCollection, IObjectWithParent {
private DataSourceComponent collectionHost;
internal DataSourceCollectionBase(DataSourceComponent collectionHost) {
this.collectionHost = collectionHost;
}
internal virtual DataSourceComponent CollectionHost {
get {
return this.collectionHost;
}
set {
this.collectionHost = value;
}
}
protected virtual Type ItemType {
get {
return typeof(IDataSourceNamedObject);
}
}
protected abstract INameService NameService {
get;
}
[Browsable(false)]
object IObjectWithParent.Parent {
get {
return this.collectionHost;
}
}
protected virtual string CreateUniqueName(IDataSourceNamedObject value) {
string suggestedName = StringUtil.NotEmpty(value.Name) ?
value.Name :
value.PublicTypeName;
return NameService.CreateUniqueName(this, suggestedName, 1);
}
///
/// This function will check to see namedObject have a name conflict with the names
/// used in the collection and fix the name for namedObject if there is a conflict
///
///
internal protected virtual void EnsureUniqueName(IDataSourceNamedObject namedObject) {
if (namedObject.Name == null || namedObject.Name.Length == 0 || this.FindObject(namedObject.Name) != null) {
namedObject.Name = CreateUniqueName(namedObject);
}
}
internal virtual protected IDataSourceNamedObject FindObject(string name) {
IEnumerator e = this.InnerList.GetEnumerator();
while( e.MoveNext() ) {
IDataSourceNamedObject existing = (IDataSourceNamedObject) e.Current;
if (StringUtil.EqualValue(existing.Name, name)) {
return existing;
}
}
return null;
}
public void InsertBefore(object value, object refObject) {
int index = List.IndexOf(refObject);
if (index >= 0) {
List.Insert(index, value);
}
else {
List.Add(value);
}
}
protected override void OnValidate( object value ) {
base.OnValidate( value );
ValidateType( value );
}
public void Remove(string name) {
INamedObject obj = NamedObjectUtil.Find( this, name );
if( obj != null ) {
this.List.Remove( obj );
}
}
///
/// This function only check the name to be valid, typically used by Insert function, which already ensure the name is unique
///
///
internal protected virtual void ValidateName(IDataSourceNamedObject obj) {
this.NameService.ValidateName(obj.Name);
}
///
/// This function checks the name to be unique and valid, typically used by rename
///
///
///
internal protected virtual void ValidateUniqueName(IDataSourceNamedObject obj, string proposedName) {
this.NameService.ValidateUniqueName(this, obj, proposedName);
}
protected void ValidateType( object value ) {
if (!ItemType.IsInstanceOfType(value)) {
throw new InternalException(VSDExceptions.DataSource.INVALID_COLLECTIONTYPE_MSG, VSDExceptions.DataSource.INVALID_COLLECTIONTYPE_CODE, true);
}
}
public INameService GetNameService() {
return NameService;
}
}
}
// 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
- CreatingCookieEventArgs.cs
- WithStatement.cs
- ObjectDisposedException.cs
- HtmlInputSubmit.cs
- MatrixAnimationUsingPath.cs
- FunctionParameter.cs
- Utils.cs
- StringDictionary.cs
- FontNamesConverter.cs
- RoleManagerEventArgs.cs
- DispatcherHookEventArgs.cs
- ErrorWrapper.cs
- CompiledELinqQueryState.cs
- TreeViewBindingsEditor.cs
- RegexFCD.cs
- PngBitmapEncoder.cs
- AllMembershipCondition.cs
- RedistVersionInfo.cs
- TimeSpanOrInfiniteValidator.cs
- DrawListViewSubItemEventArgs.cs
- PhysicalOps.cs
- WindowsTooltip.cs
- WebServiceParameterData.cs
- ConnectionStringSettings.cs
- BigIntegerStorage.cs
- TraceData.cs
- CodeExpressionStatement.cs
- CompilationLock.cs
- ProgressBarRenderer.cs
- BinaryMethodMessage.cs
- SimpleBitVector32.cs
- TypeForwardedToAttribute.cs
- InkSerializer.cs
- relpropertyhelper.cs
- AmbientLight.cs
- DataListItem.cs
- DBSqlParser.cs
- DesignerActionPropertyItem.cs
- BeginStoryboard.cs
- controlskin.cs
- ListViewInsertedEventArgs.cs
- BasicExpressionVisitor.cs
- CommandDesigner.cs
- LostFocusEventManager.cs
- StreamUpdate.cs
- SqlCacheDependencySection.cs
- ObjectContext.cs
- SqlTypeConverter.cs
- DataGridViewTextBoxEditingControl.cs
- Rule.cs
- CodeTypeParameterCollection.cs
- DataServiceHost.cs
- IssuedTokenClientBehaviorsElementCollection.cs
- ContentType.cs
- TransformerConfigurationWizardBase.cs
- CriticalHandle.cs
- NameValueCollection.cs
- DataTableCollection.cs
- TrustManager.cs
- SingleAnimation.cs
- Size3DConverter.cs
- List.cs
- Section.cs
- StringCollection.cs
- DragCompletedEventArgs.cs
- bidPrivateBase.cs
- SQlBooleanStorage.cs
- UIPermission.cs
- Lazy.cs
- FormClosingEvent.cs
- Component.cs
- TreeNodeEventArgs.cs
- ReceiveContext.cs
- SqlDeflator.cs
- DynamicMetaObject.cs
- SpanIndex.cs
- BamlStream.cs
- AlphabeticalEnumConverter.cs
- WebPartTransformer.cs
- ServiceDescription.cs
- FormatException.cs
- MethodBuilder.cs
- DrawingBrush.cs
- CaseExpr.cs
- RootBuilder.cs
- UpDownEvent.cs
- X509WindowsSecurityToken.cs
- XmlDataProvider.cs
- MemberInfoSerializationHolder.cs
- WebRequestModuleElementCollection.cs
- CollectionEditVerbManager.cs
- SafeCryptoHandles.cs
- IteratorFilter.cs
- ThreadBehavior.cs
- ThreadStaticAttribute.cs
- DataGridViewSelectedRowCollection.cs
- ConfigurationValues.cs
- TargetControlTypeCache.cs
- TextSelectionProcessor.cs
- DrawingBrush.cs