e79aa3c0ed
Former-commit-id: a2155e9bd80020e49e72e86c44da02a8ac0e57a4
310 lines
10 KiB
C#
310 lines
10 KiB
C#
//------------------------------------------------------------------------------
|
|
// <copyright file="Command.cs" company="Microsoft">
|
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
// </copyright>
|
|
//------------------------------------------------------------------------------
|
|
|
|
using System;
|
|
using System.Collections;
|
|
using System.Collections.Specialized;
|
|
using System.ComponentModel;
|
|
using System.ComponentModel.Design;
|
|
using System.Diagnostics;
|
|
using System.Drawing.Design;
|
|
using System.Web;
|
|
using System.Web.UI;
|
|
using System.Web.UI.WebControls;
|
|
using System.Security.Permissions;
|
|
|
|
namespace System.Web.UI.MobileControls
|
|
{
|
|
|
|
/*
|
|
* Mobile Command class.
|
|
*
|
|
* Copyright (c) 2000 Microsoft Corporation
|
|
*/
|
|
/// <include file='doc\Command.uex' path='docs/doc[@for="Command"]/*' />
|
|
[
|
|
DataBindingHandler("System.Web.UI.Design.TextDataBindingHandler, " + AssemblyRef.SystemDesign),
|
|
DefaultEvent("Click"),
|
|
DefaultProperty("Text"),
|
|
Designer(typeof(System.Web.UI.Design.MobileControls.CommandDesigner)),
|
|
DesignerAdapter(typeof(System.Web.UI.Design.MobileControls.Adapters.DesignerCommandAdapter)),
|
|
ToolboxData("<{0}:Command runat=\"server\">Command</{0}:Command>"),
|
|
ToolboxItem("System.Web.UI.Design.WebControlToolboxItem, " + AssemblyRef.SystemDesign)
|
|
]
|
|
[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 class Command : TextControl, IPostBackEventHandler, IPostBackDataHandler
|
|
{
|
|
private static readonly Object EventClick = new Object ();
|
|
private static readonly Object EventItemCommand = new Object ();
|
|
|
|
/// <include file='doc\Command.uex' path='docs/doc[@for="Command.OnPreRender"]/*' />
|
|
protected override void OnPreRender(EventArgs e)
|
|
{
|
|
base.OnPreRender(e);
|
|
// If this control will be rendered as an image
|
|
|
|
Debug.Assert(ImageUrl != null);
|
|
if (MobilePage != null
|
|
&& ImageUrl.Length != 0
|
|
&& MobilePage.Device.SupportsImageSubmit)
|
|
{
|
|
// HTML input controls of type image postback as name.x and
|
|
// name.y which is not associated with this control by default
|
|
// in Page.ProcessPostData().
|
|
MobilePage.RegisterRequiresPostBack(this);
|
|
}
|
|
}
|
|
|
|
/// <internalonly/>
|
|
protected bool LoadPostData(String key, NameValueCollection data)
|
|
{
|
|
bool dataChanged;
|
|
bool handledByAdapter =
|
|
Adapter.LoadPostData(key, data, null, out dataChanged);
|
|
|
|
// If the adapter handled the post back and set dataChanged this
|
|
// was an image button (responds with ID.x and ID.y).
|
|
if (handledByAdapter)
|
|
{
|
|
if(dataChanged)
|
|
{
|
|
Page.RegisterRequiresRaiseEvent(this);
|
|
}
|
|
}
|
|
// Otherwise if the adapter did not handle the past back, use
|
|
// the same method as Page.ProcessPostData().
|
|
else if(data[key] != null)
|
|
{
|
|
Page.RegisterRequiresRaiseEvent(this);
|
|
}
|
|
return false; // no need to raise PostDataChangedEvent.
|
|
}
|
|
|
|
/// <internalonly/>
|
|
protected void RaisePostDataChangedEvent() {
|
|
}
|
|
|
|
/// <include file='doc\Command.uex' path='docs/doc[@for="Command.SoftkeyLabel"]/*' />
|
|
[
|
|
Bindable(true),
|
|
DefaultValue(""),
|
|
MobileCategory(SR.Category_Behavior),
|
|
MobileSysDescription(SR.Command_SoftkeyLabel)
|
|
]
|
|
public String SoftkeyLabel
|
|
{
|
|
get
|
|
{
|
|
String s = (String) ViewState["Softkeylabel"];
|
|
return((s != null) ? s : String.Empty);
|
|
}
|
|
set
|
|
{
|
|
ViewState["Softkeylabel"] = value;
|
|
}
|
|
}
|
|
|
|
/// <include file='doc\Command.uex' path='docs/doc[@for="Command.CommandName"]/*' />
|
|
[
|
|
Bindable(true),
|
|
DefaultValue(""),
|
|
MobileCategory(SR.Category_Behavior),
|
|
MobileSysDescription(SR.Command_CommandName)
|
|
]
|
|
public String CommandName
|
|
{
|
|
get
|
|
{
|
|
String s = (String) ViewState["CommandName"];
|
|
return((s != null) ? s : String.Empty);
|
|
}
|
|
set
|
|
{
|
|
ViewState["CommandName"] = value;
|
|
}
|
|
}
|
|
|
|
/// <include file='doc\Command.uex' path='docs/doc[@for="Command.CommandArgument"]/*' />
|
|
[
|
|
Bindable(true),
|
|
DefaultValue(""),
|
|
MobileCategory(SR.Category_Behavior),
|
|
MobileSysDescription(SR.Command_CommandArgument)
|
|
]
|
|
public String CommandArgument
|
|
{
|
|
get
|
|
{
|
|
String s = (String) ViewState["CommandArgument"];
|
|
return((s != null) ? s : String.Empty);
|
|
}
|
|
set
|
|
{
|
|
ViewState["CommandArgument"] = value;
|
|
}
|
|
}
|
|
|
|
/// <include file='doc\Command.uex' path='docs/doc[@for="Command.ImageUrl"]/*' />
|
|
[
|
|
Bindable(true),
|
|
DefaultValue(""),
|
|
Editor(typeof(System.Web.UI.Design.MobileControls.ImageUrlEditor),
|
|
typeof(UITypeEditor)),
|
|
MobileCategory(SR.Category_Appearance),
|
|
MobileSysDescription(SR.Image_ImageUrl)
|
|
]
|
|
public String ImageUrl
|
|
{
|
|
get
|
|
{
|
|
String s = (String) ViewState["ImageUrl"];
|
|
return((s != null) ? s : String.Empty);
|
|
}
|
|
set
|
|
{
|
|
ViewState["ImageUrl"] = value;
|
|
}
|
|
}
|
|
|
|
/// <include file='doc\Command.uex' path='docs/doc[@for="Command.CausesValidation"]/*' />
|
|
[
|
|
Bindable(false),
|
|
DefaultValue(true),
|
|
MobileCategory(SR.Category_Behavior),
|
|
MobileSysDescription(SR.Command_CausesValidation)
|
|
]
|
|
public bool CausesValidation
|
|
{
|
|
get
|
|
{
|
|
object b = ViewState["CausesValidation"];
|
|
return((b == null) ? true : (bool)b);
|
|
}
|
|
set
|
|
{
|
|
ViewState["CausesValidation"] = value;
|
|
}
|
|
}
|
|
|
|
/// <include file='doc\Command.uex' path='docs/doc[@for="Command.Format"]/*' />
|
|
[
|
|
Bindable(true),
|
|
DefaultValue(CommandFormat.Button),
|
|
MobileCategory(SR.Category_Appearance),
|
|
MobileSysDescription(SR.Command_Format)
|
|
]
|
|
public CommandFormat Format
|
|
{
|
|
get
|
|
{
|
|
Object o = ViewState["Format"];
|
|
return((o == null) ? CommandFormat.Button : (CommandFormat)o);
|
|
}
|
|
set
|
|
{
|
|
ViewState["Format"] = value;
|
|
}
|
|
}
|
|
|
|
/// <include file='doc\Command.uex' path='docs/doc[@for="Command.OnClick"]/*' />
|
|
protected virtual void OnClick(EventArgs e)
|
|
{
|
|
EventHandler onClickHandler = (EventHandler)Events[EventClick];
|
|
if (onClickHandler != null)
|
|
{
|
|
onClickHandler(this,e);
|
|
}
|
|
}
|
|
|
|
/// <include file='doc\Command.uex' path='docs/doc[@for="Command.OnItemCommand"]/*' />
|
|
protected virtual void OnItemCommand(CommandEventArgs e)
|
|
{
|
|
CommandEventHandler onItemCommandHandler = (CommandEventHandler)Events[EventItemCommand];
|
|
if (onItemCommandHandler != null)
|
|
{
|
|
onItemCommandHandler(this,e);
|
|
}
|
|
|
|
RaiseBubbleEvent (this, e);
|
|
}
|
|
|
|
/// <include file='doc\Command.uex' path='docs/doc[@for="Command.Click"]/*' />
|
|
[
|
|
MobileCategory(SR.Category_Action),
|
|
MobileSysDescription(SR.Command_OnClick)
|
|
]
|
|
public event EventHandler Click
|
|
{
|
|
add
|
|
{
|
|
Events.AddHandler(EventClick, value);
|
|
}
|
|
remove
|
|
{
|
|
Events.RemoveHandler(EventClick, value);
|
|
}
|
|
}
|
|
|
|
/// <include file='doc\Command.uex' path='docs/doc[@for="Command.ItemCommand"]/*' />
|
|
[
|
|
MobileCategory(SR.Category_Action),
|
|
MobileSysDescription(SR.Command_OnItemCommand)
|
|
]
|
|
public event CommandEventHandler ItemCommand
|
|
{
|
|
add
|
|
{
|
|
Events.AddHandler(EventItemCommand, value);
|
|
}
|
|
remove
|
|
{
|
|
Events.RemoveHandler(EventItemCommand, value);
|
|
}
|
|
}
|
|
|
|
/// <include file='doc\Command.uex' path='docs/doc[@for="Command.IPostBackEventHandler.RaisePostBackEvent"]/*' />
|
|
/// <internalonly/>
|
|
protected void RaisePostBackEvent(String argument)
|
|
{
|
|
if (CausesValidation)
|
|
{
|
|
MobilePage.Validate();
|
|
}
|
|
|
|
// It is legitimate to reset the form back to the first page
|
|
// after a form submit.
|
|
Form.CurrentPage = 1;
|
|
|
|
OnClick (EventArgs.Empty);
|
|
OnItemCommand (new CommandEventArgs(CommandName, CommandArgument));
|
|
}
|
|
|
|
/// <include file='doc\Command.uex' path='docs/doc[@for="Command.IsFormSubmitControl"]/*' />
|
|
protected override bool IsFormSubmitControl()
|
|
{
|
|
return true;
|
|
}
|
|
|
|
#region IPostBackEventHandler implementation
|
|
void IPostBackEventHandler.RaisePostBackEvent(String eventArgument) {
|
|
RaisePostBackEvent(eventArgument);
|
|
}
|
|
#endregion
|
|
|
|
#region IPostBackDataHandler implementation
|
|
bool IPostBackDataHandler.LoadPostData(String key, NameValueCollection data) {
|
|
return LoadPostData(key, data);
|
|
}
|
|
|
|
void IPostBackDataHandler.RaisePostDataChangedEvent() {
|
|
RaisePostDataChangedEvent();
|
|
}
|
|
#endregion
|
|
}
|
|
}
|