/// <include file='doc\WmlObjectListAdapter.uex' path='docs/doc[@for="WmlObjectListAdapter.RenderItemDetails"]/*' /> protected virtual void RenderItemDetails(WmlMobileTextWriter writer, ObjectListItem item) { String backCommandText = Control.BackCommandText.Length == 0 ? GetDefaultLabel(BackLabel) : Control.BackCommandText; String softkeyLabel = backCommandText.Length <= Device.MaximumSoftkeyLabelLength ? backCommandText : null; Style labelStyle = Control.LabelStyle; writer.EnterStyle(labelStyle); writer.RenderText(item[Control.LabelFieldIndex], true); writer.ExitStyle(labelStyle); writer.EnterStyle(Style); IObjectListFieldCollection fields = Control.AllFields; int fieldIndex = 0; foreach (ObjectListField field in fields) { if (field.Visible) { String displayText = String.Format(CultureInfo.InvariantCulture, "{0}: {1}", field.Title, item[fieldIndex]); writer.RenderText(displayText, true); } fieldIndex++; } RenderPostBackEvent(writer, _backToList, softkeyLabel, true, backCommandText, true); writer.ExitStyle(Style); }
/// <include file='doc\WmlObjectListAdapter.uex' path='docs/doc[@for="WmlObjectListAdapter.RenderItemMenu"]/*' /> protected virtual void RenderItemMenu(WmlMobileTextWriter writer, ObjectListItem item) { bool requiresDetails = HasItemDetails(); String detailsCommandText = Control.DetailsCommandText.Length == 0 ? SR.GetString(SR.WmlObjectListAdapterDetails) : Control.DetailsCommandText; String softkeyLabel = detailsCommandText.Length <= Device.MaximumSoftkeyLabelLength ? detailsCommandText : null; Style commandStyle = Control.CommandStyle; if (commandStyle.Alignment == Alignment.NotSet) { commandStyle.Alignment = Alignment.Left; } writer.EnterStyle(commandStyle); if (requiresDetails) { RenderPostBackEvent(writer, _showDetails, softkeyLabel, true, detailsCommandText, true, WmlPostFieldType.Raw); } ObjectListCommandCollection commands = Control.Commands; foreach (ObjectListCommand command in commands) { RenderPostBackEvent(writer, command.Name, GetDefaultLabel(GoLabel), false, command.Text, true, WmlPostFieldType.Raw); } writer.ExitStyle(commandStyle); }
protected override void RenderItemDetails(WmlMobileTextWriter writer, ObjectListItem item) { string str1 = (Control.BackCommandText != String.Empty) ? Control.BackCommandText : base.GetDefaultLabel(ControlAdapter.BackLabel); string str2 = (str1.Length > base.Device.MaximumSoftkeyLabelLength) ? null : str1; Style style = Control.LabelStyle; writer.EnterStyle(style); writer.RenderText(item[Control.LabelFieldIndex], true); writer.ExitStyle(style); writer.EnterStyle(base.Style); IObjectListFieldCollection iObjectListFieldCollection = Control.AllFields; int i = 0; IEnumerator iEnumerator = iObjectListFieldCollection.GetEnumerator(); while (iEnumerator.MoveNext()) { ObjectListField objectListField = (ObjectListField)iEnumerator.Current; if (objectListField.Visible) { if (objectListField.Name == "CALL") { writer.RenderText(String.Format("{0}: {1}", objectListField.Title, WmlcheckPhonenumber(item[i])), true, false); } else if (objectListField.Name == "MAIL") { writer.RenderText(String.Format("{0}: {1}", objectListField.Title, WmlMail(item[i])), true, false); } else { writer.RenderText(String.Format("{0}: {1}", objectListField.Title, item[i]), true); } } i++; } base.RenderPostBackEvent(writer, "__back", str2, true, str1, true); writer.ExitStyle(base.Style); }
/// <include file='doc\WmlListAdapter.uex' path='docs/doc[@for="WmlListAdapter.Render"]/*' /> public override void Render(WmlMobileTextWriter writer) { if (Control.HasControls()) { writer.BeginCustomMarkup(); RenderChildren(writer); writer.EndCustomMarkup(); return; } int pageStart = Control.FirstVisibleItemIndex; int pageSize = Control.VisibleItemCount; if (pageSize == 0) { return; } MobileListItemCollection items = Control.Items; if (items.Count == 0) { return; } bool itemsAsLinks = Control.ItemsAsLinks; bool hasCmdHandler = Control.HasItemCommandHandler; writer.EnterStyle(Style); for (int i = 0; i < pageSize; i++) { MobileListItem item = items[pageStart + i]; if (itemsAsLinks) { RenderLink(writer, item.Value, null, false, false, item.Text, true); } else if (hasCmdHandler) { RenderPostBackEvent(writer, item.Index.ToString(CultureInfo.InvariantCulture), null, true, item.Text, true); } else { writer.RenderText(item.Text, true); } } writer.ExitStyle(Style); }
/// <include file='doc\WmlLinkAdapter.uex' path='docs/doc[@for="WmlLinkAdapter.Render"]/*' /> public override void Render(WmlMobileTextWriter writer) { String navigateUrl = Control.NavigateUrl; String text = (String.IsNullOrEmpty(Control.Text)) ? navigateUrl : Control.Text; bool breakAfter = Control.BreakAfter && !Device.RendersBreaksAfterWmlAnchor; String softkeyLabel = Control.SoftkeyLabel; bool implicitSoftkeyLabel = false; if (softkeyLabel.Length == 0) { implicitSoftkeyLabel = true; softkeyLabel = Control.Text; } writer.EnterStyle(Style); RenderLink(writer, navigateUrl, softkeyLabel, implicitSoftkeyLabel, true, text, breakAfter); writer.ExitStyle(Style); }
/// <include file='doc\WmlValidatorAdapter.uex' path='docs/doc[@for="WmlValidatorAdapter.Render"]/*' /> public override void Render(WmlMobileTextWriter writer) { writer.EnterStyle(Style); if (!Control.IsValid && Control.Display != ValidatorDisplay.None) { String text = Control.Text; if (String.IsNullOrEmpty(text)) { text = Control.ErrorMessage; } if (!String.IsNullOrEmpty(text)) { writer.RenderText(text, Control.BreakAfter); } } writer.ExitStyle(Style); }
public override void Render(WmlMobileTextWriter writer) { String targetUrl = Control.NavigateUrl; String text = (Control.Text == String.Empty) ? targetUrl : Control.Text; bool breakAfter = Control.BreakAfter && !Device.RendersBreaksAfterWmlAnchor; String softkeyLabel = Control.SoftkeyLabel; bool implicitSoftkeyLabel = false; if (softkeyLabel.Length == 0) { implicitSoftkeyLabel = true; softkeyLabel = Control.Text; } writer.EnterStyle(Style); RenderLink(writer, targetUrl, softkeyLabel, implicitSoftkeyLabel, true, text, breakAfter); writer.ExitStyle(Style); }
public override void Render(WmlMobileTextWriter writer) { String[] errorMessages = null; if (Control.Visible) { errorMessages = Control.GetErrorMessages(); } writer.EnterStyle(Style); if (errorMessages != null) { if (Control.HeaderText.Length > 0) { writer.RenderText(Control.HeaderText, true); } ArrayList arr = new ArrayList(); foreach (String errorMessage in errorMessages) { Debug.Assert(errorMessage != null && errorMessage.Length > 0, "Bad Error Messages"); arr.Add(errorMessage); } _list.DataSource = arr; _list.DataBind(); if (String.Compare(Control.FormToValidate, Control.Form.UniqueID, true) != 0) { _link.NavigateUrl = Constants.FormIDPrefix + Control.FormToValidate; _link.Text = Control.BackLabel == String.Empty? GetDefaultLabel(BackLabel) : Control.BackLabel; } else { _link.Visible = false; } // Render the child controls to display error message list and a // link for going back to the Form that is having error RenderChildren(writer); } writer.ExitStyle(Style); }
private void RenderElement(WmlMobileTextWriter writer, int index, int begin, int end) { TextViewElement element = Control.GetElement(index); if (end == -1) { end = element.Text.Length; } String text = element.Text; if (begin > 0 || end < text.Length) { text = text.Substring(begin, end - begin); } BooleanOption previousBold = Style.Font.Bold; BooleanOption previousItalic = Style.Font.Italic; if (element.IsBold) { Style.Font.Bold = BooleanOption.True; } if (element.IsItalic) { Style.Font.Italic = BooleanOption.True; } writer.EnterStyle(Style); if (element.Url != null) { RenderLink(writer, element.Url, null, true, true, text, element.BreakAfter); } else { writer.RenderText(text, element.BreakAfter); } writer.ExitStyle(Style); Style.Font.Bold = previousBold; Style.Font.Italic = previousItalic; }
protected virtual void RenderPager(WmlMobileTextWriter writer) { PagerStyle pagerStyle = Control.PagerStyle; int pageCount = Control.PageCount; if (pageCount <= 1) { return; } int page = Control.CurrentPage; writer.EnterStyle(pagerStyle); if (page < pageCount) { String nextPageText = pagerStyle.GetNextPageText(page); RenderPostBackEvent(writer, (page + 1).ToString(), writer.IsValidSoftkeyLabel(nextPageText) ? nextPageText : GetDefaultLabel(NextLabel), true, nextPageText, true); } if (page > 1) { String prevPageText = pagerStyle.GetPreviousPageText(page); RenderPostBackEvent(writer, (page - 1).ToString(), writer.IsValidSoftkeyLabel(prevPageText) ? prevPageText : GetDefaultLabel(PreviousLabel), true, prevPageText, true); } writer.ExitStyle(pagerStyle); }
/// <include file='doc\WmlValidationSummaryAdapter.uex' path='docs/doc[@for="WmlValidationSummaryAdapter.Render"]/*' /> public override void Render(WmlMobileTextWriter writer) { String[] errorMessages = null; if (Control.Visible) { errorMessages = Control.GetErrorMessages(); } writer.EnterStyle(Style); if (errorMessages != null) { if (Control.HeaderText.Length > 0) { writer.RenderText(Control.HeaderText, true); } ArrayList arr = new ArrayList(); foreach (String errorMessage in errorMessages) { Debug.Assert(errorMessage != null && errorMessage.Length > 0, "Bad Error Messages"); arr.Add(errorMessage); } _list.DataSource = arr; _list.DataBind(); if (String.Compare(Control.FormToValidate, Control.Form.UniqueID, StringComparison.OrdinalIgnoreCase) != 0) { _link.NavigateUrl = Constants.FormIDPrefix + Control.FormToValidate; _link.Text = Control.BackLabel.Length == 0 ? GetDefaultLabel(BackLabel) : Control.BackLabel; } else { _link.Visible = false; } // Render the child controls to display error message list and a // link for going back to the Form that is having error RenderChildren(writer); } writer.ExitStyle(Style); }
/// <include file='doc\WmlListAdapter.uex' path='docs/doc[@for="WmlListAdapter.Render"]/*' /> public override void Render(WmlMobileTextWriter writer) { if(Control.HasControls()) { writer.BeginCustomMarkup(); RenderChildren(writer); writer.EndCustomMarkup(); return; } int pageStart = Control.FirstVisibleItemIndex; int pageSize = Control.VisibleItemCount; if (pageSize == 0) { return; } MobileListItemCollection items = Control.Items; if (items.Count == 0) { return; } bool itemsAsLinks = Control.ItemsAsLinks; bool hasCmdHandler = Control.HasItemCommandHandler; writer.EnterStyle(Style); for (int i = 0; i < pageSize; i++) { MobileListItem item = items[pageStart + i]; if (itemsAsLinks) { RenderLink(writer, item.Value, null, false, false, item.Text, true); } else if (hasCmdHandler) { RenderPostBackEvent(writer, item.Index.ToString(CultureInfo.InvariantCulture), null, true, item.Text, true); } else { writer.RenderText(item.Text, true); } } writer.ExitStyle(Style); }
/// <include file='doc\WmlPhoneCallAdapter.uex' path='docs/doc[@for="WmlPhoneCallAdapter.Render"]/*' /> public override void Render(WmlMobileTextWriter writer) { String text, url, phoneNumber; String controlText = Control.Text; // Always strip off optional separators for PhoneNumber before it // is added in markup. String originalNumber = Control.PhoneNumber; char[] plainNumber = new char[originalNumber.Length]; // allocate enough buffer size // Loop to strip out optional separators int sizeOfPlainNumber = 0; foreach (char ch in originalNumber) { if ((ch >= '0' && ch <= '9') || ch == '+') { plainNumber[sizeOfPlainNumber] = ch; sizeOfPlainNumber++; } } // Assign the number string with the right size phoneNumber = new String(plainNumber, 0, sizeOfPlainNumber); // Construct text and url based on device capabilities // if (!Device.CanInitiateVoiceCall) { text = String.Format(CultureInfo.InvariantCulture, Control.AlternateFormat, controlText, originalNumber); url = Control.AlternateUrl; } else { // Some WML browsers require the phone number // showing as text so it can be selected. If it is not // formatted in the text yet, append it to the end of the // text. if(Device.RequiresPhoneNumbersAsPlainText) { text = controlText + " " + phoneNumber; url = String.Empty; } else { text = (controlText == null || controlText.Length > 0) ? controlText : originalNumber; url = "wtai://wp/mc;" + phoneNumber; } } // Write out plain text or corresponding link/softkey command // accordingly // writer.EnterStyle(Style); if (url.Length == 0) { writer.RenderText(text, Control.BreakAfter); } else { String softkeyLabel = Control.SoftkeyLabel; bool implicitSoftkeyLabel = false; if (softkeyLabel.Length == 0) { implicitSoftkeyLabel = true; softkeyLabel = text; } if (!writer.IsValidSoftkeyLabel(softkeyLabel)) { if (!implicitSoftkeyLabel && softkeyLabel.Length > 0) { softkeyLabel = softkeyLabel.Substring(0, Device.MaximumSoftkeyLabelLength); } else { implicitSoftkeyLabel = true; softkeyLabel = GetDefaultLabel(CallLabel); } } RenderBeginLink(writer, url, softkeyLabel, implicitSoftkeyLabel, true); writer.RenderText(text); RenderEndLink(writer, url, Control.BreakAfter); } writer.ExitStyle(Style); }
public override void Render(WmlMobileTextWriter writer) { ArrayList arr; DateTime tempDate; DateTimeFormatInfo currentDateTimeInfo = DateTimeFormatInfo.CurrentInfo; String abbreviatedMonthDayPattern = AbbreviateMonthPattern(currentDateTimeInfo.MonthDayPattern); _threadCalendar = currentDateTimeInfo.Calendar; // RendersWmlSelectsAsMenuCards is true means the list control will be // rendered as select/option tags, where the break tag before // them will become an extra line which doesn't like good. bool addBreakBeforeListControl = Device.RendersWmlSelectsAsMenuCards; writer.EnterStyle(Style); Debug.Assert(NotSecondaryUI == NotSecondaryUIInit); switch (SecondaryUIMode) { case FirstPrompt: String promptText = Control.CalendarEntryText; if (promptText == String.Empty) { promptText = SR.GetString(SR.CalendarAdapterFirstPrompt); } // Link to input option selection screen RenderPostBackEvent(writer, OptionPrompt.ToString(), GetDefaultLabel(GoLabel), true, promptText, true); break; // Render the first secondary page that provides differnt // options to select a date. case OptionPrompt: writer.RenderText(SR.GetString(SR.CalendarAdapterOptionPrompt), !addBreakBeforeListControl); arr = new ArrayList(); // Option to select the default date arr.Add(Control.VisibleDate.ToString( currentDateTimeInfo.ShortDatePattern)); // Option to another page that can enter a date by typing arr.Add(SR.GetString(SR.CalendarAdapterOptionType)); // Options to a set of pages for selecting a date, a week // or a month by picking month/year, week and day // accordingly. Available options are determined by // SelectionMode. arr.Add(SR.GetString(SR.CalendarAdapterOptionChooseDate)); if (Control.SelectionMode == CalendarSelectionMode.DayWeek || Control.SelectionMode == CalendarSelectionMode.DayWeekMonth) { arr.Add(SR.GetString(SR.CalendarAdapterOptionChooseWeek)); if (Control.SelectionMode == CalendarSelectionMode.DayWeekMonth) { arr.Add(SR.GetString(SR.CalendarAdapterOptionChooseMonth)); } } DataBindAndRender(writer, _optionList, arr); break; // Render a title and textbox to capture a date entered by user case TypeDate: if (_textBoxErrorMessage != null) { writer.RenderText(_textBoxErrorMessage, true); } if (_selectList.Visible) { writer.RenderText(SR.GetString(SR.CalendarAdapterOptionEra), true); _selectList.RenderControl(writer); } String numericDateFormat = GetNumericDateFormat(); writer.RenderText(SR.GetString(SR.CalendarAdapterOptionType) + ":", true); writer.RenderText("("); writer.RenderText(numericDateFormat.ToUpper()); writer.RenderText(")"); if (!_selectList.Visible) { writer.RenderText(GetEra(Control.VisibleDate)); } writer.RenderText(String.Empty, true); _textBox.Numeric = true; _textBox.Size = numericDateFormat.Length; _textBox.MaxLength = numericDateFormat.Length; _textBox.Text = Control.VisibleDate.ToString(numericDateFormat); _textBox.Visible = true; _textBox.RenderControl(writer); String okLabel = GetDefaultLabel(OKLabel); // accept softkey for sending the textbox value back to the server RenderPostBackEvent(writer, TypeDateDone.ToString(), okLabel, true, okLabel, true, WmlPostFieldType.Raw); break; // Render a paged list for choosing a month case ChooseMonth: { String displayText = String.Format("{0}:", SR.GetString(SR.CalendarAdapterOptionChooseMonth)); writer.RenderText(displayText, !addBreakBeforeListControl); tempDate = Control.VisibleDate; String abbreviatedYearMonthPattern = AbbreviateMonthPattern(currentDateTimeInfo.YearMonthPattern); // This is to be consistent with ASP.NET Calendar control // on handling YearMonthPattern: // Some cultures have a comma in their YearMonthPattern, // which does not look right in a calendar. Here we // strip the comma off. int indexComma = abbreviatedYearMonthPattern.IndexOf(','); if (indexComma >= 0) { abbreviatedYearMonthPattern = abbreviatedYearMonthPattern.Remove(indexComma, 1); } arr = new ArrayList(); for (int i = 0; i < _monthsToDisplay; i++) { arr.Add(tempDate.ToString(abbreviatedYearMonthPattern)); tempDate = _threadCalendar.AddMonths(tempDate, 1); } arr.Add(GetDefaultLabel(NextLabel)); arr.Add(GetDefaultLabel(PreviousLabel)); DataBindAndRender(writer, _monthList, arr); break; } // Based on the month selected in case ChooseMonth above, render a list of // availabe weeks of the month. case ChooseWeek: { String monthFormat = (GetNumericDateFormat()[0] == 'y') ? "yyyy/M" : "M/yyyy"; String displayText = String.Format("{0} ({1}):", SR.GetString(SR.CalendarAdapterOptionChooseWeek), Control.VisibleDate.ToString(monthFormat)); writer.RenderText(displayText, !addBreakBeforeListControl); // List weeks of days of the selected month. May include // days from the previous and the next month to fill out // all six week choices. This is consistent with the // ASP.NET Calendar control. // Note that the event handling code of this list control // should be implemented according to the index content // generated here. tempDate = FirstCalendarDay(Control.VisibleDate); arr = new ArrayList(); String weekDisplay; for (int i = 0; i < 6; i++) { weekDisplay = tempDate.ToString(abbreviatedMonthDayPattern); weekDisplay += DaySeparator; tempDate = _threadCalendar.AddDays(tempDate, 6); weekDisplay += tempDate.ToString(abbreviatedMonthDayPattern); arr.Add(weekDisplay); tempDate = _threadCalendar.AddDays(tempDate, 1); } DataBindAndRender(writer, _weekList, arr); break; } // Based on the month and week selected in case ChooseMonth and ChooseWeek above, // render a list of the dates in the week. case ChooseDay: { String displayText = String.Format("{0}:", SR.GetString(SR.CalendarAdapterOptionChooseDate)); writer.RenderText(displayText, !addBreakBeforeListControl); tempDate = Control.VisibleDate; arr = new ArrayList(); String date; String dayName; StringBuilder dayDisplay = new StringBuilder(); bool dayNameFirst = (GetNumericDateFormat()[0] != 'y'); for (int i = 0; i < 7; i++) { date = tempDate.ToString(abbreviatedMonthDayPattern); if (Control.ShowDayHeader) { // Use the short format for displaying day name dayName = GetAbbreviatedDayName(tempDate); dayDisplay.Length = 0; if (dayNameFirst) { dayDisplay.Append(dayName); dayDisplay.Append(Space); dayDisplay.Append(date); } else { dayDisplay.Append(date); dayDisplay.Append(Space); dayDisplay.Append(dayName); } arr.Add(dayDisplay.ToString()); } else { arr.Add(date); } tempDate = _threadCalendar.AddDays(tempDate, 1); } DataBindAndRender(writer, _dayList, arr); break; } default: Debug.Assert(false, "Unexpected Secondary UI Mode"); break; } writer.ExitStyle(Style); }
/// <include file='doc\WmlCommandAdapter.uex' path='docs/doc[@for="WmlCommandAdapter.Render"]/*' /> public override void Render(WmlMobileTextWriter writer) { writer.EnterStyle(Style); RenderSubmitEvent(writer, Control.SoftkeyLabel, Control.Text, Control.BreakAfter); writer.ExitStyle(Style); }
public override void Render(WmlMobileTextWriter writer) { String text, url, phoneNumber; String controlText = Control.Text; // Always strip off optional separators for PhoneNumber before it // is added in markup. String originalNumber = Control.PhoneNumber; char[] plainNumber = new char[originalNumber.Length]; // allocate enough buffer size // Loop to strip out optional separators int sizeOfPlainNumber = 0; foreach (char ch in originalNumber) { if ((ch >= '0' && ch <= '9') || ch == '+') { plainNumber[sizeOfPlainNumber] = ch; sizeOfPlainNumber++; } } // Assign the number string with the right size phoneNumber = new String(plainNumber, 0, sizeOfPlainNumber); // Construct text and url based on device capabilities // if (!Device.CanInitiateVoiceCall) { text = String.Format(Control.AlternateFormat, controlText, originalNumber); url = Control.AlternateUrl; } else { // Some WML browsers require the phone number // showing as text so it can be selected. If it is not // formatted in the text yet, append it to the end of the // text. if (Device.RequiresPhoneNumbersAsPlainText) { text = controlText + " " + phoneNumber; url = String.Empty; } else { text = (controlText != String.Empty) ? controlText : originalNumber; url = "wtai://wp/mc;" + phoneNumber; } } // Write out plain text or corresponding link/softkey command // accordingly // writer.EnterStyle(Style); if (url.Length == 0) { writer.RenderText(text, Control.BreakAfter); } else { String softkeyLabel = Control.SoftkeyLabel; bool implicitSoftkeyLabel = false; if (softkeyLabel.Length == 0) { implicitSoftkeyLabel = true; softkeyLabel = text; } if (!writer.IsValidSoftkeyLabel(softkeyLabel)) { if (!implicitSoftkeyLabel && softkeyLabel.Length > 0) { softkeyLabel = softkeyLabel.Substring(0, Device.MaximumSoftkeyLabelLength); } else { implicitSoftkeyLabel = true; softkeyLabel = GetDefaultLabel(CallLabel); } } RenderBeginLink(writer, url, softkeyLabel, implicitSoftkeyLabel, true); writer.RenderText(text); RenderEndLink(writer, url, Control.BreakAfter); } writer.ExitStyle(Style); }
public override void Render(WmlMobileTextWriter writer) { writer.EnterStyle(Style); writer.RenderText(Control.Text, Control.BreakAfter); writer.ExitStyle(Style); }
/// <include file='doc\WmlLabelAdapter.uex' path='docs/doc[@for="WmlLabelAdapter.Render"]/*' /> public override void Render(WmlMobileTextWriter writer) { writer.EnterStyle(Style); writer.RenderText(Control.Text, Control.BreakAfter); writer.ExitStyle(Style); }