File: XhtmlBasicCommandAdapter.cs

package info (click to toggle)
mono 6.14.1%2Bds2-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,282,732 kB
  • sloc: cs: 11,182,461; xml: 2,850,281; ansic: 699,123; cpp: 122,919; perl: 58,604; javascript: 30,841; asm: 21,845; makefile: 19,602; sh: 10,973; python: 4,772; pascal: 925; sql: 859; sed: 16; php: 1
file content (104 lines) | stat: -rw-r--r-- 4,982 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
//------------------------------------------------------------------------------
// <copyright file="XhtmlBasicCommandAdapter.cs" company="Microsoft">
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// </copyright>                                                                
//------------------------------------------------------------------------------

using System;
using System.Collections.Specialized;
using System.Security.Permissions;
using System.Web;
using System.Web.Mobile;
using System.Web.UI.MobileControls;

#if COMPILING_FOR_SHIPPED_SOURCE
namespace System.Web.UI.MobileControls.ShippedAdapterSource.XhtmlAdapters
#else
namespace System.Web.UI.MobileControls.Adapters.XhtmlAdapters
#endif
{

    /// <include file='doc\XhtmlBasicCommandAdapter.uex' path='docs/doc[@for="XhtmlCommandAdapter"]/*' />
    [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 XhtmlCommandAdapter : XhtmlControlAdapter {
        /// <include file='doc\XhtmlBasicCommandAdapter.uex' path='docs/doc[@for="XhtmlCommandAdapter.Control"]/*' />
        protected new Command Control {
            get {
                return base.Control as Command;
            }
        }

        public override bool LoadPostData(String key, NameValueCollection data, Object controlPrivateData, out bool dataChanged)
        {
            dataChanged = false;

            // HTML input tags of type image postback with the coordinates
            // of the click rather than the name of the control.
            String name = Control.UniqueID;
            String postX = data[name + ".x"];
            String postY = data[name + ".y"];

            if (postX != null && postY != null && postX.Length > 0 && postY.Length > 0)
            {
                // set dataChannged to cause RaisePostDataChangedEvent()
                dataChanged = true;
                return true;
            }

            // For other command control, defer to default logic in control.
            return base.LoadPostData(key, data, controlPrivateData, out dataChanged);
        }


        /// <include file='doc\XhtmlBasicCommandAdapter.uex' path='docs/doc[@for="XhtmlCommandAdapter.Render"]/*' />
        public override void Render(XhtmlMobileTextWriter writer) {
            // Note: Since XHTML Basic and MP do not include the script element, we ignore the
            // Format==Link attribute as in CHTML.
            ConditionalClearPendingBreak(writer);
            string imageUrl = Control.ImageUrl;
            if (imageUrl != null && 
                imageUrl.Length > 0 &&
                Device.SupportsImageSubmit) {
                RenderAsInputTypeImage(writer);
            }
            else {
                RenderAsInputTypeSubmit(writer);
            }
        }

        private void RenderAsInputTypeImage(XhtmlMobileTextWriter writer) {
            ConditionalEnterStyle(writer, Style);
            writer.WriteBeginTag("input");
            writer.WriteAttribute("type", "image");
            writer.WriteAttribute("name", Control.UniqueID);
            writer.WriteAttribute("src", Control.ResolveUrl(Control.ImageUrl), true);
            writer.WriteAttribute("alt", Control.Text, true);
            ConditionalRenderClassAttribute(writer);
            ConditionalRenderCustomAttribute(writer, XhtmlConstants.AccessKeyCustomAttribute);
            writer.Write("/>");
            // ConditionalSetPendingBreak should always be called *before* ConditionalExitStyle.
            // ConditionalExitStyle may render a block element and clear the pending break.
            ConditionalSetPendingBreakAfterInline(writer);
            ConditionalExitStyle(writer, Style);
        }

        private void RenderAsInputTypeSubmit(XhtmlMobileTextWriter writer){
            ConditionalEnterStyle(writer, Style);
            writer.WriteBeginTag("input");
            writer.WriteAttribute("type", "submit");
            writer.WriteAttribute("name", Control.UniqueID);
            writer.WriteAttribute("value", Control.Text, true);
            ConditionalRenderClassAttribute(writer);
            ConditionalRenderCustomAttribute(writer, XhtmlConstants.AccessKeyCustomAttribute);
            writer.Write("/>");
            // ConditionalSetPendingBreak should always be called *before* ConditionalExitStyle.
            // ConditionalExitStyle may render a block element and clear the pending break.
            ConditionalSetPendingBreakAfterInline(writer);
            ConditionalPopPhysicalCssClass(writer);
            ConditionalExitStyle(writer, Style);
        }
       
    }
}