You've already forked linux-packaging-mono
Imported Upstream version 4.6.0.125
Former-commit-id: a2155e9bd80020e49e72e86c44da02a8ac0e57a4
This commit is contained in:
parent
a569aebcfd
commit
e79aa3c0ed
@@ -0,0 +1,307 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <copyright file="ControlAdapter.cs" company="Microsoft">
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// </copyright>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
using System;
|
||||
using System.Globalization;
|
||||
using System.IO;
|
||||
using System.Web;
|
||||
using System.Web.UI;
|
||||
using System.Web.UI.HtmlControls;
|
||||
using System.Web.Mobile;
|
||||
using RootMobile = System.Web.Mobile;
|
||||
using System.Web.UI.MobileControls;
|
||||
using System.Collections;
|
||||
using System.Collections.Specialized;
|
||||
using System.Text;
|
||||
using System.Security.Permissions;
|
||||
|
||||
// We don't recompile this base class in the shipped source samples, as it
|
||||
// accesses some internal functionality and is a core utility (rather than an
|
||||
// extension itself).
|
||||
#if !COMPILING_FOR_SHIPPED_SOURCE
|
||||
|
||||
namespace System.Web.UI.MobileControls.Adapters
|
||||
{
|
||||
|
||||
/*
|
||||
* ControlAdapter base class.
|
||||
*
|
||||
* Copyright (c) 2000 Microsoft Corporation
|
||||
*/
|
||||
/// <include file='doc\ControlAdapter.uex' path='docs/doc[@for="ControlAdapter"]/*' />
|
||||
[AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)]
|
||||
[AspNetHostingPermission(SecurityAction.InheritanceDemand, Level=AspNetHostingPermissionLevel.Minimal)]
|
||||
[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.")]
|
||||
public abstract class ControlAdapter : IControlAdapter
|
||||
{
|
||||
private static readonly String[] LabelIDs = new String[] {
|
||||
RootMobile.SR.ControlAdapter_BackLabel,
|
||||
RootMobile.SR.ControlAdapter_GoLabel,
|
||||
RootMobile.SR.ControlAdapter_OKLabel,
|
||||
RootMobile.SR.ControlAdapter_MoreLabel,
|
||||
RootMobile.SR.ControlAdapter_OptionsLabel,
|
||||
RootMobile.SR.ControlAdapter_NextLabel,
|
||||
RootMobile.SR.ControlAdapter_PreviousLabel,
|
||||
RootMobile.SR.ControlAdapter_LinkLabel,
|
||||
RootMobile.SR.ControlAdapter_PhoneCallLabel
|
||||
};
|
||||
|
||||
/// <include file='doc\ControlAdapter.uex' path='docs/doc[@for="ControlAdapter.BackLabel"]/*' />
|
||||
protected static readonly int BackLabel = 0;
|
||||
/// <include file='doc\ControlAdapter.uex' path='docs/doc[@for="ControlAdapter.GoLabel"]/*' />
|
||||
protected static readonly int GoLabel = 1;
|
||||
/// <include file='doc\ControlAdapter.uex' path='docs/doc[@for="ControlAdapter.OKLabel"]/*' />
|
||||
protected static readonly int OKLabel = 2;
|
||||
/// <include file='doc\ControlAdapter.uex' path='docs/doc[@for="ControlAdapter.MoreLabel"]/*' />
|
||||
protected static readonly int MoreLabel = 3;
|
||||
/// <include file='doc\ControlAdapter.uex' path='docs/doc[@for="ControlAdapter.OptionsLabel"]/*' />
|
||||
protected static readonly int OptionsLabel = 4;
|
||||
/// <include file='doc\ControlAdapter.uex' path='docs/doc[@for="ControlAdapter.NextLabel"]/*' />
|
||||
protected static readonly int NextLabel = 5;
|
||||
/// <include file='doc\ControlAdapter.uex' path='docs/doc[@for="ControlAdapter.PreviousLabel"]/*' />
|
||||
protected static readonly int PreviousLabel = 6;
|
||||
/// <include file='doc\ControlAdapter.uex' path='docs/doc[@for="ControlAdapter.LinkLabel"]/*' />
|
||||
protected static readonly int LinkLabel = 7;
|
||||
/// <include file='doc\ControlAdapter.uex' path='docs/doc[@for="ControlAdapter.CallLabel"]/*' />
|
||||
protected static readonly int CallLabel = 8;
|
||||
|
||||
private MobileControl _control;
|
||||
|
||||
/// <include file='doc\ControlAdapter.uex' path='docs/doc[@for="ControlAdapter.Control"]/*' />
|
||||
public MobileControl Control
|
||||
{
|
||||
get
|
||||
{
|
||||
return _control;
|
||||
}
|
||||
set
|
||||
{
|
||||
_control = value;
|
||||
}
|
||||
}
|
||||
|
||||
/// <include file='doc\ControlAdapter.uex' path='docs/doc[@for="ControlAdapter.Page"]/*' />
|
||||
public virtual MobilePage Page
|
||||
{
|
||||
get
|
||||
{
|
||||
return Control.MobilePage;
|
||||
}
|
||||
set
|
||||
{
|
||||
// Do not expect to be called directly. Subclasses should
|
||||
// override this when needed.
|
||||
throw new Exception(
|
||||
SR.GetString(
|
||||
SR.ControlAdapterBasePagePropertyShouldNotBeSet));
|
||||
}
|
||||
}
|
||||
|
||||
/// <include file='doc\ControlAdapter.uex' path='docs/doc[@for="ControlAdapter.Device"]/*' />
|
||||
public virtual MobileCapabilities Device
|
||||
{
|
||||
get
|
||||
{
|
||||
return (MobileCapabilities)Page.Request.Browser;
|
||||
}
|
||||
}
|
||||
|
||||
/// <include file='doc\ControlAdapter.uex' path='docs/doc[@for="ControlAdapter.OnInit"]/*' />
|
||||
public virtual void OnInit(EventArgs e){}
|
||||
/// <include file='doc\ControlAdapter.uex' path='docs/doc[@for="ControlAdapter.OnLoad"]/*' />
|
||||
public virtual void OnLoad(EventArgs e){}
|
||||
/// <include file='doc\ControlAdapter.uex' path='docs/doc[@for="ControlAdapter.OnPreRender"]/*' />
|
||||
public virtual void OnPreRender(EventArgs e){}
|
||||
|
||||
/// <include file='doc\ControlAdapter.uex' path='docs/doc[@for="ControlAdapter.Render"]/*' />
|
||||
public virtual void Render(HtmlTextWriter writer)
|
||||
{
|
||||
RenderChildren(writer);
|
||||
}
|
||||
|
||||
/// <include file='doc\ControlAdapter.uex' path='docs/doc[@for="ControlAdapter.OnUnload"]/*' />
|
||||
public virtual void OnUnload(EventArgs e){}
|
||||
|
||||
/// <include file='doc\ControlAdapter.uex' path='docs/doc[@for="ControlAdapter.HandlePostBackEvent"]/*' />
|
||||
public virtual bool HandlePostBackEvent(String eventArgument)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
// By default, always return false, so the control itself will handle
|
||||
// it.
|
||||
/// <include file='doc\ControlAdapter.uex' path='docs/doc[@for="ControlAdapter.LoadPostData"]/*' />
|
||||
public virtual bool LoadPostData(String key,
|
||||
NameValueCollection data,
|
||||
Object controlPrivateData,
|
||||
out bool dataChanged)
|
||||
{
|
||||
dataChanged = false;
|
||||
return false;
|
||||
}
|
||||
|
||||
/// <include file='doc\ControlAdapter.uex' path='docs/doc[@for="ControlAdapter.LoadAdapterState"]/*' />
|
||||
public virtual void LoadAdapterState(Object state)
|
||||
{
|
||||
}
|
||||
|
||||
/// <include file='doc\ControlAdapter.uex' path='docs/doc[@for="ControlAdapter.SaveAdapterState"]/*' />
|
||||
public virtual Object SaveAdapterState()
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
/// <include file='doc\ControlAdapter.uex' path='docs/doc[@for="ControlAdapter.CreateTemplatedUI"]/*' />
|
||||
public virtual void CreateTemplatedUI(bool doDataBind)
|
||||
{
|
||||
// No device specific templated UI to create.
|
||||
|
||||
Control.CreateDefaultTemplatedUI(doDataBind);
|
||||
}
|
||||
|
||||
// convenience methods here
|
||||
/// <include file='doc\ControlAdapter.uex' path='docs/doc[@for="ControlAdapter.Style"]/*' />
|
||||
public Style Style
|
||||
{
|
||||
get
|
||||
{
|
||||
return Control.Style;
|
||||
}
|
||||
}
|
||||
|
||||
/// <include file='doc\ControlAdapter.uex' path='docs/doc[@for="ControlAdapter.RenderChildren"]/*' />
|
||||
protected void RenderChildren(HtmlTextWriter writer)
|
||||
{
|
||||
if (Control.HasControls())
|
||||
{
|
||||
foreach (Control child in Control.Controls)
|
||||
{
|
||||
child.RenderControl(writer);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <include file='doc\ControlAdapter.uex' path='docs/doc[@for="ControlAdapter.VisibleWeight"]/*' />
|
||||
public virtual int VisibleWeight
|
||||
{
|
||||
get
|
||||
{
|
||||
return ControlPager.UseDefaultWeight;
|
||||
}
|
||||
}
|
||||
|
||||
/// <include file='doc\ControlAdapter.uex' path='docs/doc[@for="ControlAdapter.ItemWeight"]/*' />
|
||||
public virtual int ItemWeight
|
||||
{
|
||||
get
|
||||
{
|
||||
return ControlPager.UseDefaultWeight;
|
||||
}
|
||||
}
|
||||
|
||||
// The following method is used by PageAdapter subclasses of
|
||||
// ControlAdapter for determining the optimum page weight for
|
||||
// a given device. Algorithm is as follows:
|
||||
// 1) First look for the "optimumPageWeight" parameter set
|
||||
// for the device. If it exists, and can be converted
|
||||
// to an integer, use it.
|
||||
// 2) Otherwise, look for the "screenCharactersHeight" parameter.
|
||||
// If it exists, and can be converted to an integer, multiply
|
||||
// it by 100 and use the result.
|
||||
// 3) As a last resort, use the default provided by the calling
|
||||
// PageAdapter.
|
||||
/// <include file='doc\ControlAdapter.uex' path='docs/doc[@for="ControlAdapter.CalculateOptimumPageWeight"]/*' />
|
||||
protected virtual int CalculateOptimumPageWeight(int defaultPageWeight)
|
||||
{
|
||||
int optimumPageWeight = 0;
|
||||
|
||||
// Pull OptimumPageWeight from the web.config parameter of the same
|
||||
// name, when present.
|
||||
String pageWeight = Device[Constants.OptimumPageWeightParameter];
|
||||
|
||||
if (pageWeight != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
optimumPageWeight = Convert.ToInt32(pageWeight, CultureInfo.InvariantCulture);
|
||||
}
|
||||
catch
|
||||
{
|
||||
optimumPageWeight = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (optimumPageWeight <= 0)
|
||||
{
|
||||
// If OptimumPageWeight isn't established explicitly, attempt to
|
||||
// construct it as 100 * number of lines of characters.
|
||||
String numLinesStr = Device[Constants.ScreenCharactersHeightParameter];
|
||||
if (numLinesStr != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
int numLines = Convert.ToInt32(numLinesStr, CultureInfo.InvariantCulture);
|
||||
optimumPageWeight = 100 * numLines;
|
||||
}
|
||||
catch
|
||||
{
|
||||
optimumPageWeight = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (optimumPageWeight <= 0)
|
||||
{
|
||||
optimumPageWeight = defaultPageWeight;
|
||||
}
|
||||
|
||||
return optimumPageWeight;
|
||||
}
|
||||
|
||||
private String[] _defaultLabels = null;
|
||||
|
||||
/// <include file='doc\ControlAdapter.uex' path='docs/doc[@for="ControlAdapter.GetDefaultLabel"]/*' />
|
||||
protected String GetDefaultLabel(int labelID)
|
||||
{
|
||||
if ((labelID < 0) || (labelID >= LabelIDs.Length))
|
||||
{
|
||||
throw new ArgumentException(System.Web.Mobile.SR.GetString(
|
||||
System.Web.Mobile.SR.ControlAdapter_InvalidDefaultLabel));
|
||||
}
|
||||
|
||||
MobilePage page = Page;
|
||||
if (page != null)
|
||||
{
|
||||
ControlAdapter pageAdapter = (ControlAdapter)page.Adapter;
|
||||
if (pageAdapter._defaultLabels == null)
|
||||
{
|
||||
pageAdapter._defaultLabels = new String[LabelIDs.Length];
|
||||
}
|
||||
|
||||
String labelValue = pageAdapter._defaultLabels[labelID];
|
||||
if (labelValue == null)
|
||||
{
|
||||
labelValue = System.Web.Mobile.SR.GetString(LabelIDs[labelID]);
|
||||
pageAdapter._defaultLabels[labelID] = labelValue;
|
||||
}
|
||||
|
||||
return labelValue;
|
||||
}
|
||||
else
|
||||
{
|
||||
return System.Web.Mobile.SR.GetString(LabelIDs[labelID]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[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 EmptyControlAdapter : ControlAdapter {
|
||||
internal EmptyControlAdapter() {}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#endif
|
Reference in New Issue
Block a user