You've already forked linux-packaging-mono
							
							
		
			
				
	
	
		
			105 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			105 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| //------------------------------------------------------------------------------
 | |
| // <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);
 | |
|         }
 | |
|        
 | |
|     }
 | |
| }
 |