Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / MIT / System / Web / UI / MobileControls / Design / Converters / ValidatedMobileControlConverter.cs / 1305376 / ValidatedMobileControlConverter.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Web.UI.Design.MobileControls.Converters
{
using System.Diagnostics;
using System.Collections;
using System.ComponentModel;
using System.Web.UI;
using System.Web.UI.Design.MobileControls.Adapters;
using System.Web.UI.MobileControls;
[
System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand,
Flags=System.Security.Permissions.SecurityPermissionFlag.UnmanagedCode)
]
[Obsolete("The System.Web.Mobile.dll assembly has been deprecated and should no longer be used. For information about how to develop ASP.NET mobile applications, see http://go.microsoft.com/fwlink/?LinkId=157231.")]
internal class ValidatedMobileControlConverter: StringConverter
{
private Form GetContainingForm(MobileControl mc)
{
return FindContainer(mc, typeof(Form)) as Form;
}
private StyleSheet GetContainingStyleSheet(MobileControl mc)
{
return FindContainer(mc, typeof(StyleSheet)) as StyleSheet;
}
private Control FindContainer(MobileControl mc, Type containerType)
{
for (Control control = mc; control != null; control = control.Parent)
{
if (containerType.IsAssignableFrom(control.GetType()))
{
return control;
}
}
return null;
}
protected virtual Object [] GetValidatableControls(Object instance)
{
System.Web.UI.MobileControls.BaseValidator thisValidator = null;
if (instance is Array)
{
Array controlList = (Array)instance;
Debug.Assert(controlList.Length > 0);
thisValidator = (BaseValidator) controlList.GetValue(0);
Form firstForm = GetContainingForm(thisValidator);
for (int i = 1; i < controlList.Length; i++)
{
BaseValidator validator = (BaseValidator)controlList.GetValue(i);
if (GetContainingForm(validator) != firstForm)
{
return null;
}
}
}
if (instance is System.Web.UI.MobileControls.BaseValidator)
{
thisValidator = (System.Web.UI.MobileControls.BaseValidator) instance;
}
else if (instance is ChoicePropertyFilter)
{
IDeviceSpecificDesigner designer =
((ChoicePropertyFilter)instance).Designer;
thisValidator = designer.UnderlyingObject
as System.Web.UI.MobileControls.BaseValidator;
}
if (thisValidator == null)
{
Debug.Fail("Unsupported object passed in");
return null;
}
ArrayList controlArray = new ArrayList();
if (GetContainingStyleSheet(thisValidator) != null)
{
ISite site = thisValidator.Site;
IContainer container = null;
if (site != null)
{
container = site.Container;
Debug.Assert(container != null);
foreach(IComponent component in container.Components)
{
Control control = component as Control;
if (control != null && CanBeValidated(control))
{
controlArray.Add(control.ID);
}
}
}
}
else
{
Form parentForm = GetContainingForm(thisValidator);
if (parentForm != null)
{
ExtractValidatableControls(parentForm, controlArray);
}
else
{
return null;
}
}
controlArray.Sort();
return controlArray.ToArray();
}
private void ExtractValidatableControls(Control parent, ArrayList controlArray)
{
foreach (Control control in parent.Controls)
{
if (CanBeValidated(control))
{
controlArray.Add(control.ID);
}
if (!(control is Form))
{
ExtractValidatableControls(control, controlArray);
}
}
}
private bool CanBeValidated(Control control)
{
// Control must have an ID
if (control.ID == null || control.ID.Length == 0)
{
return false;
}
// Control must have a ValidationProperty attribute
ValidationPropertyAttribute valProp =
(ValidationPropertyAttribute)
TypeDescriptor.GetAttributes(control)[typeof(ValidationPropertyAttribute)];
if (null != valProp && null != valProp.Name)
{
return true;
}
return false;
}
///
///
/// Returns a collection of standard values retrieved from the context specified
/// by the specified type descriptor.
///
///
///
/// A type descriptor that specifies the location of the context to convert from.
///
///
///
/// A StandardValuesCollection that represents the standard values collected from
/// the specified context.
///
///
public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context)
{
if (context == null || context.Instance == null)
{
return null;
}
Object [] objValues = GetValidatableControls(context.Instance);
if (objValues != null)
{
return new StandardValuesCollection(objValues);
}
else
{
return null;
}
}
///
///
/// Gets whether
/// or not the context specified contains exclusive standard values.
///
///
///
/// A type descriptor that indicates the context to convert from.
///
///
///
/// if the specified context contains exclusive standard
/// values, otherwise .
///
///
public override bool GetStandardValuesExclusive(ITypeDescriptorContext context)
{
return false;
}
///
///
/// Gets whether or not the specified context contains supported standard
/// values.
///
///
///
/// A type descriptor that indicates the context to convert from.
///
///
///
/// if the specified context conatins supported standard
/// values, otherwise .
///
///
public override bool GetStandardValuesSupported(ITypeDescriptorContext context)
{
return true;
}
}
}
// 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
- Helpers.cs
- CommandConverter.cs
- ScriptingRoleServiceSection.cs
- WSHttpBindingBase.cs
- SpeechSynthesizer.cs
- XamlFigureLengthSerializer.cs
- UserControlFileEditor.cs
- DocumentSchemaValidator.cs
- MulticastDelegate.cs
- SimpleHandlerFactory.cs
- SqlConnectionStringBuilder.cs
- SizeAnimationUsingKeyFrames.cs
- ProfileService.cs
- DataList.cs
- MarginCollapsingState.cs
- _ChunkParse.cs
- ColumnCollection.cs
- AnnouncementEventArgs.cs
- LinearKeyFrames.cs
- DragStartedEventArgs.cs
- PtsContext.cs
- PropertyDescriptorGridEntry.cs
- RoutedEvent.cs
- SessionSwitchEventArgs.cs
- FeatureSupport.cs
- ColumnHeaderConverter.cs
- InternalRelationshipCollection.cs
- DbExpressionBuilder.cs
- DataGridViewSortCompareEventArgs.cs
- OverlappedAsyncResult.cs
- ComponentChangingEvent.cs
- SystemSounds.cs
- WebInvokeAttribute.cs
- RepeatBehaviorConverter.cs
- SafeProcessHandle.cs
- XmlStringTable.cs
- TextCompositionManager.cs
- Trigger.cs
- BitmapCodecInfoInternal.cs
- NoPersistHandle.cs
- ExecutionEngineException.cs
- LoaderAllocator.cs
- EntityDataSourceChangingEventArgs.cs
- XmlSchemaFacet.cs
- KeyGestureConverter.cs
- CounterSetInstance.cs
- RelationalExpressions.cs
- FixedSOMSemanticBox.cs
- DataBoundControl.cs
- ShadowGlyph.cs
- SchemaConstraints.cs
- PKCS1MaskGenerationMethod.cs
- CheckBoxList.cs
- Script.cs
- IOException.cs
- SoapProtocolReflector.cs
- XmlAutoDetectWriter.cs
- DataRelationPropertyDescriptor.cs
- LayoutEngine.cs
- BaseContextMenu.cs
- BookmarkNameHelper.cs
- FolderLevelBuildProviderAppliesToAttribute.cs
- XmlSchemaAttributeGroup.cs
- SystemIPGlobalProperties.cs
- StreamWriter.cs
- XPathSelfQuery.cs
- ProfilePropertySettingsCollection.cs
- QilValidationVisitor.cs
- MD5HashHelper.cs
- ExceptionHandler.cs
- TextBlockAutomationPeer.cs
- MetadataItemEmitter.cs
- TreeViewTemplateSelector.cs
- AutomationPropertyInfo.cs
- XsltFunctions.cs
- DataGridViewAutoSizeColumnsModeEventArgs.cs
- SqlDataSourceEnumerator.cs
- StateMachineAction.cs
- PenContexts.cs
- ServicesUtilities.cs
- EventMap.cs
- ListViewGroupCollectionEditor.cs
- ZipIOExtraFieldZip64Element.cs
- ItemContainerGenerator.cs
- Image.cs
- StringSource.cs
- SharedPerformanceCounter.cs
- TextTreeFixupNode.cs
- RangeExpression.cs
- InputLanguageProfileNotifySink.cs
- Flowchart.cs
- ECDiffieHellmanCng.cs
- ScriptReference.cs
- OperatingSystem.cs
- TreeNodeEventArgs.cs
- PermissionListSet.cs
- XhtmlBasicObjectListAdapter.cs
- TabletCollection.cs
- TextEditorTyping.cs
- ComponentResourceKey.cs