protected override String GetDesignTimeNormalHtml() { DesignerTextWriter writer = new DesignerTextWriter(); _adRotator.Adapter.Render(writer); return writer.ToString(); }
/// <summary> /// <para> /// Gets the HTML to be used for the design time representation of the control runtime. /// </para> /// </summary> /// <returns> /// <para> /// The design time HTML. /// </para> /// </returns> protected override String GetDesignTimeNormalHtml() { DesignerTextWriter tw = new DesignerTextWriter(); _validationSummary.Adapter.Render(tw); return tw.ToString(); }
/// <summary> /// <para> /// Returns the design-time HTML of the <see cref='System.Web.UI.MobileControls.Calendar'/> /// mobile control /// </para> /// </summary> /// <returns> /// <para> /// The HTML of the control. /// </para> /// </returns> /// <seealso cref='System.Web.UI.MobileControls.Calendar'/> protected override String GetDesignTimeNormalHtml() { DesignerTextWriter tw = new DesignerTextWriter(); _calendar.Adapter.Render(tw); return tw.ToString(); }
/// <summary> /// Update scheme preview /// </summary> /// <internalonly/> private void UpdateSamplePreview() { if (_firstActivate) { return; } NativeMethods.IHTMLDocument2 tridentDocument = _samplePreview.GetDocument(); NativeMethods.IHTMLElement documentElement = tridentDocument.GetBody(); NativeMethods.IHTMLBodyElement bodyElement; bodyElement = (NativeMethods.IHTMLBodyElement) documentElement; bodyElement.SetScroll("no"); if (SelectedStyle == null) { documentElement.SetInnerHTML(String.Empty); tridentDocument.SetBgColor("buttonface"); return; } else { tridentDocument.SetBgColor(String.Empty); } bool cycle = ReferencesContainCycle(SelectedStyle); if (cycle) { documentElement.SetInnerHTML(String.Empty); return; } // apply the current Style to label ApplyStyle(); DesignerTextWriter tw = new DesignerTextWriter(); //ToolTip tw.AddAttribute("title", ((StyleNode)SelectedStyle).RuntimeStyle.Name); // ForeColor Color c = _previewStyle.ForeColor; if (!c.Equals(Color.Empty)) { tw.AddStyleAttribute("color", ColorTranslator.ToHtml(c)); } // BackColor c = _previewStyle.BackColor; if (!c.Equals(Color.Empty)) { tw.AddStyleAttribute("background-color", ColorTranslator.ToHtml(c)); } // Font Name String name = _previewStyle.Font.Name; if (name.Length > 0) { tw.AddStyleAttribute("font-family", name); } // Font Size switch (_previewStyle.Font.Size) { case FontSize.Large : tw.AddStyleAttribute("font-size", "Medium"); break; case FontSize.Small : tw.AddStyleAttribute("font-size", "X-Small"); break; default: tw.AddStyleAttribute("font-size", "Small"); break; } // Font Style if (_previewStyle.Font.Bold == BooleanOption.True) { tw.AddStyleAttribute("font-weight", "bold"); } if (_previewStyle.Font.Italic == BooleanOption.True) { tw.AddStyleAttribute("font-style", "italic"); } tw.RenderBeginTag("span"); tw.Write(SR.GetString(SR.StylesEditorDialog_PreviewText)); tw.RenderEndTag(); // and show it! String finalHTML = "<div align='center'><table width='100%' height='100%'><tr><td><p align='center'>" + tw.ToString() + "</p></td></tr></table></div>"; documentElement.SetInnerHTML(finalHTML); }
public override void Render(HtmlMobileTextWriter writer) { // Invalid text writers are not supported in this Adapter. if (!(writer is DesignerTextWriter)) { return; } Alignment alignment = (Alignment)Style[Style.AlignmentKey, true]; byte templateStatus; int maxWidth = DesignerAdapterUtil.GetMaxWidthToFit(Control, out templateStatus); String width = DesignerAdapterUtil.GetWidth(Control); if (Control.ImageUrl.Length == 0) { if (Control.Format == CommandFormat.Button) { if (maxWidth == 0 && templateStatus == DesignerAdapterUtil.CONTROL_IN_TEMPLATE_NONEDIT) { maxWidth = DesignerAdapterUtil.CONTROL_MAX_WIDTH_IN_TEMPLATE; } if (maxWidth == 0 && DesignerAdapterUtil.InMobileUserControl(Control)) { maxWidth = Constants.ControlMaxsizeAtToplevel; } if (maxWidth == 0) { // Render will be called a second time for which maxWidth != 0 return; } String additionalStyle = null; String controlText = Control.Text; String commandCaption; int requiredWidth = 0; DesignerTextWriter twTmp; twTmp = new DesignerTextWriter(); twTmp.WriteBeginTag("input"); twTmp.WriteStyleAttribute(Style, null); twTmp.WriteAttribute("type", "submit"); twTmp.Write(" value=\""); twTmp.WriteText(controlText, true); twTmp.Write("\"/>"); String htmlFragment = twTmp.ToString(); MSHTMLHostUtil.ApplyStyle(String.Empty, String.Empty, null); requiredWidth = MSHTMLHostUtil.GetHtmlFragmentWidth(htmlFragment); ((DesignerTextWriter)writer).EnterZeroFontSizeTag(); writer.WriteBeginTag("div"); if (requiredWidth + SAFETY_MARGIN > maxWidth) { if (templateStatus == DesignerAdapterUtil.CONTROL_IN_TEMPLATE_EDIT) { int tmpRequiredWidth, allowedLength; int captionLength = controlText.Length; twTmp = new DesignerTextWriter(); twTmp.WriteBeginTag("input"); twTmp.WriteStyleAttribute(Style, null); twTmp.WriteAttribute("type", "submit"); twTmp.WriteAttribute("value", "{0}"); twTmp.Write("/>"); htmlFragment = twTmp.ToString(); // At least 10 characters can fit into the caption of the command for (allowedLength = (captionLength < 10 ? captionLength : 10); allowedLength <= captionLength; allowedLength++) { tmpRequiredWidth = MSHTMLHostUtil.GetHtmlFragmentWidth(String.Format(CultureInfo.CurrentCulture, htmlFragment, HttpUtility.HtmlEncode(controlText.Substring(0, allowedLength)))); if (tmpRequiredWidth + SAFETY_MARGIN > maxWidth) { break; } } commandCaption = controlText.Substring(0, allowedLength - 1); } else { commandCaption = controlText; } } else { writer.WriteAttribute("style", "width:" + width); commandCaption = controlText; } if (alignment != Alignment.NotSet) { writer.WriteAttribute("align", Enum.GetName(typeof(Alignment), alignment)); } writer.Write(">"); writer.EnterLayout(Style); writer.WriteBeginTag("input"); if (requiredWidth + SAFETY_MARGIN > maxWidth) { additionalStyle = String.Format(CultureInfo.CurrentCulture, "width:{0};", width); } ((DesignerTextWriter)writer).WriteStyleAttribute(Style, additionalStyle); writer.WriteAttribute("type", "submit"); writer.Write(" value=\""); writer.WriteText(commandCaption, true); writer.Write("\"/>"); writer.ExitLayout(Style); } else { Wrapping wrapping = (Wrapping)Style[Style.WrappingKey, true]; bool wrap = (wrapping == Wrapping.Wrap || wrapping == Wrapping.NotSet); ((DesignerTextWriter)writer).EnterZeroFontSizeTag(); writer.WriteBeginTag("div"); if (!wrap) { if (templateStatus == DesignerAdapterUtil.CONTROL_IN_TEMPLATE_EDIT) { width = maxWidth.ToString(CultureInfo.InvariantCulture) + "px"; } writer.WriteAttribute("style", "overflow-x:hidden;width:" + width); } else { writer.WriteAttribute("style", "word-wrap:break-word;width:" + width); } if (alignment != Alignment.NotSet) { writer.WriteAttribute("align", Enum.GetName(typeof(Alignment), alignment)); } writer.Write(">"); writer.WriteBeginTag("a"); writer.WriteAttribute("href", "NavigationUrl"); writer.Write(">"); ((DesignerTextWriter)writer).WriteCssStyleText(Style, null, Control.Text, true); writer.WriteEndTag("a"); } writer.WriteEndTag("div"); ((DesignerTextWriter)writer).ExitZeroFontSizeTag(); } else { if (templateStatus == DesignerAdapterUtil.CONTROL_IN_TEMPLATE_EDIT) { width = maxWidth.ToString(CultureInfo.InvariantCulture) + "px"; } writer.WriteBeginTag("div"); if (alignment == Alignment.Center) { writer.WriteAttribute("align", "center"); } writer.WriteAttribute("style", "overflow-x:hidden;width:" + width); writer.Write(">"); writer.WriteBeginTag("img"); ((DesignerTextWriter)writer).WriteStyleAttribute(Style); writer.WriteAttribute("src", Control.ImageUrl, true); // center alignment not part of HTML for images. if (alignment == Alignment.Right || alignment == Alignment.Left) { writer.WriteAttribute("align", Enum.GetName(typeof(Alignment), alignment)); } writer.WriteAttribute("border", "0"); writer.Write(">"); writer.WriteEndTag("div"); } }
/// <summary> /// <para> /// Gets the HTML to be used for the design-time representation /// of the control. /// </para> /// </summary> /// <returns> /// <para> /// The design-time HTML. /// </para> /// </returns> protected override String GetDesignTimeNormalHtml() { const int numberOfStaticItems = 5; IEnumerable selectedDataSource = null; String oldDataTextField = null, oldDataValueField = null; bool dummyDataSource = false; DesignerTextWriter htmlWriter = new DesignerTextWriter(true); MobileListItemCollection items = _selectionList.Items; Debug.Assert(items != null, "Items is null in LisControl"); if (items.Count > 0) { _selectionList.Adapter.Render(htmlWriter); } else { MobileListItem[] oldItems = items.GetAll(); int sampleRows = numberOfStaticItems; // try designtime databinding. selectedDataSource = GetResolvedSelectedDataSource(); IEnumerable designTimeDataSource = GetDesignTimeDataSource( selectedDataSource, sampleRows, out dummyDataSource); // If dummy datasource is applied, change the data fields so that // dummy source will be rendered. if (dummyDataSource) { oldDataTextField = _selectionList.DataTextField; oldDataValueField = _selectionList.DataValueField; _selectionList.DataTextField = "Column0"; _selectionList.DataValueField = "Column1"; } try { _selectionList.DataSource = designTimeDataSource; _selectionList.DataBind(); _selectionList.Adapter.Render(htmlWriter); } finally { _selectionList.DataSource = null; _selectionList.Items.SetAll(oldItems); if (dummyDataSource) { _selectionList.DataTextField = oldDataTextField; _selectionList.DataValueField = oldDataValueField; } } } return htmlWriter.ToString(); }
/// <summary> /// <para> /// Returns the design-time HTML of the <see cref='System.Web.UI.MobileControls.Link'/> /// mobile control /// </para> /// </summary> /// <returns> /// <para> /// The HTML of the control. /// </para> /// </returns> /// <seealso cref='System.Web.UI.MobileControls.Link'/> protected override String GetDesignTimeNormalHtml() { Debug.Assert(null != _link.Text); DesignerTextWriter tw; Control[] children = null; String originalText = _link.Text; bool blankText = (originalText.Trim().Length == 0); bool hasControls = _link.HasControls(); if (blankText) { if (hasControls) { children = new Control[_link.Controls.Count]; _link.Controls.CopyTo(children, 0); } _link.Text = "[" + _link.ID + "]"; } try { tw = new DesignerTextWriter(); _link.Adapter.Render(tw); } finally { if (blankText) { _link.Text = originalText; if (hasControls) { foreach (Control c in children) { _link.Controls.Add(c); } } } } return tw.ToString(); }
public override void Render(HtmlMobileTextWriter writer) { // Invalid text writers are not supported in this Adapter. if (!(writer is DesignerTextWriter)) { return; } Alignment alignment = (Alignment)Style[Style.AlignmentKey, true]; byte templateStatus; int maxWidth = DesignerAdapterUtil.GetMaxWidthToFit(Control, out templateStatus); String width = DesignerAdapterUtil.GetWidth(Control); if (Control.ImageUrl.Length == 0) { if (Control.Format == CommandFormat.Button) { if (maxWidth == 0 && templateStatus == DesignerAdapterUtil.CONTROL_IN_TEMPLATE_NONEDIT) { maxWidth = DesignerAdapterUtil.CONTROL_MAX_WIDTH_IN_TEMPLATE; } if (maxWidth == 0 && DesignerAdapterUtil.InMobileUserControl(Control)) { maxWidth = Constants.ControlMaxsizeAtToplevel; } if (maxWidth == 0) { // Render will be called a second time for which maxWidth != 0 return; } String additionalStyle = null; String controlText = Control.Text; String commandCaption; int requiredWidth = 0; DesignerTextWriter twTmp; twTmp = new DesignerTextWriter(); twTmp.WriteBeginTag("input"); twTmp.WriteStyleAttribute(Style, null); twTmp.WriteAttribute("type", "submit"); twTmp.Write(" value=\""); twTmp.WriteText(controlText, true); twTmp.Write("\"/>"); String htmlFragment = twTmp.ToString(); MSHTMLHostUtil.ApplyStyle(String.Empty, String.Empty, null); requiredWidth = MSHTMLHostUtil.GetHtmlFragmentWidth(htmlFragment); ((DesignerTextWriter)writer).EnterZeroFontSizeTag(); writer.WriteBeginTag("div"); if (requiredWidth + SAFETY_MARGIN > maxWidth) { if (templateStatus == DesignerAdapterUtil.CONTROL_IN_TEMPLATE_EDIT) { int tmpRequiredWidth, allowedLength; int captionLength = controlText.Length; twTmp = new DesignerTextWriter(); twTmp.WriteBeginTag("input"); twTmp.WriteStyleAttribute(Style, null); twTmp.WriteAttribute("type", "submit"); twTmp.WriteAttribute("value", "{0}"); twTmp.Write("/>"); htmlFragment = twTmp.ToString(); // At least 10 characters can fit into the caption of the command for (allowedLength = (captionLength < 10 ? captionLength : 10); allowedLength <= captionLength; allowedLength++) { tmpRequiredWidth = MSHTMLHostUtil.GetHtmlFragmentWidth(String.Format(CultureInfo.CurrentCulture, htmlFragment, HttpUtility.HtmlEncode(controlText.Substring(0, allowedLength)))); if (tmpRequiredWidth + SAFETY_MARGIN > maxWidth) { break; } } commandCaption = controlText.Substring(0, allowedLength - 1); } else { commandCaption = controlText; } } else { writer.WriteAttribute("style", "width:" + width); commandCaption = controlText; } if (alignment != Alignment.NotSet) { writer.WriteAttribute("align", Enum.GetName(typeof(Alignment), alignment)); } writer.Write(">"); writer.EnterLayout(Style); writer.WriteBeginTag("input"); if (requiredWidth + SAFETY_MARGIN > maxWidth) { additionalStyle = String.Format(CultureInfo.CurrentCulture, "width:{0};", width); } ((DesignerTextWriter)writer).WriteStyleAttribute(Style, additionalStyle); writer.WriteAttribute("type", "submit"); writer.Write(" value=\""); writer.WriteText(commandCaption, true); writer.Write("\"/>"); writer.ExitLayout(Style); } else { Wrapping wrapping = (Wrapping) Style[Style.WrappingKey, true]; bool wrap = (wrapping == Wrapping.Wrap || wrapping == Wrapping.NotSet); ((DesignerTextWriter)writer).EnterZeroFontSizeTag(); writer.WriteBeginTag("div"); if (!wrap) { if (templateStatus == DesignerAdapterUtil.CONTROL_IN_TEMPLATE_EDIT) { width = maxWidth.ToString(CultureInfo.InvariantCulture) + "px"; } writer.WriteAttribute("style", "overflow-x:hidden;width:" + width); } else { writer.WriteAttribute("style", "word-wrap:break-word;width:" + width); } if (alignment != Alignment.NotSet) { writer.WriteAttribute("align", Enum.GetName(typeof(Alignment), alignment)); } writer.Write(">"); writer.WriteBeginTag("a"); writer.WriteAttribute("href", "NavigationUrl"); writer.Write(">"); ((DesignerTextWriter)writer).WriteCssStyleText(Style, null, Control.Text, true); writer.WriteEndTag("a"); } writer.WriteEndTag("div"); ((DesignerTextWriter)writer).ExitZeroFontSizeTag(); } else { if (templateStatus == DesignerAdapterUtil.CONTROL_IN_TEMPLATE_EDIT) { width = maxWidth.ToString(CultureInfo.InvariantCulture) + "px"; } writer.WriteBeginTag("div"); if (alignment == Alignment.Center) { writer.WriteAttribute("align", "center"); } writer.WriteAttribute("style", "overflow-x:hidden;width:" + width); writer.Write(">"); writer.WriteBeginTag("img"); ((DesignerTextWriter)writer).WriteStyleAttribute(Style); writer.WriteAttribute("src", Control.ImageUrl, true); // center alignment not part of HTML for images. if (alignment == Alignment.Right || alignment == Alignment.Left) { writer.WriteAttribute("align", Enum.GetName(typeof(Alignment), alignment)); } writer.WriteAttribute("border", "0"); writer.Write(">"); writer.WriteEndTag("div"); } }
/// <summary> /// <para> /// Gets the design time HTML of ValidatorBase controls. /// </para> /// </summary> /// <returns> /// <para> /// The design time /// HTML of the control. /// </para> /// </returns> protected override String GetDesignTimeNormalHtml() { Debug.Assert(_baseValidator.Text != null); String originalText = _baseValidator.ErrorMessage; ValidatorDisplay validatorDisplay = _baseValidator.Display; bool blankText = (validatorDisplay == ValidatorDisplay.None || (originalText.Trim().Length == 0 && _baseValidator.Text.Trim().Length == 0)); if (blankText) { _baseValidator.ErrorMessage = "[" + _baseValidator.ID + "]"; } DesignerTextWriter tw = new DesignerTextWriter(); _baseValidator.Adapter.Render(tw); if (blankText) { _baseValidator.ErrorMessage = originalText; } return tw.ToString(); }
/// <summary> /// <para> /// Gets the HTML to be used for the design-time representation /// of the control. /// </para> /// </summary> /// <returns> /// <para> /// The design-time HTML. /// </para> /// </returns> /// <remarks> /// <para> /// The rule for handing DesignTimeHTML is similar to System.Web.UI.DataList control, /// if list has a HTML templateset, then generate sample data from static data or /// dynamic data (if static data does not exist). Show the sample data with templates /// applied. /// </para> /// </remarks> protected override String GetDesignTimeNormalHtml() { IEnumerable selectedDataSource = null; String oldDataTextField = null, oldDataValueField = null; bool dummyDataSource = false; DesignerTextWriter writer = new DesignerTextWriter(true); // Apply the current device specific if (_list.DeviceSpecific != null) { _list.DeviceSpecific.SetDesignerChoice(CurrentChoice); } MobileListItemCollection items = _list.Items; Debug.Assert(items != null, "Items is null in LisControl"); MobileListItem[] oldItems = items.GetAll(); // Hack: If List is templated, use DataBind() to create child controls. // If it is empty, use dummy data source to create fake child controls. if (_list.IsTemplated || items.Count == 0) { int sampleRows = items.Count; // If List does not contain any items, use five dummy items. if (sampleRows == 0) { sampleRows = 5; } // try designtime databinding. selectedDataSource = GetResolvedSelectedDataSource(); // Recreate the dummy data table, if number of items changed. if (sampleRows != _numberItems) { OnDummyDataTableChanged(); // keep the new item count _numberItems = sampleRows; } IEnumerable designTimeDataSource = GetDesignTimeDataSource(selectedDataSource, sampleRows, out dummyDataSource); // If dummy datasource is applied, change the data fields so that // dummy source will be rendered. if (dummyDataSource) { Debug.Assert(_dummyDataTable != null && _dummyDataTable.Columns.Count > 1); oldDataTextField = _list.DataTextField; oldDataValueField = _list.DataValueField; _list.DataTextField = _dummyDataTable.Columns[0].ColumnName; _list.DataValueField = _dummyDataTable.Columns[1].ColumnName; } try { _list.DataSource = designTimeDataSource; _list.DataBind(); _list.Adapter.Render(writer); } finally { _list.DataSource = null; // restore the old items since databinding creates items from templates. _list.Items.SetAll(oldItems); // clear all child controls created by databinding. _list.Controls.Clear(); if (dummyDataSource) { _list.DataTextField = oldDataTextField; _list.DataValueField = oldDataValueField; } } } // Otherwise, list only contains static items, just render it directly. else { _list.Adapter.Render(writer); } return writer.ToString(); }
/// <summary> /// <para> /// Gets the HTML to be used for the design time representation /// of the control. /// </para> /// </summary> /// <returns> /// <para> /// The design time HTML. /// </para> /// </returns> protected override String GetDesignTimeNormalHtml() { int sampleRows = 5; bool dummyDataSource = false; String oldLabelField, oldTableFields; oldLabelField = _objectList.LabelField; oldTableFields = _objectList.TableFields; DesignerTextWriter htmlWriter = new DesignerTextWriter(true); if (_objectList.DeviceSpecific != null) { _objectList.DeviceSpecific.SetDesignerChoice(CurrentChoice); } IEnumerable designTimeDataSource = GetDesignTimeDataSource(sampleRows, out dummyDataSource); bool oldAutoGenerateFields = _objectList.AutoGenerateFields; if ((oldAutoGenerateFields == false) && (_objectList.Fields.Count == 0)) { // ensure that AutoGenerateFields is true when we don't have // any fields defined, so we see atleast something at design time. _objectList.AutoGenerateFields = true; } // Replace original labelfield with empty string to ensure dummy datasource will be rendered if (dummyDataSource) { _objectList.LabelField = String.Empty; _objectList.TableFields = String.Empty; } try { _objectList.DataSource = designTimeDataSource; _objectList.DataBind(); _objectList.Adapter.Render(htmlWriter); } finally { _objectList.DataSource = null; _objectList.AutoGenerateFields = oldAutoGenerateFields; if (dummyDataSource) { _objectList.LabelField = oldLabelField; _objectList.TableFields = oldTableFields; } // Remove controls created by databinding the DataSource _objectList.Controls.Clear(); _objectList.InvalidateDisplayFieldIndices(); } return htmlWriter.ToString(); }
/// <summary> /// <para> /// Gets the HTML to be used for the design time representation of the control runtime. /// </para> /// </summary> /// <returns> /// <para> /// The design time HTML. /// </para> /// </returns> protected override String GetDesignTimeNormalHtml() { String tempUrl = String.Empty; bool replaceUrl = (_image.ImageUrl.Length > 0); DesignerTextWriter writer = new DesignerTextWriter(); tempUrl = _image.ImageUrl; _image.ImageUrl = GetConvertedImageURI(_image.ImageUrl); _image.Adapter.Render(writer); _image.ImageUrl = tempUrl; return writer.ToString(); }
public override void Render(HtmlMobileTextWriter writer) { // Invalid text writers are not supported in this Adapter. if (!(writer is DesignerTextWriter)) { return; } byte templateStatus; bool pwd = Control.Password; int size = Control.Size; int fittingSize; int maxWidth = DesignerAdapterUtil.GetMaxWidthToFit(Control, out templateStatus); if (maxWidth == 0) { if (templateStatus == DesignerAdapterUtil.CONTROL_IN_TEMPLATE_NONEDIT) { maxWidth = DesignerAdapterUtil.CONTROL_MAX_WIDTH_IN_TEMPLATE; } else if (DesignerAdapterUtil.InMobileUserControl(Control)) { maxWidth = Constants.ControlMaxsizeAtToplevel; } } if (maxWidth == 0) { return; } bool restoreEmptyFontName = false; if ((String)Style[Style.FontNameKey, true] == String.Empty) { // MSHTMLHostUtil is using another font by default. // Setting the font name to the one that is actually // used by default for the desig-time rendering // assures that the requiredWidth returned by // MSHTMLHostUtil.GetHtmlFragmentWidth is accurate. Style[Style.FontNameKey] = "Arial"; restoreEmptyFontName = true; } int requiredWidth = 0; DesignerTextWriter tw; tw = new DesignerTextWriter(false); tw.EnterLayout(Style); String enterLayout = tw.ToString(); tw = new DesignerTextWriter(false); tw.ExitLayout(Style); String exitLayout = tw.ToString(); tw = new DesignerTextWriter(false); tw.WriteBeginTag("input"); tw.WriteStyleAttribute(Style, null); if (size > 0) { tw.WriteAttribute("size", "{0}"); } tw.Write("/>"); String htmlFragment = tw.ToString(); MSHTMLHostUtil.ApplyStyle(enterLayout, exitLayout, null); if (size < LARGESIZE_THRESHOLD) { requiredWidth = MSHTMLHostUtil.GetHtmlFragmentWidth(size > 0 ? String.Format(htmlFragment, size.ToString()) : htmlFragment); } if (requiredWidth + SAFETY_MARGIN > maxWidth || size >= LARGESIZE_THRESHOLD) { if (size == 0) { tw = new DesignerTextWriter(false); tw.WriteBeginTag("input"); tw.WriteStyleAttribute(Style, null); tw.WriteAttribute("size", "{0}"); tw.Write("/>"); htmlFragment = tw.ToString(); } fittingSize = 0; do { fittingSize++; requiredWidth = MSHTMLHostUtil.GetHtmlFragmentWidth(String.Format(htmlFragment, fittingSize.ToString())); }while (requiredWidth + SAFETY_MARGIN <= maxWidth); if (fittingSize > 1) { fittingSize--; } } else { fittingSize = size; } if (restoreEmptyFontName) { Style[Style.FontNameKey] = String.Empty; } Alignment alignment = (Alignment)Style[Style.AlignmentKey, true]; String width = DesignerAdapterUtil.GetWidth(Control); writer.Write("<div style='width:" + width); if (alignment != Alignment.NotSet) { writer.Write(";text-align:" + Enum.GetName(typeof(Alignment), alignment)); } writer.Write("'>"); ((DesignerTextWriter)writer).EnterZeroFontSizeTag(); writer.EnterLayout(Style); writer.WriteBeginTag("input"); ((DesignerTextWriter)writer).WriteStyleAttribute(Style, null); if (Control.Text != String.Empty) { writer.Write(" value=\""); writer.WriteText(Control.Text, true); writer.Write("\" "); } if (fittingSize > 0) { writer.WriteAttribute("size", fittingSize.ToString()); } if (pwd) { writer.WriteAttribute("type", "password"); } writer.Write("/>"); writer.ExitLayout(Style); ((DesignerTextWriter)writer).ExitZeroFontSizeTag(); writer.Write("</div>"); }
public override void Render(HtmlMobileTextWriter writer) { // Invalid text writers are not supported in this Adapter. if (!(writer is DesignerTextWriter)) { return; } byte templateStatus; bool pwd = Control.Password; int size = Control.Size; int fittingSize; int maxWidth = DesignerAdapterUtil.GetMaxWidthToFit(Control, out templateStatus); if (maxWidth == 0) { if (templateStatus == DesignerAdapterUtil.CONTROL_IN_TEMPLATE_NONEDIT) { maxWidth = DesignerAdapterUtil.CONTROL_MAX_WIDTH_IN_TEMPLATE; } else if (DesignerAdapterUtil.InMobileUserControl(Control)) { maxWidth = Constants.ControlMaxsizeAtToplevel; } } if (maxWidth == 0) { return; } bool restoreEmptyFontName = false; if (String.IsNullOrEmpty((String) Style[Style.FontNameKey, true])) { // MSHTMLHostUtil is using another font by default. // Setting the font name to the one that is actually // used by default for the desig-time rendering // assures that the requiredWidth returned by // MSHTMLHostUtil.GetHtmlFragmentWidth is accurate. Style[Style.FontNameKey] = "Arial"; restoreEmptyFontName = true; } int requiredWidth = 0; DesignerTextWriter tw; tw = new DesignerTextWriter(false); tw.EnterLayout(Style); String enterLayout = tw.ToString(); tw = new DesignerTextWriter(false); tw.ExitLayout(Style); String exitLayout = tw.ToString(); tw = new DesignerTextWriter(false); tw.WriteBeginTag("input"); tw.WriteStyleAttribute(Style, null); if (size > 0) { tw.WriteAttribute("size", "{0}"); } tw.Write("/>"); String htmlFragment = tw.ToString(); MSHTMLHostUtil.ApplyStyle(enterLayout, exitLayout, null); if (size < LARGESIZE_THRESHOLD) { requiredWidth = MSHTMLHostUtil.GetHtmlFragmentWidth(size > 0 ? String.Format(CultureInfo.InvariantCulture, htmlFragment, size) : htmlFragment); } if (requiredWidth + SAFETY_MARGIN > maxWidth || size >= LARGESIZE_THRESHOLD) { if (size == 0) { tw = new DesignerTextWriter(false); tw.WriteBeginTag("input"); tw.WriteStyleAttribute(Style, null); tw.WriteAttribute("size", "{0}"); tw.Write("/>"); htmlFragment = tw.ToString(); } fittingSize = 0; do { fittingSize++; requiredWidth = MSHTMLHostUtil.GetHtmlFragmentWidth(String.Format(CultureInfo.InvariantCulture, htmlFragment, fittingSize)); } while (requiredWidth + SAFETY_MARGIN <= maxWidth); if (fittingSize > 1) { fittingSize--; } } else { fittingSize = size; } if (restoreEmptyFontName) { Style[Style.FontNameKey] = String.Empty; } Alignment alignment = (Alignment) Style[Style.AlignmentKey, true]; String width = DesignerAdapterUtil.GetWidth(Control); writer.Write("<div style='width:" + width); if (alignment != Alignment.NotSet) { writer.Write(";text-align:" + Enum.GetName(typeof(Alignment), alignment)); } writer.Write("'>"); ((DesignerTextWriter)writer).EnterZeroFontSizeTag(); writer.EnterLayout(Style); writer.WriteBeginTag("input"); ((DesignerTextWriter)writer).WriteStyleAttribute(Style, null); if (!String.IsNullOrEmpty(Control.Text)) { writer.Write(" value=\""); writer.WriteText(Control.Text, true); writer.Write("\" "); } if (fittingSize > 0) { writer.WriteAttribute("size", fittingSize.ToString(CultureInfo.InvariantCulture)); } if (pwd) { writer.WriteAttribute("type", "password"); } writer.Write("/>"); writer.ExitLayout(Style); ((DesignerTextWriter)writer).ExitZeroFontSizeTag(); writer.Write("</div>"); }