Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / MIT / System / Web / UI / MobileControls / Design / Converters / FormConverter.cs / 1305376 / FormConverter.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.ComponentModel.Design;
using System.Web.UI;
using System.Web.UI.MobileControls;
using System.Web.UI.Design.MobileControls.Adapters;
///
///
/// Can filter and retrieve several types of values from Style controls.
///
///
[
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 FormConverter : 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 ArrayList GetControls(ITypeDescriptorContext context)
{
ArrayList controlList = new ArrayList();
MobileControl control = null;
IContainer container = context.Container;
if (context.Instance is Array)
{
Array list = (Array)context.Instance;
Debug.Assert(list.Length > 0);
foreach(Object obj in list)
{
Debug.Assert(obj is MobileControl);
Form form = GetContainingForm((MobileControl)obj);
// If the control is not within a Form control or a StyleSheet control,
// simply return the empty combobox.
// If the control is placed at UserControl top level, the ID of the
// containing Form is null.
if ((form == null || form.ID == null) &&
GetContainingStyleSheet((MobileControl)obj) == null)
{
return null;
}
}
control = list.GetValue(0) as MobileControl;
}
else
{
if (context.Instance is MobileControl)
{
control = (MobileControl) context.Instance;
}
else if (context.Instance is ChoicePropertyFilter)
{
ChoicePropertyFilter filter = (ChoicePropertyFilter)context.Instance;
IDeviceSpecificDesigner designer = filter.Designer;
control = designer.UnderlyingObject as MobileControl;
Debug.Assert(control != null, "Not a control");
}
else
{
Debug.Fail("Unrecognized object passed in");
return null;
}
Form form = GetContainingForm(control);
// All controls must be contained within Forms or StyleSheets
// Show empty combobox for the invalid control.
if (form == null)
{
if (GetContainingStyleSheet(control) == null)
{
return null;
}
}
// MobileUserControl has a default Form with null ID
else if (form.ID == null && (GetContainingStyleSheet(control) == null))
{
Debug.Assert(container is IDesignerHost &&
((IDesignerHost)container).RootComponent is MobileUserControl);
// Just return an empty array list, so that url picker still works.
return controlList;
}
}
// If container is null, try to get one from control's IContainer
if (container == null)
{
ISite site = control.Site;
Debug.Assert(site != null);
container = site.Container;
}
// Is this possible?
if (container == null)
{
Debug.Fail("container is null");
return null;
}
foreach(IComponent component in container.Components)
{
Form candidate = component as Form;
if (candidate != null &&
candidate.ID != null &&
candidate.ID.Length != 0)
{
controlList.Add(ProcessControlId(candidate.ID));
}
}
controlList.Sort();
return controlList;
}
public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context)
{
if (context == null)
{
return null;
}
ArrayList objValues = GetControls(context);
return (objValues != null? new StandardValuesCollection(objValues) : 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;
}
///
/// Override to manipulate the control id as it is added to the list.
/// Do not return the original string, make sure a copy is made.
/// See NavigateUrlConverter.cs for an example.
///
protected virtual String ProcessControlId(String id)
{
return id;
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//------------------------------------------------------------------------------
//
// 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.ComponentModel.Design;
using System.Web.UI;
using System.Web.UI.MobileControls;
using System.Web.UI.Design.MobileControls.Adapters;
///
///
/// Can filter and retrieve several types of values from Style controls.
///
///
[
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 FormConverter : 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 ArrayList GetControls(ITypeDescriptorContext context)
{
ArrayList controlList = new ArrayList();
MobileControl control = null;
IContainer container = context.Container;
if (context.Instance is Array)
{
Array list = (Array)context.Instance;
Debug.Assert(list.Length > 0);
foreach(Object obj in list)
{
Debug.Assert(obj is MobileControl);
Form form = GetContainingForm((MobileControl)obj);
// If the control is not within a Form control or a StyleSheet control,
// simply return the empty combobox.
// If the control is placed at UserControl top level, the ID of the
// containing Form is null.
if ((form == null || form.ID == null) &&
GetContainingStyleSheet((MobileControl)obj) == null)
{
return null;
}
}
control = list.GetValue(0) as MobileControl;
}
else
{
if (context.Instance is MobileControl)
{
control = (MobileControl) context.Instance;
}
else if (context.Instance is ChoicePropertyFilter)
{
ChoicePropertyFilter filter = (ChoicePropertyFilter)context.Instance;
IDeviceSpecificDesigner designer = filter.Designer;
control = designer.UnderlyingObject as MobileControl;
Debug.Assert(control != null, "Not a control");
}
else
{
Debug.Fail("Unrecognized object passed in");
return null;
}
Form form = GetContainingForm(control);
// All controls must be contained within Forms or StyleSheets
// Show empty combobox for the invalid control.
if (form == null)
{
if (GetContainingStyleSheet(control) == null)
{
return null;
}
}
// MobileUserControl has a default Form with null ID
else if (form.ID == null && (GetContainingStyleSheet(control) == null))
{
Debug.Assert(container is IDesignerHost &&
((IDesignerHost)container).RootComponent is MobileUserControl);
// Just return an empty array list, so that url picker still works.
return controlList;
}
}
// If container is null, try to get one from control's IContainer
if (container == null)
{
ISite site = control.Site;
Debug.Assert(site != null);
container = site.Container;
}
// Is this possible?
if (container == null)
{
Debug.Fail("container is null");
return null;
}
foreach(IComponent component in container.Components)
{
Form candidate = component as Form;
if (candidate != null &&
candidate.ID != null &&
candidate.ID.Length != 0)
{
controlList.Add(ProcessControlId(candidate.ID));
}
}
controlList.Sort();
return controlList;
}
public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context)
{
if (context == null)
{
return null;
}
ArrayList objValues = GetControls(context);
return (objValues != null? new StandardValuesCollection(objValues) : 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;
}
///
/// Override to manipulate the control id as it is added to the list.
/// Do not return the original string, make sure a copy is made.
/// See NavigateUrlConverter.cs for an example.
///
protected virtual String ProcessControlId(String id)
{
return id;
}
}
}
// 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
- RequestQueryProcessor.cs
- InvalidComObjectException.cs
- ViewCellSlot.cs
- DataExpression.cs
- TreeIterator.cs
- SHA256Managed.cs
- DbProviderFactoriesConfigurationHandler.cs
- PropertiesTab.cs
- GeneratedCodeAttribute.cs
- BamlStream.cs
- IriParsingElement.cs
- CustomTrackingQuery.cs
- Filter.cs
- TextCompositionManager.cs
- ContentElement.cs
- TimeoutException.cs
- WebPartEditorOkVerb.cs
- Listbox.cs
- ProcessHostMapPath.cs
- PrintingPermission.cs
- TemplateBindingExpressionConverter.cs
- GACIdentityPermission.cs
- RemotingConfigParser.cs
- ResolvedKeyFrameEntry.cs
- SchemaTypeEmitter.cs
- GiveFeedbackEventArgs.cs
- QuaternionConverter.cs
- DuplicateWaitObjectException.cs
- WebCategoryAttribute.cs
- ObfuscationAttribute.cs
- CommandLibraryHelper.cs
- DateTimeConstantAttribute.cs
- CellQuery.cs
- ExtendedPropertyCollection.cs
- ImageListStreamer.cs
- TextRunCache.cs
- PopupControlService.cs
- TrustManagerPromptUI.cs
- TracingConnectionListener.cs
- BindingList.cs
- EventPrivateKey.cs
- ExpressionBindingCollection.cs
- ViewDesigner.cs
- HtmlPanelAdapter.cs
- AsyncDataRequest.cs
- ListViewInsertionMark.cs
- KeyGestureConverter.cs
- GenericAuthenticationEventArgs.cs
- SystemUnicastIPAddressInformation.cs
- dsa.cs
- StreamInfo.cs
- MexTcpBindingCollectionElement.cs
- WebPartMovingEventArgs.cs
- SessionStateUtil.cs
- OdbcReferenceCollection.cs
- PingReply.cs
- MarkupExtensionParser.cs
- ToolStripSeparator.cs
- unsafeIndexingFilterStream.cs
- DatePickerDateValidationErrorEventArgs.cs
- RemotingAttributes.cs
- GlobalizationSection.cs
- DecimalFormatter.cs
- UiaCoreApi.cs
- XamlVector3DCollectionSerializer.cs
- ToolStripDropDownItem.cs
- LicenseProviderAttribute.cs
- dsa.cs
- DataListCommandEventArgs.cs
- CustomActivityDesigner.cs
- DefaultMemberAttribute.cs
- DBCSCodePageEncoding.cs
- LabelLiteral.cs
- OleCmdHelper.cs
- DataContract.cs
- InternalCache.cs
- ColorConvertedBitmap.cs
- ObjectStateEntryOriginalDbUpdatableDataRecord.cs
- ControlAdapter.cs
- ProgressBar.cs
- ResourcePool.cs
- PropertyGroupDescription.cs
- _DisconnectOverlappedAsyncResult.cs
- SecurityDocument.cs
- DeclaredTypeElement.cs
- PolyBezierSegment.cs
- DataContractSet.cs
- OleCmdHelper.cs
- OpenTypeLayoutCache.cs
- XmlRootAttribute.cs
- BuildResult.cs
- AudioFormatConverter.cs
- DependencyObjectPropertyDescriptor.cs
- RightsManagementEncryptionTransform.cs
- SchemaImporterExtensionsSection.cs
- SoapHelper.cs
- FileUtil.cs
- RunWorkerCompletedEventArgs.cs
- Size3DConverter.cs
- cryptoapiTransform.cs